gpt4 book ai didi

macos - 显示 TStringGrid 单元格的工具提示

转载 作者:行者123 更新时间:2023-12-02 02:41:44 26 4
gpt4 key购买 nike

我试图在每个单元格的 TStringGrid 控件上显示工具提示。目的是当单元格内容不适合单元格时显示工具提示。现在我什至无法使工具提示显示鼠标悬停在其上的单元格的正确内容。

到目前为止,我尝试的是使用 Application.hint 和 MyGrid.Hint 并将其设置为单元格的内容。看起来它总是在提示触发之前获取光标下半秒左右的单元格的内容。

甚至尝试设置鼠标移动事件并设置工具提示,如下所示:

procedure TForm1.GridMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single);
var
Row : Integer;
Column: TColumn;
Col : Integer;
sHint : string;
begin
Row := ProcessGrid.RowByPoint(X,Y);
Column := ProcessGrid.ColumnByPoint(X,Y);
if Assigned(Column) then
Col := Column.Index
else
Col := -1;
if (Row>-1) and (Col>-1) then
begin
sHint := ProcessGrid.Cells[Col,Row];
// Application.Hint := sHint;
ProcessGrid.Hint := sHint;
end;
Caption := Format('Col:%d Row:%d Hint: %s', [Col, Row, sHint]);
end;

上述代码的表单标题显示了正确的单元格内容。然而,提示并没有,我无法理解其原因。这一定是我忽略的简单事情。

使用 Delphi 10.3.2 并尝试使其在 macOS 上运行。

最佳答案

试试这个代码

procedure TForm1.GridMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
Row : Integer;
Col : Integer;
begin
Grid.MouseToCell(X, Y, Col, Row);

if (Row >= 0) and (Col >= 0) and (Grid.Hint <> Grid.Cells[Col, Row]) then
begin
Application.CancelHint;
Grid.Hint:= Grid.Cells[Col,Row];
end;
end;

下一个代码显示当单元格内容不适合单元格时的提示

procedure TForm1.GridMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
Row : Integer;
Col : Integer;
begin
Grid.MouseToCell(X, Y, Col, Row);

if (Row >= 0) and (Col >= 0) and (Grid.Hint <> Grid.Cells[Col, Row]) and
(Grid.Canvas.TextWidth(Grid.Cells[Col, Row]) > Grid.ColWidths[Col]) then
begin
Application.CancelHint;
Grid.Hint:= Grid.Cells[Col,Row];
end;
end;

关于macos - 显示 TStringGrid 单元格的工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57747499/

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