如何使用DXDBGrid的Hint对鼠标移动到该列时进行数据的显示(50分)

  • 主题发起人 主题发起人 sbh410
  • 开始时间 开始时间
S

sbh410

Unregistered / Unconfirmed
GUEST, unregistred user!
如何使用DXDBGrid的Hint对鼠标移动到该列时进行数据的显示
 
不支持Hint吗?
如果不行可以这样变通一下。加一个Memo,设为不可见。
你可以取一定行、列的数值。显示在Memo中。把Memo显示出来就可以了。
懂了吗?

一条路不行,就换一条。
 
可能你还没有明白我的意思吧。 如果我鼠标移到到数据格为100的值,我HINT 要显示
100*2也就是200,应该怎么样呢
 
给人可以解决的法子,当然,在这里我举的例子是用EDIT来做,delphi对DBGrid处理的内部
机制是在网格(grid)上浮动一个DBEdit控件,所以用edit与用DBEdit本人觉得没多大差异,
只是前 能联接数据库,而后者可以罢了!代码如下:
procedure TForm1.Edit1Change(Sender: TObject);
begin
edit1.Hint:=IntToStr(StrToInt(edit1.Text)*2);
edit1.ShowHint:=true;
end;

good luck for u!
 
我是鼠标移动到上面啊,还有是 DXDBGrid 控件
 
WINAPI SetCapture
 
老人家,能不能说的详细点啊,
 
SetCapture 可以锁定一个控件,你看看帮助吧
 
麻烦您再讲清楚可以吗,锁定了干什么呢,把它绑起来?
 
HWND SetCapture(hwnd)
说明:SetCapture函数向属于当前线程的给定窗口设置鼠标捕获。一旦某一窗口捕获了鼠标,则不管光标是否在该窗口的边界内,所有鼠标输入都直接对着该窗口。同时只能有一个窗口捕获鼠标。
若鼠标光标正在其他线程创建的窗口之上,则仅当按下了一个鼠标按钮时,系统才将鼠标输入指向给定的窗口。
  参数:hwnd 标识当前线程中将捕获鼠标的窗口。
返回值:若函数成功,返回值是原来捕获鼠标的窗口的句柄。若没有这个窗口,则返回值为NULL。
  注释:只有前台窗口可捕获鼠标。当后台窗口试图这样做时,该窗口只能接收光标热点位于该窗口可见部分中时发生的鼠标事件的消息。另外,即使前台窗口未捕获鼠标,用户也可单击另一个窗口使其进入前台。
当窗口不再需要所有鼠标输入时,创建该窗口的线程应调用PeleaseCapture函数释放鼠标。
不得调用该函数为其它过程捕获鼠标输入。Setcapture


HWND SetCapture(hwnd)
  说明:SetCapture函数向属于当前线程的给定窗口设置鼠标捕获。一旦某一窗口捕获了鼠标,则不管光标是否在该窗口的边界内,所有鼠标输入都直接对着该窗口。同时只能有一个窗口捕获鼠标。
若鼠标光标正在其他线程创建的窗口之上,则仅当按下了一个鼠标按钮时,系统才将鼠标输入指向给定的窗口。
  参数:hwnd 标识当前线程中将捕获鼠标的窗口。
  返回值:若函数成功,返回值是原来捕获鼠标的窗口的句柄。若没有这个窗口,则返回值为NULL。
  注释:只有前台窗口可捕获鼠标。当后台窗口试图这样做时,该窗口只能接收光标热点位于该窗口可见部分中时发生的鼠标事件的消息。另外,即使前台窗口未捕获鼠标,用户也可单击另一个窗口使其进入前台。
当窗口不再需要所有鼠标输入时,创建该窗口的线程应调用PeleaseCapture函数释放鼠标。
不得调用该函数为其它过程捕获鼠标输入。
 
新建工程,窗体上放置一个Button,一个Edit.使用方法:先点击button,然后点击想要得到句柄的窗体.下面是代码
unit Unit1;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var Form1: TForm1;

implementation

{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
setcapture(handle); // 设置捕获鼠标输入
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var point : TPoint;
hwnd : THandle;
begin
point.x := x;
point.y := y;
point := ClientToScreen(point); // 客户区坐标转换到屏幕坐标
hwnd := WindowFromPoint(point); // 取鼠标点击的窗体句柄
ReleaseCapture; // 终止捕获鼠标输入
if hwnd=handle then edit1.text := '没有点击其他窗体!'
else
edit1.Text := inttostr(hwnd); // 将捕捉到的窗体句柄显示在edit1中
end;

end.

To ;sbh410
你给的分太少了
 
分少你可以喊,我这里还有点分。只要解决了问题,分不是问题。
 
后退
顶部