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.).