我有一个组合框,其样式设置为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。
我怎样才能做到这一点?
您可以将样式设置为OwnerDraw修复,并使用OnDrawItem自己绘制希望的文本。本示例中的查找将显示所有,所选内容仅显示修剪过的字符串。
procedure TForm3.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
C:TComboBox;
Function Strip(const s:String):String;
begin
if C.DroppedDown then result := s
else Result := Copy(s,1,pos('(',s)-1);
end;
begin
C := TComboBox(Control);
C.Canvas.FillRect(Rect);
C.Canvas.TextOut(Rect.left + 1,Rect.Top + 1, Strip(C.Items[Index] ));
end;
您在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;
我不知道它是否会像重复需要做什么来获得那么简单,所以我也想包含它,以防需要做一些不同的事情。
我有一个网页渲染使用extjs。它用一些生成的ID呈现多个组合框。和每个组合框都选择了不同的选项。我怎样才能找出在每个组合中选择了哪个值? 在调试HTML DOM时,我观察到ExtJS呈现DIV是不同的,可选择的选项在最后呈现在不同的DIV中。因此,我无法定义任何XPath来找出所选值。
问题内容: 我使用Tkinter在python中制作了一个简单的组合框,我想检索用户选择的值。搜索后,我认为可以通过绑定选择事件并调用将使用box.get()之类的函数来实现此目的,但这不起作用。程序启动时,将自动调用该方法,并且不打印当前选择。当我从组合框中选择任何项目时,不会调用任何方法。这是我的代码片段: 当我从框中选择一个项目时,应该调用此方法: 谁能告诉我如何获得选定的值? 编辑:我通过
我正在尝试设置组合框的文本颜色。 我尝试的代码
我对Laravel截断的数据有一个小问题。我将传递给我的后端值,该值可以是表中定义的“百分比”或“金额”,但在表中也可以为null,但每次尝试将其设置为null时,都会出现如下错误: {"discount_currency":["您输入的值无效。"]} 或者当我从处理请求中删除enum时,它会说 所以我传递数据抛出API从我的Vue,这个婴儿车的请求看起来像: 所以如果我删除...我有第二个错误。
假设我有以下html代码: 这是一个组合框 当前已选择值MyDivision。 使用Selenium WebDriver我试图获得选定的值,但没有成功。 我尝试了: 但这会返回组合框中的所有值。 请帮忙? 编辑: