gpt4 book ai didi

Delphi:DBGrid 列标题提示 - 强制重置提示?

转载 作者:行者123 更新时间:2023-12-01 22:17:09 25 4
gpt4 key购买 nike

我认为我将列标题提示实现到我自己的 DBGrid 中。这似乎很简单 - 我想。

我添加

标题提示:TString

包含以下格式的信息:

名称=值

其中,对于非基于字段的列,名称为 (0-99);对于基于字段的列,名称为 fieldname。Value是该列的Hint,crlf是\n。

一切正常,OnMouseMove 是基于位置的提示。

但是:只显示第一个提示,接下来的提示则不显示。我认为这是因为提示机制在鼠标到达“控件”时被激活......当我离开控件并再次出现时,我得到另一个提示 - 一次。不管我将 ShowHint 设置为关闭。

因为如果可能的话我不想创建自己的HintWIndow,所以我寻找一种方法来重置Applicaion的Hint机制相信:这是这个控件中的第一种情况。我可以以任何方式执行此操作,例如“发送消息”,或者调用“cancelhint”(如果存在)等。

你知道这个方法吗?

感谢您的帮助,祝您有美好的一天!

问候: dd

最佳答案

您可以在覆盖的 MouseMove 中重新激活提示,例如:

type
TDBGrid = class(DBGrids.TDBGrid)
private
FLastHintColumn: Integer;
protected
procedure CMHintShow(var Message: TCMHintShow); message CM_HINTSHOW;
function GetColumnTitleHint(Col: Integer): string;
procedure MouseMove(Shift: TShiftState; X: Integer; Y: Integer); override;
public
constructor Create(AOwner: TComponent); override;
end;


procedure TDBGrid.CMHintShow(var Message: TCMHintShow);
var
Cell: TGridCoord;
begin
if not Assigned(Message.HintInfo) or not (dgTitles in Options) then
inherited
else
begin
Cell := MouseCoord(Message.HintInfo^.CursorPos.X, Message.HintInfo^.CursorPos.Y);
if Cell.Y = 0 then
begin
FLastHintColumn := Cell.X - 1;
Message.HintInfo^.HintStr := GetColumnTitleHint(FLastHintColumn);
end
else
FLastHintColumn := -1;
end;
end;

function TDBGrid.GetColumnTitleHint(Col: Integer): string;
begin
Result := Columns[Col].Title.Caption + ' hint';
end;

procedure TDBGrid.MouseMove(Shift: TShiftState; X, Y: Integer);
var
Cell: TGridCoord;
begin
inherited MouseMove(Shift, X, Y);
if dgTitles in Options then
begin
Cell := MouseCoord(X, Y);
if Cell.Y = 0 then
begin
if Cell.X - 1 <> FLastHintColumn then
Application.ActivateHint(Mouse.CursorPos);
end
else
Application.CancelHint;
end;
end;

constructor TDBGrid.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FLastHintColumn := -1;
end;

GetColumnTitleHint 只是一个示例,您应该实现它以从 TitleHints 属性返回正确的值。

希望这有帮助。

关于Delphi:DBGrid 列标题提示 - 强制重置提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7764018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com