U stvari, moja kontrola, koja je nasljednik dbedita, a služi za editiranje datuma/vremena.
Pokušao sam je staviti kao checkbox u OdDrawColumnCell, ali ne radi dobro.
1. ako provjeravam prije iscrtavanja da li je state gdSelected ili gdFocused - iscrtava se samo kad sam na koloni.
2. ako ne provjeravam state već ju iscrtavam uvijek - poziva se beskonačno...
3. klikom na kolonu - dbedit i početkom editiranja - editira se podatak u gridu, a ne u dbeditu i ne vidi se unos.
Problem završetka unosa sam riješio u proceduri dbedit.OnKeyPress. Napravim post u dataset i gridu dam focus. To je ok. Problem je početak editiranja...
Code:
procedure TfmSud.dbgDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (Column.Field.FieldName = dbDatKam.DataField) and (gdSelected in state) then
begin
dbDatKam.Left := Rect.Left + DBG.Left + 2;
dbDatKam.Top := Rect.Top + DBg.top + 2;
dbDatKam.Width := Rect.Right - Rect.Left;
dbDatKam.Height := Rect.Bottom - Rect.Top;
dbDatKam.BringToFront;
end;
end;
procedure TfmSud.dbgDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (Column.Field.FieldName = dbDatKam.DataField) and (gdSelected in state) then
begin
dbDatKam.Left := Rect.Left + DBG.Left + 2;
dbDatKam.Top := Rect.Top + DBg.top + 2;
dbDatKam.Width := Rect.Right - Rect.Left;
dbDatKam.Height := Rect.Bottom - Rect.Top;
dbDatKam.BringToFront;
end;
end;
Ideja kako to riješiti?