0

尝试使用多行提示符时:即

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

由于不存在用于获取 InputQuery 函数的这些参数的重载函数,我无法编译。我查看了 Vcl.Dialogs 单元中的 Overload InputQuery 函数,但无法使其工作。

有谁知道使用带有多行提示的 InputQuery 函数的正确语法?

我正在使用 Embarcadero RAD Studio XE2 - Delphi

提前感谢任何“有用”的回复。

4

1 回答 1

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。以前的版本没试过。我会认为这是不言自明的(如果您有一些 Delphi 经验)。干杯克里斯托夫

于 2013-01-23T09:31:01.640 回答