winx - Di 12.12.06 11:17
Titel: Auf Controls aus einem zweiten Thread zugreifen BeginInvoke?
Guten Morgen,
ich habe ein Formular mit einer TextBox drauf.
Nun möchte ich aus einem 2.Thread auf das Formular zugreifen.
In diesem habe ich eine MemberVariable m_mainForm.
Bisher habe ich es so gemacht:
Delphi-Quelltext
1:
| m_mainForm.TextBoxReceived.Text := m_mainForm.TextBoxReceived.Text + newText; |
Da das aber unsauber ist, möchte ich es gerne sicher machen. Hierzu muß ich doch
BeginInvoke der TextBox verwenden, oder?
Also habe es so versucht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| type
UpdateMainFormCallback = procedure(text:string) of object; TServerMainFormManager = class private m_mainForm : TServerMainForm; m_UpdateMainForm : UpdateMainFormCallback; ... procedure updateTextInMainForm(text:string); ... |
Dann muss ich ja noch irgendwie die Funktion updateTextInMainForm mit dem Delegaten verknüpfen, oder?
Dies habich im Constructor der TServerMainFormManager Klasse getan:
Delphi-Quelltext
1:
| m_UpdateMainForm := self.updateTextInMainForm; |
Die Funktion updateTextInMainForm sieht so aus:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TServerMainFormManager.updateTextInMainForm(text: string); begin m_mainForm.TextBoxReceived.Text := m_mainForm.TextBoxReceived.Text + text; end; |
So jetzt müsste ich doch nur noch irgendwie das BeginInvoke aufrufen, aber das klappt nicht.
Hab es so versucht:
Delphi-Quelltext
1:
| m_mainForm.TextBoxReceived.BeginInvoke(m_UpdateMainForm,'TEXT'); |
Könnt ihr mir bitte helfen die Fehler zu finden und das Teil zum laufen zu bringen?
Danke,
winx
Ach ja: hab es auch
hier [
http://www.delphipraxis.net/topic98415_auf+controls+aus+einem+zweiten+thread+zugreifen+begininvoke.html] gepostet