尝试使用多线路时:即
sPrompt := 'some text' + #13#10#10 + 'some more info...' + #13#10 +
'Blah, Blah' + #13#10#10 + 'What is your input?';
InputQuery函数将字符串作为字符串数组, 它根据数组中最长的字符串计算Form的MaxWidth。
在上面的示例中,InputQuery表单由字符串的长度计算,大约50个字符。虽然最长的线只是其中的一小部分。
结果是显示了一个非常宽的InputQuery框,其中包含大量空白空间。 看起来不太专业。
当我尝试创建一个字符串数组来保存每一行时:
var saPrompt: array of string;
sInputString: String;
Begin
SetLength(saPrompt,4);
saPrompt[0] := 'some text' + #13#10#10;
saPrompt[1] := 'some more info...' + #13#10;
saPrompt[2] := 'Blah, Blah' + #13#10#10;
saPrompt[3] := 'What is your input?';
sInputString := '???';
If InputQuery('I Need Input?',saPrompt,sInputString) then
由于存在No Overload函数,我无法编译以获取InputQuery函数的这些参数。 我查看了Vcl.Dialogs单元中的Overload InputQuery函数,但无法使其工作。
有没有人知道在多行提示下使用InputQuery函数的正确语法?
我正在使用Embarcadero RAD Studio XE2 - Delphi
提前感谢任何“有用”的回复。
答案 0 :(得分:0)
function GetPassword:string;
var
saPrompt,saVal: array of string;
begin
SetLength(saPrompt,1);
saPrompt[0] := #30'Enter password';
SetLength(saVal,1);
saVal[0] := '??????';
if InputQuery('Password',saPrompt,saVal)
then result:=saVal[0] else return:='';
end;
此代码适用于Delphi XE2。 Haven没有尝试过以前的版本。 我原以为这是不言自明的(如果你有一些Delphi的经验)。 干杯 克里斯托夫