小编Kin*_*ong的帖子

使用ModalResult退出表单

我有一堆表格,我想自动化它们,以便它们自己打开和关闭.

我知道如何让它们打开(通过具有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来创建关闭表单的按钮,但我似乎无法明确地执行此操作

谁能明白为什么它不起作用?

谢谢

forms delphi

14
推荐指数
2
解决办法
2万
查看次数

提高写入文件速度

我有一个程序在完成时写入输出,并且特定文件需要很长时间,我想知道我是否可以做些什么来提高它的速度.

该文件最终为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个字段

我只是想知道是否有什么我可以做的来改善它的性能,或者它是否总是需要很长时间,因为它需要写多少数据

谢谢

delphi

11
推荐指数
2
解决办法
3487
查看次数

在Delphi 2007中更改问题图标

我一直在使用别人制作的程序,我想改变图标.

我的图标是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和更小,现在它完美地工作.谢谢你的回答

delphi icons

6
推荐指数
1
解决办法
4543
查看次数

FormCreate在Delphi中的问题

我正在使用别人的代码,我正在添加一个新表单

所以,我已经创建了表单,我可以打开它,使用按钮和列表等,但我在使用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的原因是因为这就是我正在使用的代码正在做的事情,它似乎正在工作

谢谢!

forms delphi

4
推荐指数
1
解决办法
7177
查看次数

标签 统计

delphi ×4

forms ×2

icons ×1