Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Überschreibmodus für TEdit (https://www.delphipraxis.net/131604-ueberschreibmodus-fuer-tedit.html)

HappyJoe 27. Mär 2009 10:26


Überschreibmodus für TEdit
 
Hi zusammen,

wie kann ich den Überschreibmodus von einem TEdit (z.B. im OnEnter) aktivieren? Also Text ist „ABC“ und ich drücke X, so muss „XBC“ rauskommen. Klar kann ich im OnChange oder OnKeypressed das „A“ löschen aber geht das nicht einfacher?

uligerhardt 27. Mär 2009 11:17

Re: Überschreibmodus für TEdit
 
TEdit kapselt ja nur das Windows-Edit, und das kann out of the box keinen Überschreibmodus. Ich hab das in einem Fall so gelöst:
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
  AEdit: TEdit;
begin
  Assert(Sender is TEdit);
  case Key of
    ' '..#126, #128..#255:
      begin
        AEdit := TEdit(Sender);
        if OverwriteMode and (AEdit.SelLength = 0) then
          AEdit.SelLength := 1;
        if (AEdit.SelLength > 0) and (AEdit.SelText[1] = #13) then
          AEdit.SelLength := 2;
      end;
  end;
end;

procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
  if Msg.CharCode = VK_INSERT then
  begin
    OverwriteMode := not OverwriteMode;
    Handled := True;
  end;
end;
Die OnKeyPress-Routine stammt WIMRE von Peter Below. Das Zeug mit #13 dürfte wohl nur für Memos interessant sein.

HTH,
Uli.

HappyJoe 27. Mär 2009 11:50

Re: Überschreibmodus für TEdit
 
Hallo uligerhardt,

danke für die schnelle Antwort. Die Idee gefällt mir gut, da auch so der Cursor deutlicher wird.
Also nochmals DANKE!

Gruß Joe


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz