gpt4 book ai didi

delphi - 是否可以确定 dbEdit 中的文本是否比可见文本长?

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

在某些表单上,我的 dbEdits 有时不够宽,无法显示其字段可能包含的所有文本。对于他们,我有以下代码:

procedure Tgm12edLots.dbeLotNameMouseEnter(Sender: TObject);
begin
with dbeLotName do begin
ShowHint := True;
Hint := Text;
end;
end;

我想避免显示所有文本是否可见的提示,但我不知道如何测试该条件。

感谢您的任何提示/建议!

最佳答案

这是一个快速版本(没有 TBitmap 开销),它考虑了 Edit 控件的边距(即 EM_SETMARGINS)。

使用下面的IsEditTextOverflow来确定文本是否溢出可见区域。

type
TCustomEditAccess = class(TCustomEdit);

function EditTextWidth(Edit: TCustomEdit): Integer;
var
DC: HDC;
Size: TSize;
SaveFont: HFont;
begin
DC := GetDC(0);
SaveFont := SelectObject(DC, TCustomEditAccess(Edit).Font.Handle);
GetTextExtentPoint32(DC, PChar(Edit.Text), Length(Edit.Text), Size);
SelectObject(DC, SaveFont);
ReleaseDC(0, DC);
Result := Size.cx;
end;

function EditVisibleWidth(Edit: TCustomEdit): Integer;
var
R: TRect;
begin
SendMessage(Edit.Handle, EM_GETRECT, 0, LPARAM(@R));
Result := R.Right - R.Left;
end;

function IsEditTextOverflow(Edit: TCustomEdit): Boolean;
begin
Result := EditTextWidth(Edit) > EditVisibleWidth(Edit);
end;

关于delphi - 是否可以确定 dbEdit 中的文本是否比可见文本长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9941787/

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