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 tmaskedit im Eingabemodus (https://www.delphipraxis.net/11080-tmaskedit-im-eingabemodus.html)

Horald 30. Okt 2003 18:08


tmaskedit im Eingabemodus
 
Hallo,

ich habe das Problem, dass mein Maskedit-Feld immer im Überschreibemodus ist. Wie kann ich es realisieren, dass es auch im Einfügemodus arbeitet :?:
Danke für einen Tipp.

Gruß

Horst
:hi:

Sharky 30. Okt 2003 18:45

Re: tmaskedit im Eingabemodus
 
Hai Horst,

ersteinmal herzlichen Willkommen in der Delphi-Praxis.

Zitat:

Zitat von Horald
....ich habe das Problem, dass mein Maskedit-Feld immer im Überschreibemodus ist. Wie kann ich es realisieren, dass es auch im Einfügemodus arbeitet....

Das geht meines Wissens nach nicht. Wäre ja auch schlecht. Wenn es im Einfügemodus arbeiten würde, würden ja die Zeichen immer um eines nach rechts verschoben. Nun könnte es ja dadurch passieren das dadurch der Inhalt nicht mehr mit der Edit-Mask im Einklang stehen würde.

Je nach dem was Du machen möchtest kannst Du es sicher auch mit einem normalem Edit lösen.

APP 30. Okt 2003 19:42

Re: tmaskedit im Eingabemodus
 
Hallo,
der Überschreibmodus ist gar nicht Implementiert in den Delphi-Controls (wußte ich gar nicht, bis heute :shock: ).

Peter Below hat ein Workaround für alle Nachfahren von TCustomEdit geschrieben:

Delphi-Quellcode:
PROCEDURE TForm1.MaskEdit1KeyPress(Sender: TObject; VAR Key: Char);
BEGIN
   IF (Sender IS TCustomEdit) AND Odd(GetKeyState(VK_INSERT)) THEN
      WITH TCustomEdit(Sender) DO
         IF SelLength = 0 THEN
            CASE Key OF
               ' '..#126, #128..#255:
                  BEGIN
                     SelLength := 1;
                     IF (SelLength > 0) AND (SelText[1] = #13) THEN
                        SelLength := 2;
                  END;
            END;
END;
Nun startet das Control im Einfügemodus und toggelt bei jeder
Betätigung der Einfügetaste zwischen Einfüge- und Überschreibmodus.

Möchte man im Überschreibmodus starten, dann muß man nur
Delphi-Quellcode:
NOT Odd(GetKeyState(VK_INSERT)) THEN
schreiben.
(Wobei scheinbar aber der Tastenstatus auch vor dem Start wirkt)

p.s.
Funktioniert auch mit einem Maskedit, allerdings nur solange keine EditMask definiert ist :mrgreen:
Sonst hat natürlich Sharky recht.

Horald 4. Nov 2003 19:26

Re: tmaskedit im Eingabemodus
 
Hallo App,

Danke für das Workaround :spin2:

Zitat:

Zitat von APP
Hallo,
der Überschreibmodus ist gar nicht Implementiert in den Delphi-Controls (wußte ich gar nicht, bis heute :shock: ).

Peter Below hat ein Workaround für alle Nachfahren von TCustomEdit geschrieben:

p.s.
Funktioniert auch mit einem Maskedit, allerdings nur solange keine EditMask definiert ist :mrgreen:
Sonst hat natürlich Sharky recht.

Funktioniert prima. Der Hinweis auf die Editmask war gut. Da die Eingabe auf alphanumerisch begrenzt ist, kann ich die Eingabeabfrage aber auch über Keypressed lösen. :corky:

Gruß

Horst
:hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:54 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