Ik probeer al een tijdje in een dbgrid met checkboxen te werken voor boolean-velden. Nu is dat op zich geen probleem behalve dat ik de standaard checkboxen van delphi niet zo mooi vind
Met wat speurwerk ben ik erachter gekomen hoe ik dat voor mekaar krijg in de DrawColumnCell event van de dbgrid.
Het idee is dat zodra je de cell gaat editen er een dbcheckbox overheen wordt getekend die gekoppeld is aan het bijbehorende dataveld in de tabel. Ben je niet aan het editen dan tekent het programma de checkbox mbv de DrawFrameControl.
In deze zit juist het probleem, ik heb een leuk setje componenten gedownload, raize components 3 en ik wil dat hij deze tekend ipv de standaard checkbox uit de windows.pas unit.
Ik zal hier ff wat code pasten zodat het wat duidelijker wordt:
[EDIT] ff voor de duidelijkheid, is de cell gefocused zie ik dus WEL mijn raize checkbox he
Ik moet dus erachter zien te komen wat ik neer moet zetten ipv DFC_BUTTON (en evt drawstate maar k neem aan dat die hetzelfde is) om mijn Raize checkbox tevoorschijn te toveren.
Iemand enig idee hoe ik daarachter ga komen? Heb GEEN source bij die raize componenten..
Alvast bedankt voor reactie!
Met wat speurwerk ben ik erachter gekomen hoe ik dat voor mekaar krijg in de DrawColumnCell event van de dbgrid.
Het idee is dat zodra je de cell gaat editen er een dbcheckbox overheen wordt getekend die gekoppeld is aan het bijbehorende dataveld in de tabel. Ben je niet aan het editen dan tekent het programma de checkbox mbv de DrawFrameControl.
In deze zit juist het probleem, ik heb een leuk setje componenten gedownload, raize components 3 en ik wil dat hij deze tekend ipv de standaard checkbox uit de windows.pas unit.
Ik zal hier ff wat code pasten zodat het wat duidelijker wordt:
[EDIT] ff voor de duidelijkheid, is de cell gefocused zie ik dus WEL mijn raize checkbox he
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| procedure TForm1.RzDBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
const IsChecked : array[Boolean] of Integer =
(DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
var
DrawState: Integer;
DrawRect: TRect;
begin
if (gdFocused in State) then
begin
if (Column.Field.FieldName = dbcCompleted.DataField) then
begin
dbcCompleted.Left := Rect.Left + RzPanel1.Width + RzDBGrid1.Left + 9;
dbcCompleted.Top := Rect.Top + RzSplitter1.Top + RzDBGrid1.top + 2;
dbcCompleted.Width := Rect.Right - Rect.Left;
dbcCompleted.Height := Rect.Bottom - Rect.Top;
dbcCompleted.Visible := True;
end
end
else
begin
if (Column.Field.FieldName = dbcCompleted.DataField) then
begin
DrawRect:=Rect;
InflateRect(DrawRect,-1,-1);
DrawState := ISChecked[Column.Field.AsBoolean];
RzDBGrid1.Canvas.FillRect(Rect);
DrawFrameControl(RzDBGrid1.Canvas.Handle, DrawRect,
DFC_BUTTON, DrawState);
end;
end;
end; |
Ik moet dus erachter zien te komen wat ik neer moet zetten ipv DFC_BUTTON (en evt drawstate maar k neem aan dat die hetzelfde is) om mijn Raize checkbox tevoorschijn te toveren.
Iemand enig idee hoe ik daarachter ga komen? Heb GEEN source bij die raize componenten..
Alvast bedankt voor reactie!
[ Voor 5% gewijzigd door Verwijderd op 19-06-2004 16:54 ]