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 Maskedit verwenden (https://www.delphipraxis.net/115246-maskedit-verwenden.html)

DelphiManiac 9. Jun 2008 08:28


Maskedit verwenden
 
Hi,

ich will in meinem Programm eine Zahleneingabe vereinfachen.
Nutzen wollte ich dazu TLMDMaskEdit.
Meine Zahlen, die eingegebene werden sollen sehen etwa so aus:

07-1372-2-134


Jetzt hat man ja die Möglichkeit eine Maske vorzugeben.
Der 1. und zweite Zahlenblock bleibt gleich, der 3. kann sich ändern und der letzte Zahlenblock ist fortlaufend.
Das heißt ich kann ja nicht die Mask auf 3 Zeichen stellen am Ende, da es ja 1,2 oder 3 Zeichen seien können.

Wie kann man soetwas am sinvollsten abbilden?


Vielen Dank!

Sharky 9. Jun 2008 08:39

Re: Maskedit verwenden
 
Hai DelphiManiac,

mal unabhängig von der direkten Frage: Wäre es nicht "besser" die Eingabe auf vier Editfelder zu verteilen?

DelphiManiac 9. Jun 2008 08:49

Re: Maskedit verwenden
 
Hi Sharky,

Jein,

also jetzt bei der manuellen Eingabe wären 4 Felder besser, da bin ich mit dir d'accord.
Aber zukünftig sollen die Barcodes abgescannt werden, dann wäre mehrer Textefelder hinderlich...

Gruß

Sharky 9. Jun 2008 08:58

Re: Maskedit verwenden
 
Zitat:

Zitat von DelphiManiac
... Aber zukünftig sollen die Barcodes abgescannt werden, dann wäre mehrer Textefelder hinderlich...

Kommt vom Barcodesanner ein String oder kann er jedes Zeichen einzeln senden?
Wenn jedes einzeln kommt könntest Du ja trotzdem mit mehreren Textfeldern arbeiten und einfach wenn x Zeichen im Edit stehen in das nächste springen.

DelphiManiac 9. Jun 2008 09:27

Re: Maskedit verwenden
 
Also der Scanner schickt glaube ich einzelne Character,
müsste ich mir mal angucken, dann könnte ich auf das '-' Minus triggern und dann in das nächste Feld springen.
Gute Idee, guck ich mir mal an.

DelphiManiac 9. Jun 2008 14:21

Re: Maskedit verwenden
 
Hi,

habe es jetzt mit 4 Textfeldern gelöst,

gucke ob ein '-' vorkommt und springe dann ins nächste Editfeld.

Delphi-Quellcode:
procedure TFrmPCBNrGUI.txtDisplayPCB3KeyPress(Sender: TObject; var Key: Char);
begin
  if (Key in ['-']) then
  begin
    txtDisplayPCB4.SetFocus;
    Key := #0;
  end;
end;
Kannst du mir sagen, wie ich Enter abfange und dann in ein anderes Edifeld springe?

Danke!

Hansa 9. Jun 2008 16:46

Re: Maskedit verwenden
 
Du musst ja dann das Return behandeln, wie das "-" :

Delphi-Quellcode:
if (Key in [#13,'-']) then
Muss das Return nicht besser ins KeyDown ? :gruebel:

juergen 9. Jun 2008 19:19

Re: Maskedit verwenden
 
@Hansa,

im KeyDown muss allerdings der äquivalente Word-Wert für #13 eingegeben werden: :mrgreen:

Delphi-Quellcode:
procedure TFrmPCBNrGUI.txtDisplayPCB3KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key in [$0D]) then
  begin
    txtDisplayPCB4.SetFocus;
  end;
end;
//Ende Klugs... :warn:

Hansa 9. Jun 2008 22:27

Re: Maskedit verwenden
 
Alternative : Fehlermeldung ignorieren. :mrgreen:


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