Q&A

  • DBGRID에서 힌트를 마우스 이동할
안녕하십니까? 델피언 여러분
오늘도 또 묻고만 가는군요 ...
여러 많은분들의 자료를 바탕으로 고마움을 항상 느끼고 있습니다.

이번에도 많은 조언 부탁드립니다.

다름이 아니라 DBGRID에 마우스를 올리면 해당 레코드의 컬럼에 해당 하는 힌트박스를 뛰울려고 합니다.

이곳 저곳 기웃거려서 어찌어찌 해볼려구 했는데.. 도저히 안되는군요..

아래 다른분들이 만드신 것을 참고 하여 해보았습니다만 DBGrid1MouseUp에 놓으면 마우스를 해당 레코드에
찍어야만 표시가 되네요.
저는 마우스를 움직이면 바로 보여 주고 싶은데..
그래서 MouseMove에서 동작하도록 했더니 ㅠ.ㅠ. Access에러가 나버리네요


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Db, DBTables, Grids,  DBGrids;

type
  TForm1 = class(TForm)
    Database1: TDatabase;
    Query1: TQuery;
    Table1: TTable;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    procedure DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
      s:string;
      pos:TPoint;
      r:TRect;
      h:THintWindow;
      // 박스의 위치 크기

begin
        h := nil;
        getcursorpos(pos);
        with r do        begin
            top:=pos.y;
            left:=pos.x;
            right:=pos.x+160;
            bottom:=pos.y+50;
        end;

        s:=table1.fieldbyname('name').asstring + table1.fieldbyname('area').asstring;
        h:=THintWindow.Create(self);//힌트 박스생성 캬캬캬
        with h do      begin
              color:=clyellow;
              activatehint(r,s);
              application.ProcessMessages;
              sleep(1000);
              releasehandle;
              free;
        end;
end;

end.
0  COMMENTS