我有一堆表格,我想自动化它们,以便它们自己打开和关闭.
我知道如何让它们打开(通过具有OnActivate功能),但我无法关闭它们.
所以,例如,我有
procedure TProgressForm.FormActivate(Sender: TObject);
begin
inherited;
if FModItem.IsInQueue then
begin
RunBtnClick(Self);
ModalResult := mrOK;
end;
end;
Run Code Online (Sandbox Code Playgroud)
它运行一个功能.我希望在函数运行后关闭窗口,这是ModalResult应该做的.
(我也尝试在RunBtnClick过程的最后添加ModalResult行,但这也不起作用)
我正在创建这样的表单:
ProgForm := TProgressForm.Create(Self, FModItem);
Self.Visible := False;
try
if ProgForm.ShowModal = mrOK then
begin
Left := ProgForm.Left;
Top := ProgForm.Top;
end;
Run Code Online (Sandbox Code Playgroud)
我只能通过将mrOK添加到Object Inspector中的Modal Result来创建关闭表单的按钮,但我似乎无法明确地执行此操作
谁能明白为什么它不起作用?
谢谢
我有一个程序在完成时写入输出,并且特定文件需要很长时间,我想知道我是否可以做些什么来提高它的速度.
该文件最终为25 mbs或更多,它有大约17000行,每行有大约500个字段
它的工作方式是:
procedure CWaitList.WriteData(AFile : string; AReplicat : integer; AllFields : Boolean);
var
fout : TextFile;
idx, ndx : integer;
MyPat : CPatientItem;
begin
ndx := FList.Count - 1;
AssignFile(fout, AFile);
Append(fout);
for idx := 0 to ndx do
begin
MyPat := CPatientItem(FList.Objects[idx]);
if not Assigned(MyPat) then Continue;
MyPat.WriteItem(fout, AReplicat, AllFields);
end;
CloseFile(fout);
end;
Run Code Online (Sandbox Code Playgroud)
WriteItem是一个从MyPat获取所有值并将它们写入文件的过程,还调用其他3个函数,这些函数也将值写入文件
总的来说,WriteData循环最终约为1700,每行最终有大约500个字段
我只是想知道是否有什么我可以做的来改善它的性能,或者它是否总是需要很长时间,因为它需要写多少数据
谢谢
我一直在使用别人制作的程序,我想改变图标.
我的图标是256x256.我用http://converticon.com/创建了图标(我认为是bmp).我使用Inno Setup中的图标创建了一个安装程序,它工作正常
所以我转到选项 - >应用程序并尝试加载它.但是,Delphi 2007给出了一个错误'参数不正确'.有了这个信息:http://i.stack.imgur.com/vRCgs.png
当我在Delphi XE中做同样的事情时,它可以工作并加载图标并在编译时更改它.我现在不能使用XE,因为该程序使用了一个unicode问题的数学解析器(这可以解决以后的问题)
所以,我所做的是在XE中打开项目,更改图标,保存它,删除dproj并在2007年打开它.这可以工作,编译并显示正确的图标,但是当我转到项目选项时,它给了我相同的'参数不正确'错误.
解决方法不是什么大问题,但我不应该这样做.有谁知道为什么我不能在Delphi 2007中更改图标?
编辑:我只是使用相同的converticon网站将256x256图标转换为192x192和更小,现在它完美地工作.谢谢你的回答
我正在使用别人的代码,我正在添加一个新表单
所以,我已经创建了表单,我可以打开它,使用按钮和列表等,但我在使用formcreate时遇到问题.
我通过这样做来制作表格:
procedure TModelForm.RepeatOpen(Sender: TObject);
var
DefForm : TForm5;
begin
DefForm := TForm5.Create(Self);
Self.Visible := False;
try
DefForm.ShowModal;
finally
Self.Visible := True;
DefForm.Release;
end;
end;
Run Code Online (Sandbox Code Playgroud)
在我的TForm5中,我有一个程序
procedure TForm5.FormCreate(Sender: TObject);
begin
inherited;
RunList := CModelList.Create;
RunList.ReadData;
RunList.FillList(ListBox1.Items);
end;
Run Code Online (Sandbox Code Playgroud)
但它没有做任何事情
我也有
procedure TForm5.PopulateListClick(Sender: TObject);
begin
RunList := CModelList.Create;
RunList.ReadData;
RunList.FillList(ListBox1.Items);
end;
Run Code Online (Sandbox Code Playgroud)
它被分配给一个按钮,这实际上可以工作并填充我的ListBox
我一直在网上查找它,似乎没有OnCreate函数,有一种方法可以覆盖它,但似乎应该有一种方法来定义框架首次创建时会发生什么
另外,我使用FormCreate的原因是因为这就是我正在使用的代码正在做的事情,它似乎正在工作
谢谢!