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.