Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Edit-Feld im Exit-Ereignis prüfen (https://www.delphipraxis.net/75730-edit-feld-im-exit-ereignis-pruefen.html)

Ati 24. Aug 2006 07:41


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:
if lief[1] not in ['A'..'Z'] then
    showmessage('Fehlerhafter Lieferant. Bitte prüfen!!');
Doch meckert hier der Compiler das "Then" erwartet aber "not" gefunden. Wie muß der Code richitg aussehen??

Ati

Mavarik 24. Aug 2006 07:46

Re: Edit-Feld im Exit-Ereignis prüfen
 
hmm

Delphi-Quellcode:
if not(lief[1] in ['A'..'Z']) then
    showmessage('Fehlerhafter Lieferant. Bitte prüfen!!');
So? Ungetestet

Ati 24. Aug 2006 07:49

Re: Edit-Feld im Exit-Ereignis prüfen
 
Danke klappt!!

Hawkeye219 24. Aug 2006 07:57

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:
if (lief = '') or (not (lief[1] in ['A'..'Z'])) then
  showmessage('Fehlerhafter Lieferant. Bitte prüfen!!');
Der Code setzt den Vorgabewert für die Kurzschlußauswertung ({$B-} oder {$BOOLEVAL OFF}) voraus.

Gruß Hawkeye

Jelly 24. Aug 2006 08:00

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...

Ati 24. Aug 2006 08:08

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.

Helmi 24. Aug 2006 08:10

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:
var
  S: String;

begin
  S := #32;                                 //Leerzeichen

  MaskEdit1.EditMask := 'AAA00;1;' + S;    //A = Buchstaben-Eingabe erforderlich, 0=Zahl-Eingabe erforderlich
end;
So werden die Unterstriche ausgeblendet (da nicht mehr Unterstriche sondern Leerzeichen angezeigt werden)

[edit]
es geht auch so:

Delphi-Quellcode:
begin
  MaskEdit1.EditMask := 'AAA00;1;' + #32;   //A = Buchstaben-Eingabe erforderlich, 0=Zahl-Eingabe erforderlich + Leerzeichen
[/edit]

Hawkeye219 24. Aug 2006 08:19

Re: Edit-Feld im Exit-Ereignis prüfen
 
Zitat:

Zitat von Ati
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.

Das läßt darauf schließen, daß du ShortStrings (also Strings mit einer festen Längenangabe) verwendest. In diesem Fall ist der Zugriff auf die Zeichen möglich, der gelieferte Wert ist aber unter Umständen undefiniert. Bei dynamischen Strings (string - ohne Längenangabe) wird der Fehler auch bei einem Wechsel mit der Tab-Taste auftreten.

Gruß Hawkeye

Ati 24. Aug 2006 08:43

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)

Ati 24. Aug 2006 11:11

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 21:22 Uhr.
Seite 1 von 2  1 2      

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