AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Edit-Feld im Exit-Ereignis prüfen

Ein Thema von Ati · begonnen am 24. Aug 2006 · letzter Beitrag vom 24. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#1

Edit-Feld im Exit-Ereignis prüfen

  Alt 24. Aug 2006, 08:41
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
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#2

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

  Alt 24. Aug 2006, 08:46
hmm

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

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#3

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

  Alt 24. Aug 2006, 08:49
Danke klappt!!
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

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

  Alt 24. Aug 2006, 08:57
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
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#5

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

  Alt 24. Aug 2006, 09:00
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...
  Mit Zitat antworten Zitat
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#6

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

  Alt 24. Aug 2006, 09:08
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.
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#7

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

  Alt 24. Aug 2006, 09:10
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]
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#8

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

  Alt 24. Aug 2006, 09:19
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
  Mit Zitat antworten Zitat
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#9

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

  Alt 24. Aug 2006, 09:43
@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)
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#10

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

  Alt 24. Aug 2006, 12:11
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??
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 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