Показать сообщение отдельно
  #8  
Старый 28.01.2008, 21:06
~ SaM ~ ~ SaM ~ вне форума
Начинающий
 
Регистрация: 05.01.2007
Адрес: Днепропетровск
Сообщения: 141
Репутация: 25
По умолчанию

Для StringGrid можно так. Но это для каждой ячейки.

Код:
TForm1 = class(TForm)
  StringGrid1: TStringGrid;
  procedure StringGrid1MouseMove(Sender: TObject;Shift: TShiftState; X, Y: Integer);
  procedure FormCreate(Sender: TObject);
private
  {Private declarations}
  Col : integer;
  Row : integer;
public
  {Public declarations}
end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  StringGrid1.Hint := '0 0';
  StringGrid1.ShowHint := True;
end;

procedure TForm1.StringGrid1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
  r: integer;
  c: integer;
begin
  StringGrid1.MouseToCell(X, Y, C, R);
  with StringGrid1 do
  begin
    if ((Row <> r) or(Col <> c)) then
    begin
      Row := r;
      Col := c;
      Application.CancelHint;
      StringGrid1.Hint :=IntToStr(r)+#32+IntToStr(c);
    end;
  end;
end;

Ну а по логике вещей, можно то же самое сделать и для DBGrid.

Для того, чтобы в DBGrid можно было использовать Cols и Rows, необходимо зарегестрировать новый компонент DbGrid, но уже со свойствами Col и Row. Вот код:

Код:
interface

uses

  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, Grids, DBGrids, DB, Menus;

type

  TDBGridVUB = class(TDBGrid)
  private
    { Private declarations }
  protected
    { Protected declarations }
  public
    property Canvas;
    function CellRect(ACol, ARow: Longint): TRect;
    property Col;
    property Row;

    procedure Register;

implementation

procedure Register;
begin

  RegisterComponents('new_DBGrid', [TDBGridNew]);
end;

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

  Result := inherited CellRect(ACol, ARow);
end;

end.

Ответить с цитированием