gpt4 book ai didi

delphi - 如何获得 TStringGrid 中单元格的提示,使其显示得更流畅?

转载 作者:行者123 更新时间:2023-12-03 14:52:15 25 4
gpt4 key购买 nike

我正在运行 Lazarus 0.9.30。

我在表单上有一个标准的 TStringGrid,并且希望当我将鼠标指针移到列标题上时显示不同的提示。我正在使用此代码来执行此操作,并且它可以工作,但是当我实际上希望它随着鼠标指针在其上移动时进行更改时,您经常必须单击单元格才能获得更改的提示。我将所有提示存储在一个集合中,我使用列索引作为键进行搜索。有没有办法让提示显示更流畅?

procedure TTmMainForm.SgScoutLinkMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
R, C: Integer;
begin
R := 0;
C := 0;

SgScoutLink.MouseToCell(X, Y, C, R);

with SgScoutLink do
begin
if (R = 0) then
if ((C >= 3) and (C <= 20)) then
begin
SgScoutLink.Hint := FManager.ScoutLinkColumnTitles.stGetColumnTitleHint(C-3);
SgScoutLink.ShowHint:= True;
end; {if}
end; {with}
end;

最佳答案

将事件处理程序分配给 TApplication.OnShowHintTApplicationEvents.OnShowHint事件,或子类 TStringGrid拦截 CM_HINTSHOW信息。其中任何一个都可以让您访问 THintInfo用于控制提示窗口行为的记录。您可以自定义THintInfo.CursorRect的坐标根据需要加入成员(member)。提示窗口重新激活最新的Hint每当鼠标移动到该矩形之外时,属性文本(可以在显示之前使用 THintInfo.HintStr 成员进行自定义)。矩形越小,重新激活提示窗口的频率就越高。此功能允许 UI 控件在其客户区域内具有多个子部分,当鼠标在同一 UI 控件周围移动时,这些子部分会显示不同的提示字符串。

TApplication.HintShortPause 的值属性(或通过拦截 CM_HINTSHOWPAUSE 消息)控制提示窗口在重新激活之前是否消失。如果将暂停值设置为零,提示窗口会立即更新其文本而不会消失。如果将暂停值设置为非零值,只要鼠标停留在同一 UI 控件上,提示窗口就会消失,然后在经过指定的毫秒数后重新出现。

例如:

procedure TTmMainForm.FormCreate(Sender: TObject);
begin
Application.OnShowHint := AppShowHint;
end;

procedure TTmMainForm.FormDestroy(Sender: TObject);
begin
Application.OnShowHint := nil;
end;

procedure TTmMainForm.AppShowHint(var HintStr: String; var CanShow: Boolean; var HintInfo: THintInfo);
var
R, C: Integer;
begin
if HintInfo.HintControl = SgScoutLink then
begin
R := 0;
C := 0;
SgScoutLink.MouseToCell(HintInfo.CursorPos.X, HintInfo.CursorPos.Y, C, R);
if (R = 0) and (C >= 3) and (C <= 20) then
begin
HintInfo.CursorRect := SgScoutLink.CellRect(C, R);
HintInfo.HintStr := FManager.ScoutLinkColumnTitles.stGetColumnTitleHint(C-3);
end;
end;
end;

编辑:我刚刚注意到您正在使用 Lazarus。我所描述的是如何在Delphi中处理这个问题。我不知道它是否也适用于拉撒路。

关于delphi - 如何获得 TStringGrid 中单元格的提示,使其显示得更流畅?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9278892/

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