TThread



  • Reine Neugierde meinerseits: Was für ein Problem war das?

    Btw: Wie greifst du auf die Kompos zu? Mittels Synchronize?

    -junix



  • Naja das Problem war eigentlich kein "richtiges" Problem. Ich habe nur in meiner StatusBar versucht, den 3. Panel wieder zu entfernen und die Position der ProgressBar in der StatusBar wieder zu ändern...

    Also ehrlich gesagt, glaube ich nicht, dass es daran gelegen hat^^

    Hmm Synchronize habe ich gar nie benutzt, also im Thread selber habe ich ganz normal auf die Komponenten zugegriffen wie sonst auch immer.

    z.B.

    Form->StatusBar->Panels->Items[0]->Width = 300;
    

    EDIT:

    dafür habe ich jetzt ein neues Problem 🙄

    Beim "OnTerminate"-Ereignis in meinem Thread rufe ich eine Funktion auf. In dieser Funktion wird irgendwann mal eine MessageBox aufgerufen. Aber die MessageBox erscheint gar nie, ich höre zwar den "Beep"-Ton, welcher erklingt wenn eine MessageBox erscheint, aber die MessageBox sehe ich nicht und mein Programm reagiert dann auch nicht mehr, weil es wohl wartet bis ich dort in der MessageBox (die ich nicht sehe) auf den OK-Button klicke.

    Also wenn ich die MessageBox aus dem Code entferne funktioniert alles bestens.



  • Gazmo: was steht im Codeskellett, wenn du einen neuen Thread mit dem Thread-Experten erstellst bezüglich Synchronize?

    Was die MessageBox betrifft, weiss ich auch grad keine Lösung, ausser das hald nicht der Thread eine MsgBox anzeigt sondern das UI (o;

    -junix



  • und wieder mal eine dumme frage; was meinst du mit dem thread-experten ?

    also einfach wenn ich auf Datei->Neu->Weiter klicke und dann das Thread-Objekt auswähle ?



  • genau



  • rofl jetzt kapiere ich was du gemeint hast:

    // Wichtig: Methoden und Eigenschaften von Objekten der VCL können nur
    // in Methoden verwendet werden, die Synchronize aufrufen, z.B.:
    //
    // Synchronize(UpdateCaption);
    //
    // wobei UpdateCaption so aussehen könnte:
    //
    // void __fastcall d::UpdateCaption()
    // {
    // Form1->Caption = "In Thread aktualisiert";
    // }

    hmm klingt interessant 😃
    das erklärt mir einiges 😉
    danke für den tipp, man bin ich ein 🤡

    mein glück, dass ich bisher nur einen thread verwendet habe...


Anmelden zum Antworten