现在的位置: 首页 > 综合 > 正文

DBGrid hint

2013年10月19日 ⁄ 综合 ⁄ 共 3429字 ⁄ 字号 评论关闭
 procedure   TForm1.DBGrid1MouseMove(Sender:   TObject;  
      Shift:   TShiftState;   X,   Y:   Integer);  
  var  
      Cell:   TGridCoord;  
  begin  
      inherited;  
      Cell:=DBGrid1.MouseCoord(X,Y);  
      if   (Cell.Y>0)   then                   //Cell.Y=0表示移动到标题上了,不对  
      begin  
          DBGrid1.Hint:=format('年龄为:%g',[ADOQueryOrder0.FieldbyName('年龄').AsFloat]);  
          DBGrid1.ShowHint:=True;  
      end     else  
      begin  
          DBGridEh3.Hint:='';  
          DBGridEh3.ShowHint:=False;  
      end;  
  end;
------------
procedure Tmain_f.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
   var
      Cell:TGridCoord;
begin
   inherited;
      Cell:=DBGrid1.MouseCoord(X,Y);
      if (Cell.Y>0)then                   //Cell.Y=0表示移动到标题上了,不对
      begin
        if DBGrid1.SelectedField.FieldName='City' then
        begin
          DBGrid1.Hint:=DBGrid1.SelectedField.AsString;
          DBGrid1.ShowHint:=True;
        end;
      end else
      begin
          DBGrid1.Hint:='';
          DBGrid1.ShowHint:=False;
      end;
end;
===============================================
用hint比较麻烦  
   
  用一个label来显示吧,将label放在panel里,panel颜色设成clInfoBk;  
   
  在dbgrid的oncellclick里写  
   
  procedure   TForm1.DBGrid1CellClick(Column:   TColumn);  
  var  
      size1:size;  
      po:tpoint;  
  begin  
      label1.Caption:=dbgrid1.SelectedField.AsString;  
      gettextextentpoint32(getdc(dbgrid1.Handle),pchar(label1.caption),length(label1.caption),size1);  
      panel1.Width:=size1.cx;  
      getcursorpos(po);  
      panel1.Top:=po.y-form1.Top;  
      panel1.Left:=po.X-form1.Left;  
      panel1.Visible:=true;  
  end;  
   
  当鼠标经过panel里将panel隐藏  
   
  procedure   TForm1.Panel1MouseMove(Sender:   TObject;   Shift:   TShiftState;   X,  
      Y:   Integer);  
  begin  
      panel1.Visible:=false;  
  end;
============================
//参考  
  type  
      TForm1   =   class(TForm)  
          DBGrid1:   TDBGrid;  
          DataSource1:   TDataSource;  
          Table1:   TTable;  
          procedure   DBGrid1MouseMove(Sender:   TObject;   Shift:   TShiftState;   X,  
              Y:   Integer);  
          procedure   DBGrid1DrawColumnCell(Sender:   TObject;   const   Rect:   TRect;  
              DataCol:   Integer;   Column:   TColumn;   State:   TGridDrawState);  
      private  
          {   Private   declarations   }  
          FGridCoord:   TGridCoord;  
          FMousePoint:   TPoint;  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      Form1:   TForm1;  
   
  implementation  
   
  {$R   *.dfm}  
   
  procedure   TForm1.DBGrid1MouseMove(Sender:   TObject;   Shift:   TShiftState;   X,  
      Y:   Integer);  
  var  
      vGridCoord:   TGridCoord;  
  begin  
      vGridCoord   :=   TDBGrid(Sender).MouseCoord(X,   Y);  
      if   (FGridCoord.X   =   vGridCoord.X)   and   (FGridCoord.Y   =   vGridCoord.Y)   then   Exit;  
      FMousePoint   :=   Point(X,   Y);  
      FGridCoord   :=   vGridCoord;  
      TDBGrid(Sender).Refresh;  
  end;  
   
  procedure   TForm1.DBGrid1DrawColumnCell(Sender:   TObject;   const   Rect:   TRect;  
      DataCol:   Integer;   Column:   TColumn;   State:   TGridDrawState);  
  var  
      vGridCoord:   TGridCoord;  
  begin  
      vGridCoord   :=   TDBGrid(Sender).MouseCoord(Rect.Left,   Rect.Top);  
      if   (FGridCoord.X   =   vGridCoord.X)   and   (FGridCoord.Y   =   vGridCoord.Y)   then  
          Caption   :=   Column.Field.DisplayText;  
  end;  
 
========================
Label1.Caption:=DBGrid1.SelectedField.AsString +DBGrid1.SelectedField.FieldName;
if DBGrid1.SelectedField.FieldName='City' then
DBGrid1.Hint:=DBGrid1.SelectedField.AsString;

抱歉!评论已关闭.