procedure DrawGridCell(Canvas:TCanvas; Rect:TRect; Align:TAlignment; State:TGridDrawState; Txt:String);
var tmp, X : Integer;
begin
tmp := Canvas.TextWidth(Txt);
Case Align of
taRightJustify : X := Rect.Right - tmp;
taCenter : X := Rect.Left + ((Rect.Right-Rect.Left) div 2) - (tmp div 2);
Else X := Rect.Left;
end;
If (gdSelected in State) and (gdFocused in State) then begin
Canvas.Font.Color := clHighlightText;
Canvas.Brush.Color := clHighlight;
end;
Canvas.TextRect(Rect, X, Rect.Top+2, Txt);
end;
която после я ползвам по следния начин:
procedure TfrmZOConfig.DrawGrid(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var Txt : String;
begin
If EDM.EmpPersInsCDS.IsEmpty then Exit;
If DataCol in [0,1,2] then begin
grKids.DefaultDrawColumnCell(Rect, DataCol, Column, State);
Exit;
end;
Txt := '';
If DataCol = 3 then
If EDM.EmpPersInsCDSForeigner.AsBoolean then
Txt := txtDa Else Txt := txtNe;
If DataCol = 4 then
If EDM.EmpPersInsCDSZOType.AsInteger in [0..(EDEditPersInsured.cbZOType.Items.Count - 1)] then
Txt := EDEditPersInsured.cbZOType.Items[EDM.EmpPersInsCDSZOType.AsInteger];
If DataCol = 5 then begin
If EDM.EmpPersInsCDSPayed.AsBoolean then
Txt := txtDa
Else
Txt := txtNe;
end;
DrawGridCell(grKids.Canvas, Rect, grKids.Columns[DataCol].Alignment, State, Txt);
end;
Running over the same old ground
What have we found ?