In der Version 6.53 existiert ein Designfehler im cxGrid, wenn in der Event OnBeforePost eine Messagebox aufgerufen wird
procedure TForm1.dxMemData1BeforePost(DataSet: TDataSet);
begin
if MessageDlg('save record?', mtConfirmation,mbYesNo,0) <> mrYes then
Abort;
end;
Der Dialog sollte eigentlich so aussehen:

Durch den Fehler sieht es aber so aus:

Als Workaround wurde mir von DevExpress folgendes empfohlen:
procedure TForm1.dxMemData1BeforePost(DataSet: TDataSet);
begin
cxGrid1.Perform(WM_SETREDRAW, Integer(false), 0);
try
if MessageDlg('save record?', mtConfirmation, mbYesNo, 0) <> mrYes then
Abort;
finally
cxGrid1.Perform(WM_SETREDRAW, Integer(true), 0);
end;
end;
Tags: Delphi Delphi 2009 DevGrid