![]() |
Edit-Feld im Exit-Ereignis prüfen
Moin,
ich möchte den Text in einem Edit-Feld beim verlassen auf gewisse Sachen prüfen/untersuchen. In diesem Feld darf nur unser Lieferantenkürzel stehen. Unser Lieferantenkürzel setzt sich aus den ersten vier Buchstaben und einer fortlaufenden Nummer (Bsp. Siemens = Siem01). Leider kann ich bei Lazarus ein MaskEdit-Feld nicht so einstellen das die blöden Unterstriche nicht erscheinen (zumindest habe ich es nicht rausgefunden). Also nehme ich ein normales Edit-Feld. Ich hatte es mal mit folgendem Code versucht:
Delphi-Quellcode:
Doch meckert hier der Compiler das "Then" erwartet aber "not" gefunden. Wie muß der Code richitg aussehen??
if lief[1] not in ['A'..'Z'] then
showmessage('Fehlerhafter Lieferant. Bitte prüfen!!'); Ati |
Re: Edit-Feld im Exit-Ereignis prüfen
hmm
Delphi-Quellcode:
So? Ungetestet
if not(lief[1] in ['A'..'Z']) then
showmessage('Fehlerhafter Lieferant. Bitte prüfen!!'); |
Re: Edit-Feld im Exit-Ereignis prüfen
Danke klappt!!
|
Re: Edit-Feld im Exit-Ereignis prüfen
Ich würde zuvor prüfen, ob der String leer ist. Bei Leerstrings führt der Zugriff auf ein Zeichen zu einer AV.
Delphi-Quellcode:
Der Code setzt den Vorgabewert für die Kurzschlußauswertung ({$B-} oder {$BOOLEVAL OFF}) voraus.
if (lief = '') or (not (lief[1] in ['A'..'Z'])) then
showmessage('Fehlerhafter Lieferant. Bitte prüfen!!'); Gruß Hawkeye |
Re: Edit-Feld im Exit-Ereignis prüfen
Man beachte aber, dass das OnExit Ereignis nicht immer auftritt. Wenn Du z.B. ein Speedbutton nutzt, um irgendeine Aktion auszuführen (z.b. Datensatz in einer Datenbank speichern), so bleibt der Fokus auf dem Edit Feld, und löst kein OnExit aus...
|
Re: Edit-Feld im Exit-Ereignis prüfen
Danke für eure Anregungen. Habe mal versucht den Fehler mit dem leeren String zu provozieren, hat aber insofern nicht funktioniert, das ich erstens mit der Tab-Taste sofort weitergegangen bin und gar keine Fehlermeldung kam. Zweistens ich einfach mit Leerzeichen in die Mitte des Edit-Feldes gegangen bin und dann das Feld verlassen habe. Hier kam sofort die vorgefertigte Fehlermeldung. Also auch in Ordnung so. Ich werde aber beim Speichern des DS sowieso nochmal alle Pflichtfelder überprüfen, ob Eingaben gemacht wurden.
|
Re: Edit-Feld im Exit-Ereignis prüfen
Hallo,
du kannst natürlich auch ein MaskEdit verwenden (mit Trick was ich grad rausgefunden habe). Nimm ein MaskEdit und mach im OnCreate der Form folgendes:
Delphi-Quellcode:
So werden die Unterstriche ausgeblendet (da nicht mehr Unterstriche sondern Leerzeichen angezeigt werden)
var
S: String; begin S := #32; //Leerzeichen MaskEdit1.EditMask := 'AAA00;1;' + S; //A = Buchstaben-Eingabe erforderlich, 0=Zahl-Eingabe erforderlich end; [edit] es geht auch so:
Delphi-Quellcode:
[/edit]
begin
MaskEdit1.EditMask := 'AAA00;1;' + #32; //A = Buchstaben-Eingabe erforderlich, 0=Zahl-Eingabe erforderlich + Leerzeichen |
Re: Edit-Feld im Exit-Ereignis prüfen
Zitat:
Gruß Hawkeye |
Re: Edit-Feld im Exit-Ereignis prüfen
@Helmi
Stimmt das würde auch unter Lazarus so funktionieren. @Hawkeye Stimmt ich prüfe auch auf die Länge und verlange 6 Zeichen. Ich schätze es ist jetzt mehr eine philosophische Frage was ich wie mache. Ich denke aber ich benutze die bisherige Variante, da sie ja ohne Probleme funktioniert (zumindest bis jetzt) |
Re: Edit-Feld im Exit-Ereignis prüfen
Leider muß ich dieses Thema nochmal aufrollen. Ich bin jetzt schon erheblich weiter mit meinem Programm und nun habe ich einen Button eingefügt, welcher alle Text-Elemente löschen soll. Wenn jetzt aber das vorhergenannte Feld den Fokus hat und ich den Clean-Button drücke, dann kommen natürlich die ganzen Fehlermeldungen. Kann ich das in diesem Fall umgehen??
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 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-2025 by Thomas Breitkreuz