Announcement

Collapse
No announcement yet.

DBGrid ohne Insert

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DBGrid ohne Insert

    Hallo zusammen,

    teilweise lasse ich zu, dass Daten direkt im Grid bearbeitet werden. Blättert nun jemand mit der Pfeiltatse durch die Daten und kommt ans Ende, wird ihm beim nächsten Klick ein neuer Datensatz angelegt. Wie kann ich das einfach verhindern?

    Gruß
    Gerd

  • #2
    Du kannst dies manuell lösen. Lösche in den DBGrid-Options 'dgEditing'. Damit kann über das Grid nicht mehr direkt editiert werden. In 'OnKeyPress' des Grids editierst Du den Datensatz, wenn die Taste Return ist:
    <PRE>
    procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
    if (Ord(key)=VK_RETURN) and ( dsEdit <> DBGrid1.DataSource.State)
    then DBGrid1.DataSource.Edit;
    end;
    </PRE>
    Damit Du nun noch Daten eingeben kannst, mußt Du in der angekoppelten TDataset-Komponente das Grid ein- und wieder ausschalten:
    <PRE>
    // Edit im Grid zulassen, wenn die Tabelle in den Editmode versetzt wird
    procedure TForm1.AdsTable1BeforeEdit(DataSet: TDataSet);
    begin
    DBGrid1.Options := DBGrid1.Options + [dgEditing];
    end;

    //bei einem Post bzw Cancel wird das Editieren wieder abgeschaltet
    procedure TForm1.AdsTable1AfterPost(DataSet: TDataSet);
    begin
    DBGrid1.Options := DBGrid1.Options - [dgEditing];
    end;
    </PRE&gt

    Comment


    • #3
      @Gerd: Hi Gerd,
      du kannst kannst das ganz einfach verhindern, indem du bei deiner Query-Komponente im Ereignis "BeforeInsert" es mittels dem Befehl "Abort" verhinderst. Das müsste eigentlich alles gewesen sein.

      mfg
      And

      Comment

      Working...
      X