![]() |
TMemo: wenn Pfeil in der letzten Zeile -> wie Tab
Hallo #,
ich erweitere gerade ein Form. Dort waren 3 Edits. Wenn man im Edit "Pfeil nach unten" geklickt hatte, wurde der nächste Editor markiert.
Delphi-Quellcode:
Jetzt wird einer der Edits durch ein TMemo ersetzt.
if Key=VK_Down then theForm.Perform(WM_NEXTDLGCTL, 0, 0);
Wenn der Cursor in der letzten Zeile ist und der Nutzer vk_down drückt, soll zum nächsten Edit springen. EM_LINEFROMCHAR, EM_LINEINDEX habe ich schon rausgesucht, aber so richtig keinen Plan, wie weiter. Ich brauche sowas wie "CursorIsInLastLine". Hat jemand sowas programmiert ? Danke Heiko |
Re: TMemo: wenn Pfeil in der letzten Zeile -> wie Tab
im OnKeyDown oder OnKeyUp des MemoFeldes
Delphi-Quellcode:
if (Key = VK_Down) and (Memo1.SelStart = Length(Memo1.Text)) then theForm.Perform(WM_NEXTDLGCTL, 0, 0);
|
Re: TMemo: wenn Pfeil in der letzten Zeile -> wie Tab
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; |
Re: TMemo: wenn Pfeil in der letzten Zeile -> wie Tab
Hallo Heiko,
kennst du schon TMemo.CaretPos.Y? Grüße vom marabu |
Re: TMemo: wenn Pfeil in der letzten Zeile -> wie Tab
Hallo marabu,
jetzt ja ;) aber wozu ? Das sind Bildschirmkoordinaten, keine Zeilen. Aber egal, der Code oben läuft ja jetzt. :cheers: Heiko |
Re: TMemo: wenn Pfeil in der letzten Zeile -> wie Tab
Zitat:
Freundliche Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz