小编Ala*_*din的帖子

Delphi正确放置与ListView项目关联的气球提示

如何确保要与列表视图项目关联的气球提示正确放置,使其位于相关项目的旁边,并始终在屏幕上显示完整的气球文本?

例如,如果我在Windows资源管理器中编辑文件名时输入了无效字符,则会弹出一个气球,提示什么是无效字符。即使列表项靠近屏幕边缘或部分不在屏幕上,整个气球也会始终显示在屏幕上。尾部始终位于列表项的中间底部。气泡通常位于尾巴的右下角,但如果列表项位于屏幕的底部和/或右边缘附近,则可能在尾巴的上方或左侧。

首先,我无法使气泡和尾巴保持在列表项附近。

procedure TForm1.ListEdited(Sender: TObject; Item: TListItem;
var S: string);
var
  AHint: string;
  R: TRect;
  B : TBalloonHint;
begin
  if TRegEx.IsMatch(S, '[\\/:*?"<>|]') then
  begin
    AHint := 'A file name cannot contain any of the following' + sLineBreak +
      'characters:  \/:*?"<>|';
    R := Item.DisplayRect(drBounds);
    R.TopLeft := ClientToScreen(R.TopLeft);
    R.BottomRight := ClientToScreen(R.BottomRight);

    B := TBalloonHint.Create(Self);
    B.Description := AHint;
    B.HideAfter := 5000;
    B.ShowHint(R);

    S := TRegEx.Replace(S, '[\\/:*?"<>|]', '');
  end;
end;
Run Code Online (Sandbox Code Playgroud)

我尝试了ShowHint的各种重载,以及JEDI气球提示组件。我还调整了矩形的Top属性,当该项目位于屏幕的特定区域中时,可以使气球更好地定位,但是当该项目位于屏幕的其他部分时,气球将处于关闭位置。

Delphi 10.3 Rio,赢得7 x64。

delphi listitem

4
推荐指数
1
解决办法
237
查看次数

Delphi简单数据类型等价

在Delphi中,如果X和Y是整数,我如何编写代码使得X和Y指向相同的内存位置?如果我说的话

Y := 3;
X := 6;
write(Y);
Run Code Online (Sandbox Code Playgroud)

输出将是6?据我所知,Delphi中简单类型赋值的默认行为是值而不是引用.

delphi reference variable-assignment

1
推荐指数
1
解决办法
100
查看次数

标签 统计

delphi ×2

listitem ×1

reference ×1

variable-assignment ×1