"Michael Vilhelmsen" <smom22@hotmail.com> wrote in message
news:4034c906$0$183$edfadb0f@dread11.news.tele.dk...
> Hej
>
> Jeg har lavet et program, hvori man kan oprette nogle poster til en DB.
> Når jeg vil oprette en ny, viser jeg et vindue, med nogle
indateringsfelter
> af forskellige typer.
>
>
> Nederst på mit vindue har jeg to knapper af TBitBtn. En til godkend og en
> til annuller.
>
> En del af mine indateringsfelter har noget kode på OnExit.
>
> Hvis jeg står i f.eks. et TEdit felt, som har kode på OnExit, bliver denne
> kode udført når jeg trykker på GODKEND knappen.
> Men den bliver IKKE udført, hvis jeg trykker på ALT+G (da jeg har valgt,
at
> caption på godkend knappen skal være &Godkend).
>
> Dvs. nogle af mine kunder trykker nemlig ALT+G, når de har udfyldt det de
> skal.
> Det betyder, at jeg nogle gange får jeg ikke udført den kode, som ligger
> OnExit, og derved får jeg enten en DB fejl (dobbelt post) eller jeg får
> oprettet poster, som egentlig ikke skulle være oprettet.
>
> Kan jeg gøre noget ved det ?
>
> Jeg ønsker ikke, at ændre koden alt for meget, da jeg har tonsvis af
sådanne
> vinduer i mit program. Det er efterhånden et ret omfattende program.
Altså :
Først og fremmest er det udtryk for en fatal designfejl at placere kode som
skriver ned i databasen i selve skærmbilledets events. Skærmbilleders events
kan blive trigget repetetivt og vilkårligt - endda uden brugeren gør noget
aktivt for at trigge dem - og du har ikke selv mulighed for at kontrollere
hvornår og hvordan disse events bliver trigget. Det er meget fy, Wilhelmsen!
Hvis du gerrne vil undgå en generel større omskrivning eller forandring i
layoutet i din kode/form, foreslår jeg du placerer en TActionList på din
form, og opretter to Actions med navnene ActionGodkend og ActionNulstil.
Husk f.eks med ActionGodkend at give den et korrekt hint, captionen
"Godkend" og shortcut'en Alt-G. I disse to Actions OnAction-event placerer
du så koden for henholdsvis godkend og nulstil, og efterfølgende linker du
så de to actions til bitbtn'sne med Action-propertyen - viola, jeg tror dit
problem er løst!