我无法弄明白......
在InputBox中显示TStringList(A1,A2,A3)项。
另外,我尝试使用
函数InputCombo2(const ACaption,APrompt:string; const AList: TStrings):string;
但此功能不起作用
var
List: TStringList;
if Not FileExists(CradTypeText)
then
Begin
List := TStringList.Create;
List.Add('A1');
List.Add('A2');
List.Add('A3');
repeat
CardTypeStr := InputBox('Card Recharger', 'Please select the card', List);
until (CardTypeStr = 'A1') or (CardTypeStr = 'A2') or (CardTypeStr = 'A3');
//ShowMessage(iStr);//Test
AssignFile(myFile, CradTypeText);
ReWrite(myFile);
WriteLn(myFile, CardTypeStr);
CloseFile(myFile);
List.Free;
End
Else
Begin
IDEdt.Enabled := False;
AssignFile(myFile, IDtext);
Reset(myFile);
ReadLn(myFile, CardTypeStr);
IDEdt.Text := CardTypeStr;//Test
End;
答案 0 :(得分:2)
使用MessageBox
,InputBox
等显示的对话框只是预先制作的形式。
您想要为他们添加额外的项目,您必须设计自己的表单。
以下是如何执行此操作:
在项目中添加额外的表单
在项目中添加额外的表单:文件 - >新... - >表格
将一个ComboBox或ListBox放到表单上(我更喜欢列表框) 并删除两个按钮。
设置以下属性:
Button1.ModalResult:= mrOK;
Button2.ModalResult:= mrCancel;
此表单将是您的对话框。
自定义对话框,使其可以保留显示选项
将公共属性添加到表单中,如下所示:
TForm2 = class(TForm)
private
FOptions: TStringList;
FChoosenOption: string;
....
public
property Options: TStringList read FOptions write FOptions;
property ChoosenOption: string read FChoosenOption;
....
end;
将以下代码分配给表单的OnShow事件:
procedure TForm2.Form2Show(Sender: TObject);
var
i: integer;
begin
if Assigned(FOptions) then begin
ListBox1.Items.Clear;
for i:= 0 to FOptions.Count -1 do begin
ListBox1.Items.Add(FOptions[i]);
end; {for}
end; {if}
end;
存储所选项目时,用户选择它。
procedure TForm2.ListBox1Click(Sender: TObject);
begin
self.FChoosenOption:= ListBox1.Items[ListBox1.ItemIndex];
end;
显示表单
默认情况下,表单将自动创建,这很好。
以下代码可以解决问题:
procedure TForm1.BtnShowMeOptionsClick(Sender: TObject);
begin
Form2.Options:= MyListOfOptions;
case Form2.ShowModal() of
mrOK: begin
self.OptionPicked:= Form2.ChoosenOption;
end;
mrCancel: begin
self.OptionPicked:= '';
end;
end; {case}
end;
这样的事情应该可以解决问题。
一些信息
见:http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Forms_TCustomForm_ShowModal.html
Delphi TListBox OnClick / OnChange?