Toon posts:

[DELPHI] TMaskEdit-probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Als ik in een bepaalde TmaskEditveld een bepaalde waarde invul, krijg ik direct een foutmelding. Hoe voorkom ik dit? Ik heb het al geprobeerd met gewone editveld maar daar kun je geen inputmask instellen :'(

voorbeeld: bijvoorbeeld heb ik een datum als invoermasker ingesteld. De waarde voldoet als er bijvoorbeeld 11-30-2001 staat, maar als ik alleen 11 heb ingevuld, en ik klik op een ander component, krijg ik een exceptie.

Hoe voorkom ik dit?

  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

Waarom zou je een MaskEditComponent gebruiken voor een datum als het DateTimePickercomponent oid standaard bij Delphi zit?

Indien je toch verder wil met je MaskEdit, mag ik je dan vragen hier je mask te posten en de source van eventuele events die aan dat component gekoppeld zijn?

  • klinz
  • Registratie: Maart 2002
  • Laatst online: 10-08 15:44

klinz

weet van NIETS

Sja... lastig. Ik heb ooit voor hetzelfde probleem gestaan. Er zijn een aantal (min of meer lelijke) mogelijkheden:

1) consts.pas aanpassen. Een nadeel van deze oplossing is dat je bij elke TMaskEdit dezelfde melding krijgt. Overigens zijn de strings in Consts.pas zogenaamde resourcestrings dus je zou ook de resourcestrings zelf kunnen bewerken.

2) Het Application.OnException event gebruiken en in dit event checken of de sender je bewuste TMaskEdit is. In combinatie met een check op de exceptie soort (EDBEditError IIRC) kun je dan een custom melding geven.

3) Een IsDate() functie schrijven waarin je een TMaskEdit gebruikt binnen een try...except om te bepalen of het meegegeven argument een valide datum is. Op je form gebruik je dan een gewone TEdit waarvan je in het OnExit event IsDate() kunt aanroepen met de huidige inhoud van de TEdit.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:28

Creepy

Tactical Espionage Splatterer

Of maak een nieuw object aan, dat overerft van TMaskEdit en override de procedure validateerror, hierin word namelijk die exceptie gegooid. Validateerror word aangeroepen op het moment dat de mask niet goed is.

En klinz: Het aanpassen van files die in Delphi zelf zitten levert meestal meer ellende op. Een collega van me had dat ook gedaan, en reken er dan maar dat je lang opzoek bent als je code op een ander systeem ineens niet compiled. ;)

Overigens krijg je geen vage exceptie melding als je je programma los van Delphi runt. Je krijgt dan een melding dat wat je hebt ingevoerd niet goed is, met de vraag de boel opnieuw in te vullen of op ESC te drukken om je aanpassingen ongedaan te maken.

[ Voor 23% gewijzigd door Creepy op 09-02-2003 11:00 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney