AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Bei Verlassen des DBEdit-Feldes Systemprüfungen ausschalten?

Bei Verlassen des DBEdit-Feldes Systemprüfungen ausschalten?

Ein Thema von little-x · begonnen am 15. Okt 2007 · letzter Beitrag vom 11. Feb 2021
Antwort Antwort
little-x

Registriert seit: 13. Apr 2007
Ort: Brandenburg
60 Beiträge
 
Delphi 6 Enterprise
 
#1

Bei Verlassen des DBEdit-Feldes Systemprüfungen ausschalten?

  Alt 15. Okt 2007, 12:57
Datenbank: INFORMIX • Version: 10 • Zugriff über: native
Hallo,

bin mir nicht so recht sicher, ob das nicht besser im "Controls"-Teil aufgehoben wäre... aber irgendwo muss ich es ja reinschreiben.

ich habe einige Zusatzfunktionen in's DBEdit eingebaut (eigene Komponente, die von DBEdit abgeleitet ist). ZB. Datumsvervollständigung - man gibt ein "010199" und er macht 01.01.1999 draus. Das Problem ist dass ich das am liebsten in der OnExit handhaben würde - doch leider ist das "zu spät". Die drunterliegende TField - Klasse macht seine eigene Abprüfung - weshalb bei obiger Beispieleingabe die Fehlermeldung kommt "..bla.. ist kein gültiges Datum". Erst danach springt er in die OnExit rein. Es bringt also auch nichts, meine Sachen vor den "inherited"- Aufruf zu bringen, weil das "Exit"-Ereignis an sich eben erst zu spät ausgelöst wird.

Ich habe im Original-Quelltext gesehen wo diese Prüfungen stattfinden - in der Klasse TDataLink. Diese abzuleiten und den Fehler zu unterdrücken geht aber nicht, weil die entscheidenden Propertys bzw. Prozeduren (die ich überschreiben müsste) private sind. Genauso wenig sollte ich den gesamten Quelltext zu nehmen und die Klasse neu zu erstellen.

Glücklicherweise hat die Software als "Standardtaste", um auf das nächste Feld zu springen, die <ENTER>-Taste, weshalb ich das ENTER-Tastaturereignis abfangen kann und meine Konvertierungen VOR der anderen Prüfung kommen. Aber sobald der Nutzer dann doch mal den "windows-"konformen Weg geht (z.B. Tab, oder per Maus rausgehen) kommt diese dämliche Fehlermeldung.

Wie also lässt sich diese Fehlermeldung unterdrücken bzw. geht das überhaupt?
manchmal machts mich mürbe
  Mit Zitat antworten Zitat
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#2

Re: Bei Verlassen des DBEdit-Feldes Systemprüfungen ausschal

  Alt 16. Okt 2007, 07:57
Zitat:
weil die entscheidenden Propertys bzw. Prozeduren (die ich überschreiben müsste) private sind.
Wahrscheinlich bekomme ich jetzt Prügel ...
Wenn du Klasse "ClassA" ableitest kannst du in deiner neuen Klasse "ClassB" auch mit einem Typecast auf die ursprüngliche Klasse solche Sperren umgehen ... ClassA()...
Peter Schaible
  Mit Zitat antworten Zitat
UliTs

Registriert seit: 20. Mai 2020
Ort: 52074 Aachen
44 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Bei Verlassen des DBEdit-Feldes Systemprüfungen ausschalten?

  Alt 11. Feb 2021, 19:01
...
Die drunterliegende TField - Klasse macht seine eigene Abprüfung - weshalb bei obiger Beispieleingabe die Fehlermeldung kommt "..bla.. ist kein gültiges Datum".
...
Danke für den Faden! Genau das gleiche Problem hatte ich auch längere Zeit.
Dabei habe ich bei Datumsfeldern mit EditMask gearbeitet, so dass ein leeres Datum halt immer noch im Eingabefeld die beiden Punkte '. .' hat. Mit der folgenden Ereignisroutine für OnSetText habe ich mir helfen können:
Code:
procedure TDataModule.DateSetText(Sender: TField;
  const Text: string);
begin
  if trim( Text ) <> '. .' then Sender.AsString := Text
  else                          Sender.AsString := '';   // Damit die Eingabe eines leeren Datums möglich ist!
end;
Lästig und etwas Fehleranfällig ist dabei, dass diese Routine für jedes Datumsfeld mittels "OnSetText" eingebunden werden muß. Gibt es da eine elegantere Möglichkeit?
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf