我在C++ Builder XE4上工作VCL.
我有以下组件.
FormMain有
FormSelect(或DialogSelect)有
期望的行为
在上面的第3步,我想做:
通过使用对话框,我可以从Modal Result Constans返回一个值. http://docwiki.embarcadero.com/RADStudio/XE5/en/Modal_Result_Constants
但是,当我想从20个或更多项中返回1个值时,如何使用Form/Dialog传递该值?
设置B_ok.ModalResult为mrOk.(Delphi代码给出,因为你在标签中包含了Delphi.)
用于if FormSelect.ShowModal = mrOk查看是否Ok单击了按钮.阅读FormSelect.CB_list.ItemIndex以找出选择的值.
或者,更好的是,给出TFormSelect一个包含的公共财产ItemSelected.将其设置CB_list.ItemIndex为B_ok.OnClick事件:
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;
Run Code Online (Sandbox Code Playgroud)
在调用代码中:
SelectForm := TFormSelect.Create(nil);
try
if SelectForm.ShowModal = mrOk then
SelectedItem := SelectForm.ItemSelected;
finally
SelectForm.Free;
end;
Run Code Online (Sandbox Code Playgroud)