Einzelnen Beitrag anzeigen

radekj

Registriert seit: 17. Dez 2006
22 Beiträge
 
#9

Re: Methode mit Synchronize mit Parametern aufrufen

  Alt 19. Dez 2006, 11:14
Beispiel für Asynchrone Calls:


Delphi-Quellcode:
unit Unit1;

interface

uses
  ..., Messages; // <- !

const
  WM_USER_MYMessage = WM_USER +1; // <-- !
Delphi-Quellcode:
TMyForm = class(Form)
...
  protected
    procedure MYMessageProc(var Message: TMessage); message My_USER_MYMessage; // <-- !
end;


procedure TMyForm.MYMessageProc(var Message: TMessage);
begin
  //Mache etwas
  inherited;
end;

end;
[delphi]
Aufruf aus Thread (aber nicht nur):
Code:
PostMessage(MyForm.HWND, WM_USER_MYMessage, 0, 0); // du kannst auch SendMessage verwenden !
Wen du string übergeben willst dann:

Code:
procedure MySend(AText: string); // call aus dem Thread, oder von wo anders !
var
  psText: PString;
begin
  New(psText);
  psText^ := AText;
  PostMessage(MyForm.HWND, WM_USER_MYMessage, Integer(psText), 0); // du kannst auch SendMessage verwenden !
end;
und aus "MYMessageProc" wird:
Code:
procedure TMyForm.MYMessageProc(var Message: TMessage);
var
  sText: string;
begin
  sText := PString(Message.WParam)^;
  Dispose(PString(Message.WParam)); //frei geben
  inherited;
  //Mache etwas, in sTest ist dein string
end;
ciao
radekj

PS: aus dem Kopf getippt, bug possible
  Mit Zitat antworten Zitat