gpt4 book ai didi

delphi - 如何截断delphi组合框中选定的文本?

转载 作者:行者123 更新时间:2023-12-03 15:48:23 26 4
gpt4 key购买 nike

我有一个组合框,其样式设置为 csDropDown。我正在尝试在 OnSelect 事件处理程序中执行此操作;

if cboEndTime.ItemIndex > -1 then
cboEndTime.Text := AnsiLeftStr(cboEndTime.Text, 5);

但是没有效果。

组合项目如下所示;

09:00(0 分钟)
09:30(30分钟)
10:00(1小时)
10:30(1.5小时)
...

例如,如果我选择第二项,我希望组合框的文本显示 09:30,即被截断。这会将 ItemIndex 设置为 -1。

我怎样才能实现这个目标?

最佳答案

您在 OnSelect 事件期间对 Text 所做的更改似乎随后会被框架覆盖。 Windows API,或者VCL,我没有研究过。

一种解决方案是推迟实际更改,直到原始输入事件的处理完成。像这样:

const
WM_COMBOSELECTIONCHANGED = WM_USER;

type
TForm1 = class(TForm)
ComboBox1: TComboBox;
procedure ComboBox1Select(Sender: TObject);
protected
procedure WMComboSelectionChanged(var Msg: TMessage); message WM_COMBOSELECTIONCHANGED;
end;

implementation

{$R *.dfm}

procedure TForm1.ComboBox1Select(Sender: TObject);
begin
PostMessage(Handle, WM_COMBOSELECTIONCHANGED, 0, 0);
end;

procedure TForm1.WMComboSelectionChanged(var Msg: TMessage);
begin
if ComboBox1.ItemIndex<>-1 then
begin
ComboBox1.Text := Copy(ComboBox1.Text, 1, 1);
ComboBox1.SelectAll;
end;
end;

关于delphi - 如何截断delphi组合框中选定的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17529058/

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