TEdit(或TCombo,TButtonedEdit)中的文本总是顶部对齐。我没有找到任何属性来改变对齐方式。通常这不是问题,除非我想设置更大的高度。我在谷歌上搜索了一下。有一些解决方案可以通过发送Windows消息来调整左右边距。但是我不知道,如何调整垂直对齐。我不想用大一点的字体.你有什么主意吗?
TEdit
rbl8hiat1#
如果有这样的选项,它将通过样式的方式应用。EDIT control styles list不包含这样的样式,因此结论是底层控件不提供此功能。你要么做一个新的控件,要么自己接管这幅画,这两种都不是特别吸引人。
EDIT
c3frrgcw2#
一个老问题的灰尘...我在一个类似的c++问题中找到了解决方案:https://stackoverflow.com/a/51079348/2107791
BorderStyle
bsSingle
工程为我使用 Delphi 10. 3里约。
pkbketx93#
......有什么想法吗?不幸的是,我没有找到很好的解决方案,我不得不在我的项目中使用一个技巧:诀窍是,我在编辑下放置一个形状!只需将TEdit的AutoSize设置为False,根据需要放置和更改TEdit的宽度和高度,然后使用以下步骤:
procedure PutShapeUnderEdit(edit: TEdit; padding: Integer); var bmp: TBitmap; shape: TShape; h: Integer; begin bmp := TBitmap.Create; try bmp.Canvas.Font.Assign(edit.Font); h := bmp.Canvas.TextExtent('Some characters: AÄBCDEgjpqy!"$&/|,').cy; finally bmp.Free; end; shape := TShape.Create(nil); shape.Parent := edit.Parent; shape.Brush.Color := edit.Color; shape.Pen.Color := edit.Font.Color; shape.Left := edit.Left; shape.Top := edit.Top; shape.Width := edit.Width; shape.Height := edit.Height; edit.BorderStyle := bsNone; edit.Left := edit.Left + padding; edit.Width := edit.Width - 2 * padding; edit.Top := edit.Top + padding + (edit.Height - h - 2 * padding) div 2; edit.Height := h; end;
要使用它,只需在FormCreate中调用该过程一次:
procedure TForm1.FormCreate(Sender: TObject); begin PutShapeUnderEdit(Edit1, 10); end;
这对我很有效,但是你必须考虑项目中的其他参数,不要盲目地使用这段代码,只是看看这个想法是否对你有效。顺便说一下,我在 Delphi 10西雅图和Windows 10中使用VCL
3条答案
按热度按时间rbl8hiat1#
如果有这样的选项,它将通过样式的方式应用。
EDIT
control styles list不包含这样的样式,因此结论是底层控件不提供此功能。你要么做一个新的控件,要么自己接管这幅画,这两种都不是特别吸引人。
c3frrgcw2#
一个老问题的灰尘...我在一个类似的c++问题中找到了解决方案:https://stackoverflow.com/a/51079348/2107791
BorderStyle
设置为bsSingle
,文本将自动垂直居中。工程为我使用 Delphi 10. 3里约。
pkbketx93#
......有什么想法吗?
不幸的是,我没有找到很好的解决方案,我不得不在我的项目中使用一个技巧:诀窍是,我在编辑下放置一个形状!
只需将TEdit的AutoSize设置为False,根据需要放置和更改TEdit的宽度和高度,然后使用以下步骤:
要使用它,只需在FormCreate中调用该过程一次:
这对我很有效,但是你必须考虑项目中的其他参数,不要盲目地使用这段代码,只是看看这个想法是否对你有效。
顺便说一下,我在 Delphi 10西雅图和Windows 10中使用VCL