TForm von Thread öffnen lassen



  • Hi,

    ich versuche gerade ein TForm von einem Thread starten zu lassen, da die Form nicht modal angezeigt werden soll. D.h. der Thread soll die Form initialisieren, auf die Eingaben warten, auslesen und dann auch schliesslich die Form wieder löschen.

    Die Form besteht aus einem TMemo und zwei TButton. Die Form wird geöffnet, das Memofeld ist auch noch zu sehen, aber die Buttons nicht. Und dann stürzt die Form ab. Das ganze mache so:

    unsigned int WINAPI InsertComThread (LPVOID ThreadParam)
    {
      //Form initialisieren
      TMedKInfo *MedKInfo = new TMedKInfo (Application);
      HANDLE hEvent_InsertCom = CreateEvent (NULL, false, false,     
                                             Event_InsertCom_Name);
    
      SYSTEMTIME STime;
      char TimeStrg[60];
    
      GetSystemTime (&STime);
    
      //Darstellung der Zeit in der Titelleiste der Form
      sprintf (TimeStrg, "Kommentar -> %dh:%dmin:%dsek - %d.%d.%d",
        STime.wHour+1, STime.wMinute, STime.wSecond,
        STime.wDay, STime.wMonth, STime.wYear);
      MedKInfo->Caption = TimeStrg;
    
      //Zeitstempel in der DB
      int Error = InsertComment (NULL, TIME);
    
      MedKInfo->Show();
    
      //Auf Eingabe warten
      while ((WaitForSingleObject (hEvent_InsertCom, 100)) == WAIT_TIMEOUT)
        continue;
      //Eingabe auslesen
      Error = InsertComment (MedKInfo->KInfoEdit->Text.c_str(), KINFO);
      if (Error != DB_NO_ERROR)
        TDMedError ("Fehler beim Speicher der Kurzinformation!", 1);
    
      //Form schliessen und löschen
      MedKInfo->Close();
      delete MedKInfo;
    
      CloseHandle (hEvent_InsertCom);
    
      return 0;
    }
    

    Kann mit jemand helfen? 😕



  • hallo,

    du arbeitest doch mit dem bcb, oder? warum verwendest du nicht die klasse TThread? ich weiss das ist dir jetzt keine hilfe, aber normalerweise ist
    es doch blödsinn wenn es keinen triftigen grund gibt, alles von hand (sprich
    API) zu machen, wenn schlaue (mehr oder weniger) borländer bereits eine
    benutzerfreundliche klasse namens TThread entwickelt haben, die sich schon
    tausendfach bewährt hat...

    mfg
    murph



  • Gute Frage. Wahrscheinlich, weil ich mich als erstes mit dieser Art von Threaderstellung befasst habe. Ausserdem bin ich ein bisschen skeptisch, wenn man vorgefertigte Sachen nimmt (Von wegen optimale Ressourcenverwendung etc.).


Anmelden zum Antworten