Aber das mit dem Screen.ActiveControl funktioniert nur dann, wenn das Setzten des Textes nicht in dem OnClick eines Buttons passieren muss.
Denn wenn der Button angeklickt wird, dann ist er das aktive Control... und Spielchen wie GetFocus und Screen.ActiveControl.Handle usw., alle geben Dir das
Handle das Buttons zurück. Das Ergebnis ist immer das gleiche, egal welche Version der
Handle-Ermittlung ich nutze: Der Text des Buttons wird geändert...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var hWnd: THandle;
MessageText: PChar;
begin
hWnd := GetFocus;
// hWnd := Screen.ActiveControl.Handle;
MessageText := 'Voll der Text...';
SendMessage(hWnd, WM_SETTEXT, 0, Integer(MessageText));
end;
Willst Du denn den Text in Deinem Programm setzten, oder soll das in einem anderen Programm passieren? Wenn du in deinem Programm bleibst, dann könntest du im "OnEnter"-Event deiner Edits einen Globalen Merker mit dem
Handle des Controls füllen, dann würde es gehen und du könntest auf Knopfdruck etwas in das Feld schreiben, das zuletzt aktiv war.