Autor |
Beitrag |
rob87
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mi 23.01.08 17:42
Hallo
ich will mein Editfeld auf die Eingabe von Hex-Zahlen beschränken
Dass ist mein Ansatz:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| if not (Key in ['0'..'9', Char(VK_BACK)]) then begin messagedlg('Bitte geben Sie nur Zahlen im Wertebereich von 0-9 bzw. A-F ein',mtInformation,[mbOK],0); Key := #0; end; end; |
So funktionierts. Nur dass halt die Buchstaben A-F ned erlaubt sind. Aber auch wenn ich dahinter die Buchstaben, A-F eintrage, macht er nichts anderes??
Delphi-Quelltext 1:
| if not (Key in ['0'..'9','A..F', Char(VK_BACK)]) then | Moderiert von Gausi: Topic aus Sonstiges (Delphi) verschoben am Mi 23.01.2008 um 16:47
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mi 23.01.08 17:47
Vielleicht so?
Delphi-Quelltext 1:
| if not (Key in ['0'..'9','A'..'F', 'a'..'f', Char(VK_BACK)]) then |
_________________ We are, we were and will not be.
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mi 23.01.08 17:47
Hat sich erledigt. Hab die Kleinschreibweise genommen. In der Liste aber die Großschreibweise ausgeschlossen.
Aber nun nochwas? Wie kann einstellen, dass er in einem Edit-Feld Buchstaben automatisch groß macht?
|
|
Mitmischer 1703
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Mi 23.01.08 17:49
Geht nicht, "manuell" so:
Delphi-Quelltext
_________________ Die Lösung ist nicht siebzehn.
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mi 23.01.08 17:53
OK. Und dass müsst ich in mein Edit1KeyPress ganz oben anordnen??
Vor den ganzen Überprüfungen auf den Inhalt, oder?
Aber versteh noch ned, wie ich den Befehl einbind?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure Tfrmzahlenwandeln.Edit1KeyPress(Sender: TObject; var Key: Char); begin
if not (Key in ['0'..'9','a'..'f','A'..'F', Char(VK_BACK)]) then begin messagedlg('Bitte geben Sie nur Zahlen im Wertebereich von 0-9 bzw. A-F ein',mtInformation,[mbOK],0); Key := #0; end; end; end; |
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mi 23.01.08 17:57
Ich würds mal so probieren:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| case key of '0'..'9': ; 'a'..'f': key := key + 26; 'A'..'F': ; else begin key := #0; end; end; |
_________________ We are, we were and will not be.
|
|
Mitmischer 1703
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Mi 23.01.08 17:57
_________________ Die Lösung ist nicht siebzehn.
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Mi 23.01.08 18:04
Und was machst du dann mit Key2? Du weißt dieser Variable den großgeschriebenen Wert zu, verwendest ihn jedoch nicht mehr.
Was du machen könntest, wäre den kompletten Inhalt des Editfeldes großzuschreiben:
Delphi-Quelltext 1:
| Edit1.Text := UpperCase(Edit1.Text); |
Das Problem ist jedoch, dass der Cursor an den Anfang gesetzt wird. Du musst noch kontrollieren, wo der Cursor vorher war, und ihn dann am Ende wieder an die richtige Stelle setzen.
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Do 24.01.08 08:58
Also zusammengefasst entweder mit der Variante mit "Key2" oder mit nem Case ??
|
|
Miri
      
Beiträge: 657
Delphi 3 Prof., Delphi 2005 PE
|
Verfasst: Do 24.01.08 09:17
Habs nicht ausprobiert, aber kann man nicht einfach
Delphi-Quelltext 1: 2: 3:
| Key := AnsiUpperCase(String(Key)); if not (Key in ['0'..'9','A..F', Char(VK_BACK)]) then |
machen?! 
_________________ Anonymes Eckenkind
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Do 24.01.08 09:20
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Do 24.01.08 09:42
ev. aller Steuerzeichen zulassen?
Delphi-Quelltext 1: 2:
| Key := AnsiUpperCase(String(Key)); if not (Key in [#01..#31,'0'..'9','A..F']) then ... |
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Do 24.01.08 09:46
Es ging im weiteren Verlauf auch darum, wie man ein 'f' zu einem 'F' im Editfeld machen kann, und da brauch man dann etwas mehr 
_________________ We are, we were and will not be.
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Do 24.01.08 09:48
|
|
Erichgue
      
Beiträge: 86
Win XP/2000/7
TurboPacal 7.0; Delphi 2/5/7; BDS 2006/2010/XE6; C#; MSSQl 2000
|
Verfasst: Do 24.01.08 11:31
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 24.01.08 11:33
Kroko hat folgendes geschrieben: | ev. aller Steuerzeichen zulassen?
Delphi-Quelltext 1: 2:
| Key := AnsiUpperCase(String(Key)); if not (Key in [#01..#31,'0'..'9','A..F']) then ... | |
Dies ist OnKeyPress (sonst wäre Key kein Char). Und in OnKeyPress kannst du die Steuerzeichen ignorieren, diese werden nur abgewürgt, wenn du sie in OnKeyDown/OnKeyUp mit Key := 0 entfernst  .
|
|
Miri
      
Beiträge: 657
Delphi 3 Prof., Delphi 2005 PE
|
Verfasst: Do 24.01.08 11:34
_________________ Anonymes Eckenkind
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Do 24.01.08 11:38
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 24.01.08 11:48
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Do 24.01.08 11:54
|
|