gpt4 book ai didi

delphi - 如何将对话框(表单)中的 20 个项目的值传递给调用者(表单)

转载 作者:行者123 更新时间:2023-12-03 18:21:34 29 4
gpt4 key购买 nike

我正在 C++ Builder XE4 上使用 VCL。

我有以下组件。

FormMain 具有

  • TButton *B_select;

FormSelect(或DialogSelect)具有

  • TComboBox *CB_list;
  • TButton *B_ok;
  • TButton *B_cancel;

期望的行为

  1. @FormMain,点击B_select打开FormSelect
  2. @FormSelect,选择CB_list中的列表
  3. @FormSelect,点击B_ok将listindex传递给FormMain

在上面的步骤 3 中,我想做:

  • 关闭 FormSelect
  • 将列表索引传递给调用者(FormMain)

通过使用对话框,我可以从 Modal 返回一个值结果常数。 http://docwiki.embarcadero.com/RADStudio/XE5/en/Modal_Result_Constants

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

最佳答案

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

使用if FormSelect.ShowModal = mrOk 来查明是否单击了Ok 按钮。阅读 FormSelect.CB_list.ItemIndex 以找出选择了哪个值。

或者,更好的是,为 TFormSelect 提供一个包含 ItemSelected 的公共(public)属性。将其设置为 B_ok.OnClick 事件中的 CB_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;

关于delphi - 如何将对话框(表单)中的 20 个项目的值传递给调用者(表单),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22676552/

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