Hallo chrisw,
Danke, ich habe das inzwischen selbst herausgefunden.
Das Problem ist, der Code wird zwar ausgeführt, aber das nächste
Edit wird NICHT fokussiert.
In das Perform springt er aber.
Edit_Text ist vom Typ TMemo.
Ich hatte nur keine Lust, alle Verweise zu ändern.
Mit Tab geht es,
die folgenden Editoren werden auch brav angesprungen,
wenn vorher auch ein Editor fokussiert war.
Woran kann das liegen ?
Edit:
Key:= 0; war die Lösung
Heiko
Delphi-Quellcode:
procedure TForm_Terminal_IdText.Edit_TextKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
var
iCurLine : Integer;
iMaxLines : Integer;
begin
{ starts with zero }
iCurLine:= SendMessage(Edit_Text.Handle, EM_LINEFROMCHAR,
Edit_Text.SelStart, 0)+1;
iMaxLines:= SendMessage(Edit_Text.Handle, EM_GETLINECOUNT, 0, 0);
if (Key=VK_UP) and
(iCurLine=1) then
begin
Self.Perform(WM_NEXTDLGCTL, 1, 0);
// ohne das klappt es nicht
Key:= 0;
end;
if (Key=VK_DOWN) and
(iCurLine=iMaxLines) then
begin
Self.Perform(WM_NEXTDLGCTL, 0, 0);
// ohne das klappt es nicht
Key:= 0;
end;
end;