Verhindern, dass sich Manipulation an einem DBEdit-Feldern auf Zeile im DBGrid auswirkt



  • Hallo zusammen,

    da ich erst seit kurzem mit der Materie des C++ Builders befasse und somit noch nicht viel Erfahrungen habe, hoffe ich, dass mir dieses kompetene Forum eine Hilfe ist.

    Also ich habe kleines und einfaches Programm. Das Programm besteht aus folgenden
    Komponenten:

    -- einer OraSession
    -- einer OraQuery
    -- einer OraDataSource
    -- einem DBGrid
    -- einem DBNavigator
    -- DBEDitfeldern (Anzahl entsprechend der Spalten aus dem DBGrid)
    -- und eine Button mit dem es möglich ist Werte zu speichern, die im
    DBEdit1-Feld verändert wurden.

    Wie ihr sehen könnt handelt es sich hier um keine Raketentechnik. Ich lese nur die Werte aus der DB aus. Gebe Sie im Grid und in den DBEdit-Feldern wieder.
    Bin in der Lage im DBEdit1-Feld den String zu erweitern und kann den neuen String bequem abspeichern. Sodass der neue Wert auch im Grid zu sehen ist.
    Das ist auch die Funktionalität, die ich möchte.

    Jetzt aber zu meinem Problem!!!
    Dem User ist es möglich, wenn er das DBEdit1-Feld bzw. die Werte daraus entfernt und anschließent auf das Grid klickt, dass er die entsprechende Zeile im Grid mitlöscht.
    Und dies darf ihm unter keinen Umständen und zu keiner Zeit möglich sein.
    Ebenfalls ist die Aktion durchführbar, wenn er die Zeile löscht und mit Hilfe des DBNavigator eine Zeile weiterklickt.

    Leider habe ich absolut keine Ahnung oder einen Ansatz, wie ich es schaffe, dass der User diese Aktion nicht ausführen kann.

    Ich habe das DBGrid schon disabled und auch auf ReadOnly gesetzt. Erfolglos!!!

    Ich hoffe, ich habe mich klar genug ausgedrückt, sodass ihr das Problem nachvollziehen könnt.

    Für eure Hilfe danke ich im voraus !



  • Das hat nicts mit dem DBGrid zu tun.
    Das DBEdit speichert die Änderungen in der Datenbank beim Verlassen. Die Grid zeigt nur den aktuellen Zustand an.



  • Hallo,

    du kannst die Änderungen verhindern, indem du die Eigenschaft ReadOnly setzt.
    DBEdit->ReadOnly = true;

    Beim DBNavigator kannst du den Löschen-Button ausblenden. Aber Vorsicht der DBNavigator reagiert trotzdem noch auf die Tastenkombination Strg+Entf und lässt auch bei ausgeblendetem Löschen-Button das Löschen von Datensätzen zu. Hier hilft nur, das OnKeyDown-Ereignis im TForm abfangen und bei Strg+Entf den Parameter Key auf NULL setzen.


Anmelden zum Antworten