DELPHI 10.3.3 如何获取TcxComboBox的值
How to get the value of TcxComboBox in DELPHI 10.3.3
我希望我能得到我想要的答案...我已经阅读了很多关于它的东西但一无所获
所以这是事情
我有一个从数据库获取数据的 DBVERTICALGRID 视图...(不重要)
当我按下一个名为 Edit_btn 的按钮时,我使用 :
将 EditorRow 转换为 ComboBox
for I := 1 to Data_Sheet_.temp_Query.RecordCount do
begin
TcxComboBoxProperties(Job_ColorName.Properties.EditProperties).Items.Add(Data_Sheet_.temp_Query.FieldByName('Color_Name').AsString);
Data_Sheet_.temp_Query.Next;
end;
Data_Sheet_.temp_Query.First;
我得到了通过数据库中的数据填充组合框项目的正确结果...
然后我想获得用户更改的值...(假设数据是 'White',现在他想从 ComboBox 项目将其更改为 'Blue'),我做到了在 EditorRow 上进行适当的设置以使 OnChange 程序正常工作...
...当我想通过 :
在 ComboBox 中显示选定的值时,问题就出现了
procedure TBindingJobEdit_.Job_ColorNameEditPropertiesChange(Sender: TObject);
begin
ShowMessage('HAHAHAH|'+' '+TcxComboBoxProperties(Job_ColorName.Properties.EditProperties).Items.Text);
end;
我得到了数据库中的所有记录,但我只想要选定的记录,如红色或蓝色
这是我在 DevExpress 专家和支持者的帮助下找到的答案
你可以在这个 link 中看到完整的描述,这里是代码行
procedure TBindingJobEdit_.Job_ColorNameEditPropertiesChange(Sender: TObject);
begin
ShowMessage('HAHAHAH|'+' '+TcxComboBox(Sender).EditValue);
end;
和 link 到 Support Center
要访问 Grid 中 Cellule 的值,您必须按如下方式进行:
假设您的视图是 jobview,那么在您的列中,您在属性 OnEditValueChange 中有一个事件,(注意:您可以使用列的 OnChange 或视图的 OnEditValueChanged);所以,你的代码变成:
procedure TBindingJobEdit_.Job_ColorNameEditPropertiesChange(Sender: TObject);
var MyText: string; MyValue: Variant;
begin
MyValue:= jobview.Controller.SelectedRows[0].Values[Job_ColorName.Index];
MyText:= jobview.Controller.SelectedRows[0].DisplayTexts[Job_ColorName.Index];
ShowMessage('HAHAHAH|'+' '+MyText);
//Or you can use MyValue (As ItemIndex of the combobox), in this case MyValue is Integer value.
end;
希望你能找到答案。
我这样修改我的代码
uses ...., cxDropDownEdit;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure cxComboBox1PropertiesEditValueChanged(Sender: TObject);
Private
Job_ColorName: TcxComboBox;
Public
end;
implementation
{$R *.dfm}
procedure TFTeste.Button1Click(Sender: TObject);
begin
Job_ColorName:= TcxComboBox.Create(Self);
// Other code for Job_Colorname to assign Left, Top, Width, Populate Items, ....
Job_ColorName.Properties.OnEditValueChanged:= cxComboBox1PropertiesEditValueChanged;
end;
procedure TFTeste.cxComboBox1PropertiesEditValueChanged(Sender: TObject);
var MyText: string;
begin
MyText:= TcxComboBox(Sender).Text;
// or
MyText:= TcxComboBox(Sender).Properties.Items[TcxComboBox(Sender).ItemIndex];
ShowMessage('HAHAHAH|'+' '+MyText);
end;
end.
我希望我能得到我想要的答案...我已经阅读了很多关于它的东西但一无所获 所以这是事情 我有一个从数据库获取数据的 DBVERTICALGRID 视图...(不重要) 当我按下一个名为 Edit_btn 的按钮时,我使用 :
将 EditorRow 转换为 ComboBoxfor I := 1 to Data_Sheet_.temp_Query.RecordCount do
begin
TcxComboBoxProperties(Job_ColorName.Properties.EditProperties).Items.Add(Data_Sheet_.temp_Query.FieldByName('Color_Name').AsString);
Data_Sheet_.temp_Query.Next;
end;
Data_Sheet_.temp_Query.First;
我得到了通过数据库中的数据填充组合框项目的正确结果... 然后我想获得用户更改的值...(假设数据是 'White',现在他想从 ComboBox 项目将其更改为 'Blue'),我做到了在 EditorRow 上进行适当的设置以使 OnChange 程序正常工作... ...当我想通过 :
在 ComboBox 中显示选定的值时,问题就出现了procedure TBindingJobEdit_.Job_ColorNameEditPropertiesChange(Sender: TObject);
begin
ShowMessage('HAHAHAH|'+' '+TcxComboBoxProperties(Job_ColorName.Properties.EditProperties).Items.Text);
end;
我得到了数据库中的所有记录,但我只想要选定的记录,如红色或蓝色
这是我在 DevExpress 专家和支持者的帮助下找到的答案 你可以在这个 link 中看到完整的描述,这里是代码行
procedure TBindingJobEdit_.Job_ColorNameEditPropertiesChange(Sender: TObject);
begin
ShowMessage('HAHAHAH|'+' '+TcxComboBox(Sender).EditValue);
end;
和 link 到 Support Center
要访问 Grid 中 Cellule 的值,您必须按如下方式进行: 假设您的视图是 jobview,那么在您的列中,您在属性 OnEditValueChange 中有一个事件,(注意:您可以使用列的 OnChange 或视图的 OnEditValueChanged);所以,你的代码变成:
procedure TBindingJobEdit_.Job_ColorNameEditPropertiesChange(Sender: TObject);
var MyText: string; MyValue: Variant;
begin
MyValue:= jobview.Controller.SelectedRows[0].Values[Job_ColorName.Index];
MyText:= jobview.Controller.SelectedRows[0].DisplayTexts[Job_ColorName.Index];
ShowMessage('HAHAHAH|'+' '+MyText);
//Or you can use MyValue (As ItemIndex of the combobox), in this case MyValue is Integer value.
end;
希望你能找到答案。
我这样修改我的代码
uses ...., cxDropDownEdit;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure cxComboBox1PropertiesEditValueChanged(Sender: TObject);
Private
Job_ColorName: TcxComboBox;
Public
end;
implementation
{$R *.dfm}
procedure TFTeste.Button1Click(Sender: TObject);
begin
Job_ColorName:= TcxComboBox.Create(Self);
// Other code for Job_Colorname to assign Left, Top, Width, Populate Items, ....
Job_ColorName.Properties.OnEditValueChanged:= cxComboBox1PropertiesEditValueChanged;
end;
procedure TFTeste.cxComboBox1PropertiesEditValueChanged(Sender: TObject);
var MyText: string;
begin
MyText:= TcxComboBox(Sender).Text;
// or
MyText:= TcxComboBox(Sender).Properties.Items[TcxComboBox(Sender).ItemIndex];
ShowMessage('HAHAHAH|'+' '+MyText);
end;
end.