[ franjo_tahi @ 10.12.2008. 09:20 ] @
Trebao bih postaviti dbedit u dbgrid, tako da se editiranje vrši u njemu.

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;


Ideja kako to riješiti?
[ savkic @ 10.12.2008. 12:56 ] @
Kontrolu treba da prikažeš i otpočneš izmenu ne u OnDraw eventu već posle pritiska mišem na datu ćeliju, pritiska tastera i slično kako se već okida default editor u gridu.