Hi!
Ich werd mal versuchen dir die Sache ein wenig näher zu bringen.
Zitat: |
was ich nicht verstehe ist wie diese caption jetzt in die caption von label1 kommt, da das über property funzt und ich da nicht durchseh |
Als erster Tip: Guck mal in die hilfe unter dem Stichwort "property". Da wird erklärt, wie man damit arbeitet. Als Kurz-Referenz kann man sagen: Eine property ist wie eine Member-Variable einer Klasse, nur das sie einiges mehr kann.
Durch das:
Delphi-Quelltext
1:
| TLabel read FLabel write FLabel |
dahinter, wird die Eigenschaft fest mit der Variable FLabel "verknüpft", so das man fast sagen könnte, das FLabel eine Art Alias für "FLabel" ist. Beide sind zu (fast)jeder Zeit gleichbedeutend, haben den gleichen Wert und können gleich verwendet werden.
In diesem speziellen Fall merkt man sich in dem TTimeSync unter FLabel einen Verweis auf das echte Label, das auf dem Form liegt. Das passiert beim Anlegen des Objektes durch
Delphi-Quelltext
Dadurch kann der Thread dann später auf das Label zugreifen und z.B. dessen Caption setzen.
Zitat: |
und synchronize is so das zweite problem was ich habe. irgendwie versteh ich noch nicht |
Folgendes Problem:
Dein Thread läuft ja nun durch die CPU wie er will. Er ist dabei völlig unabhängig vom Hauptthread, der sich z.B. um das Formular und speziell in diesem Fall um das Label kümmert. Wenn deinem Thread jetzt einfällt, das er etwas mit den Resourcen des anderen Threads machen möchte, dann sollte das "synchron" passieren, also so, das es zu keinen Konflikten zwischen den beiden Threads kommt. Das betrifft vor allen Dingen Aktionen mit grafischen Elementen. Der Synchronize-Prozedur übergibst du als einzigen Parameter eine Member-Prozedur des Threads (In diesem Fall "UpdateVCL"). Damit wartet der TTimeSync-Thread darauf, bis der Hauptthread wieder in seine Message-schleife kommt und macht dann erst seine Änderunge. Als Gegen-Beispielt kannst du einfach in deinem Thread mal ne MessageBox aufmachen. Du wirst dich wunderen wieviele verschiedene Formen eine Messagebox haben kann.
