AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TThread Controls aktualisieren lassen

Ein Thema von youuu · begonnen am 8. Sep 2010 · letzter Beitrag vom 8. Sep 2010
Antwort Antwort
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#1

TThread Controls aktualisieren lassen

  Alt 8. Sep 2010, 11:28
Hi,

ich möchte mittel TThread z.B ein VST auf einem Frame verändern.
Allerdings sagt mir der Thread immer er erkennt das VST nicht, trotz einbindens der Unit.

Wenn ich es alleringds mit einen Form probiere klappt es.

Wieso nicht mit einem Frame?

Beispiel im Thread:

uses Form1, Frame1
Delphi-Quellcode:
Form1.Label1 := 'a'; <<< ist in Ordnung
Frame1.Label1 := 'a'; <<< erkennt er nicht
Steven
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

AW: TThread Controls aktualisieren lassen

  Alt 8. Sep 2010, 11:45
Frame1.Label1 := 'a'; <<< erkennt er nicht Der Grund ist recht einfach. Es kann ja sein das du mehrere Formulare hast und wenn du einfach Frame1.Irgendwas schreibst weiß weder der Compiler noch sonst wer wo sich der Frame befindet (er könnte ja auch auf Form2 liegen).
Daher muss es dann natürlich heißen
Form1.Frame1.Label1 := 'a'; Das funktioniert natürlich nur wenn der Frame auch auf Form1 liegt.

ALLERDINGS solltest du das niemals direkt aus dem Thread heraus machen sondern nur innerhalb einer Methode die du vorher mit Syncronize aufgerufen hast. Ansonsten passiert es ganz schnell das an irgendwelchen unerwarteten Stellen plötzlich Fehler auftreten.
Der Grund dafür ist das die VCL größtenteils nicht Threadsicher ist. Das heißt die Grafikkomponenten auf deinem Formular laufen in einem Thread und wenn du von einem anderen Thread aus direkt darauf zugreifst entstehen "wunderschöne" Fehler. Mit Syncronize innerhalb des Threads erreichst du das der Thread mit dem Formular-Thread (also dem Hauptthread) syncronisiert wird bzw. deine Befehle im Kontext des Hauptthreads ausgeführt werden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TThread Controls aktualisieren lassen

  Alt 8. Sep 2010, 11:47
Alle Windows-Controls (also alles was ein Windows-Handle hat) hat eine Thread-Affinität. Es darf nur im erzeugenden Thread angesprochen werden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#4

AW: TThread Controls aktualisieren lassen

  Alt 8. Sep 2010, 11:48
Heisst es nicht auch zusätzlich noch

Zitat:
Form1.Frame1.Label1.Caption := 'a';
?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

AW: TThread Controls aktualisieren lassen

  Alt 8. Sep 2010, 11:50
Da hat der schwarze Delphin recht Darauf hab ich gar nicht geachtet. Aber ich denke der Fragesteller hat es bereits richtig da sonst auch die erste Variante bei ihm nicht funktionieren würde.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#6

AW: TThread Controls aktualisieren lassen

  Alt 8. Sep 2010, 12:16
Ja das war nur ein kleiner schnelligkeits Tippfehler
Steven
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz