Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何将20个项的值从对话框(窗体)传递给调用者(窗体) 我在C++的Builder XE4上工作VCL。_Delphi_C++builder - Fatal编程技术网

Delphi 如何将20个项的值从对话框(窗体)传递给调用者(窗体) 我在C++的Builder XE4上工作VCL。

Delphi 如何将20个项的值从对话框(窗体)传递给调用者(窗体) 我在C++的Builder XE4上工作VCL。,delphi,c++builder,Delphi,C++builder,我有以下组件 FormMain具有 t按钮*B_选择 FormSelect(或DialogSelect)具有 TComboBox*CB_列表 t按钮*B_确定 t按钮*B_取消 期望行为 @FormMain,单击“选择”打开FormSelect @FormSelect,在CB_列表中选择列表 @FormSelect,单击B_确定将listindex传递给FormMain 在上面的第3步中,我想做: 关闭窗体选择 将listindex传递给调用方(FormMain) 通过使用对话框,我

我有以下组件

FormMain具有

  • t按钮*B_选择
FormSelect(或DialogSelect)具有

  • TComboBox*CB_列表
  • t按钮*B_确定
  • t按钮*B_取消
期望行为

  • @FormMain,单击“选择”打开FormSelect
  • @FormSelect,在CB_列表中选择列表
  • @FormSelect,单击B_确定将listindex传递给FormMain
  • 在上面的第3步中,我想做:

    • 关闭窗体选择
    • 将listindex传递给调用方(FormMain)
    通过使用对话框,我可以从Modal返回一个值 结果康斯坦斯。

    但是,当我想从20个或更多项返回1个值时,
    如何使用表单/对话框传递值?

    B_ok.ModalResult
    设置为
    mrOk
    。(给出了Delphi代码,因为您将Delphi包含在标记中。)

    使用
    if FormSelect.showmodel=mrOk
    查看是否单击了
    Ok
    按钮。阅读
    FormSelect.CB_list.ItemIndex
    ,找出所选的值

    或者,更好的做法是,为
    t或mselect
    提供一个包含
    ItemSelected
    的公共属性。将其设置为
    B_ok.OnClick
    事件中的
    cbu list.ItemIndex

    type
      TFormSelect = class(TForm)
       // other declarations
        procedure B_okClick(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        FItemSelected: Integer;
      public
        property ItemSelected: Integer read FItemSelected;
      end;
    
    implementation
    
    procedure TFormSelect.B_okClick(Sender: TObject);
    begin
      FItemSelected := CB_list.ItemIndex;
    end;
    
    procedure TFormSelect.FormCreate(Sender: TObject);
    begin
      FItemSelected := -1;
    end;
    
    在调用代码中:

    SelectForm := TFormSelect.Create(nil);
    try
      if SelectForm.ShowModal = mrOk then
        SelectedItem := SelectForm.ItemSelected;
    finally
      SelectForm.Free;
    end;
    

    非常感谢您的回复。有了示例代码,您的回复真的很有帮助!谢谢你对代码的改进Remy Lebeau。