Results 1 to 3 of 3

Thread: record verwijderen na gebruik van VK_UP in DBGrid

  1. #1
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747

    record verwijderen na gebruik van VK_UP in DBGrid

    Ik heb een aantal basis tabellen in een DBGRID staan. Nu komt nog wel eens voor dat de gebruiker naar boven of onder scrollt, zonder dat alle 'required' velden zijn ingevuld. Ik probeer dit af te vangen in de onkeydown event van de DBGRID. Echter wordt dataset.state niet meer gezien als dsInsert en voert de code niet uit.
    Bij een beforepost event wordt er wel een cancel uitgevoerd, maar wilt vervolgens de record erboven op te slaan en dan kan niet. Er treed dan een duplicate key violation op.

    Is er dan een andere manier in een DBGrid om dit te ondervangen. Met DBEdits is het geen probleem. Daar wordt, voordat er een post wordt gedaan, een chech uitgevoerd. Is deze niet goed, wordt ook de post niet uitgevoerd. In het scherm met DBEDITS is dit een aparte button.
    Delphi is great. Lazarus is more powerfull

  2. #2
    On before post is volgens mij het juiste event. Als er een fout is, dan kun je een exception raisen die (hopelijk) ook de scroll annuleert. Dat zou je even moeten testen.

    Je zou dan in OnBeforePost zoiets krijgen als:
    Delphi Code:
    1. if Application.MessageBox('Gegevens kunnen niet worden opgeslagen. Corrigeren?', blahlblahla) = mrYes then
    2.   Abort
    3. else
    4.   Dataset.Cancel;
    Geen idee of dit werkt...

    Overigens ben ik niet zo'n voorstander van direct editen in het grid. Ik zou dat liever doen in een popup venstertje met edits, maar dat terzijde.

    Keyboard events en zulks zou ik zo min mogelijk gebruiken. Je moet dan ook je mouse events gaan afvangen en allerlei andere manieren waarop er omheen te hacken is. Als je werkt met data aware componenten, dan moet je zoveel mogelijk uitgaan van de data. Die data wordt vertegenwoordigd door je dataset, dus gebruik je bij voorkeur ook de properties, methods en events van de dataset en de fields.
    1+1=b

  3. #3
    Werkt Disablecontrols niet ?

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •