使用控件另一种形式(Use Controls Of Another Form)

2019-10-28 14:39发布

我有有两种形式,拉撒路项目FormMainOutputForm 。 我想显示在输出OutputMemo在这段代码的第二种形式:

procedure FormMain.ShowButton(Object: Sender);
begin 
  if SaveDialog1.Execute then 
    AProcess := TProcess.Create(nil); 
  AProcess.CommandLine := 'gcc.exe ' + SaveDialog1.FileName + ' -o ' TextField23.Text; 
  AProcess.Options := AProcess.Options + [poWaitOnExit, poUsePipes]; 
  AProcess.Execute; 

  OutputForm.OutputMemo.Lines.BeginUpdate; 
  //OutputForm.OutputMemo.Lines.Clear; 
  OutputForm.OutputMemo.Lines.LoadFromStream(AProcess.Output); 
  OutputForm.OutputMemo.Lines.EndUpdate; 

  AProcess.Free; 
end;

但是,当我尝试编译这段代码,我得到了错误:

标识符找不到“OutputForm”

在OutputForm单元的顶部,我有:

unit Output;

当我尝试从FormMain单元调用它( OutputForm: Output; )我得到这个错误:

错误类型definiition

我有什么关系?

Answer 1:

作为RRUZ说,你需要的地方OutputForm声明的单元的参考。 这里的基本思想是:

每个窗体都有一个形式声明文件(DFM在Delphi,我想拉撒路称他们LFMS),并在那里你把自己的代码进行相应的Object Pascal的单元文件(.PAS)。 这是一个像任何其他正常单元文件,只要编译器的关注。 唯一的区别是,它具有与它相关联的表单。

打开代码OutputForm和顶一下。 它会这样说:“单位OutputForm;” 复制单位名称,并将其粘贴到FormMain的单元的使用条款,然后它应该工作。

编辑:不太清楚你想要什么与编辑的事,但你并不需要重新声明OutputForm。 它应该已被宣布为在输出单元的全局变量。 你只需要输出添加到您的使用条款,所以你会类似于这样结束:

unit Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Output; //on a separate line to show it's not a system lib

type
  TFrmMain = class(TForm)
  ...


Answer 2:

嗯,不是“输出” Pascal的保留字?



文章来源: Use Controls Of Another Form