Autor Beitrag
winx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 249



BeitragVerfasst: Di 12.12.06 11:17 
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:
ausblenden 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
type

  UpdateMainFormCallback = procedure(text:stringof object//Der Delegat

  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:
ausblenden Delphi-Quelltext
1:
m_UpdateMainForm := self.updateTextInMainForm;					


Die Funktion updateTextInMainForm sieht so aus:
ausblenden 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:

ausblenden 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 gepostet