Delphi :如何调整TEdit的文本垂直位置

vm0i2vca  于 2023-03-12  发布在  其他
关注(0)|答案(3)|浏览(274)

TEdit(或TCombo,TButtonedEdit)中的文本总是顶部对齐。我没有找到任何属性来改变对齐方式。通常这不是问题,除非我想设置更大的高度。
我在谷歌上搜索了一下。有一些解决方案可以通过发送Windows消息来调整左右边距。但是我不知道,如何调整垂直对齐。
我不想用大一点的字体.你有什么主意吗?

rbl8hiat

rbl8hiat1#

如果有这样的选项,它将通过样式的方式应用。EDIT control styles list不包含这样的样式,因此结论是底层控件不提供此功能。
你要么做一个新的控件,要么自己接管这幅画,这两种都不是特别吸引人。

c3frrgcw

c3frrgcw2#

一个老问题的灰尘...我在一个类似的c++问题中找到了解决方案:https://stackoverflow.com/a/51079348/2107791

  • 通过将TEdit的属性BorderStyle设置为bsSingle,文本将自动垂直居中。
  • 折衷方案是在“编辑”框周围添加边框

工程为我使用 Delphi 10. 3里约。

pkbketx9

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

相关问题