Позиция ячейки в TDBGrid

В TCustomGrid определен метод CellRect, который, к сожалению, защищен. Это означает, что даный метод доступен только для TCustomGrid и его наследников. Но все-таки существует немного мудреное решение вызова данного метода:

type

 TMyDBGrid = class(TDBGrid)

  public

  function CellRect(ACol, ARow: Longint): TRect;

 end;

function TMyDBGrid.CellRect(ACol, ARow: Longint): TRect;

begin

 Result := inherited CellRect(ACol, ARow);

end;

Вы можете сделать приведение типа вашего DBGrid к TMyDBGrid (это возможно, поскольку CellRect статический метод) и вызвать CellRect:

Rectangle := TMyDBGrid(SomeDBGrid).CellRect(SomeColumn, SomeRow);

procedure TfmLoadIn.DBGrid1DrawColumnCell(Sender: TObject;

 const Rect: TRect; DataCol: Integer; Column: TColumn;

 State: TGridDrawState);

const

 Disp = 2; //Правильно выравниваем компонент

begin

 inherited;

 if (gdFocused in State) then

 begin

  if (Column.FieldName = 'TYPEDescription') then

  begin

  dlTYPEDescription.Left := Rect.Left + DBGrid1.Left + Disp;

  dlTYPEDescription. := Rect. + DBGrid1.top + Disp;

  dlTYPEDescription.Width := Rect.Right - Rect.Left;

  dlTYPEDescription.Height := Rect.Bottom - Rect.;

  dlTYPEDescription.Visible := True;

  end;

 end;

end;


Взято с http://delphiworld.narod.ru

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...