Hallo,
bei OnDblClick reagiert das gesamte cxGrid, obwohl du nicht auf einem Feld geklickt hast. Du möchtest aber doch einen Datensatz anklicken, wo sich ein Detailformular zum Bearbeiten öffnet.
Ich würde dir raten OnCellDblClick zu verwenden. Das reagiert nur wenn du auf einen Datensatz klickst. Außerdem würde ich das cxGrid grundsätzlich sperren, d. h. bei OptionData des DBTabelviews die Eigenschaften Deleting, Editing und Inserting auf False setzen (Appending ist standardmäßig False). Vorausgesetzt du willst im Grid sowieso keine Daten bearbeiten.
Das Detailformular würde ich im Event OnCellDblClick erzeugen und mit Showmodal anzeigen (danach natürlich Free(n)). Dann kann man nur noch das zuletzt geöffnete Formular bearbeiten und das Grid nicht anklicken, somit auch keinen Datensatz wechseln.
So z. B.
Delphi-Quellcode:
frmDetail := TfrmDetail.Create(self);
try
case frmDetail.ShowModal of
mrOk : begin
.... MachWas;
end;
mrCancel : begin
.... MachNüscht;
end;
end;
finally
frmDetail.Free;
end;
Ich hoffe ich konnte ein wenig helfen.
Gruß
Matthias
<edit> Fehler beseitigt.