Einzelnen Beitrag anzeigen

winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#1

Auf Controls aus einem zweiten Thread zugreifen BeginInvoke?

  Alt 12. Dez 2006, 09:12
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:
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-Quellcode:
type

  UpdateMainFormCallback = procedure(text:string) of 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:
m_UpdateMainForm := self.updateTextInMainForm; Die Funktion updateTextInMainForm sieht so aus:
Delphi-Quellcode:
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:

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 Ach ja: hab es auch hier gepostet gepostet
  Mit Zitat antworten Zitat