如何在没有IDE的Delphi中实现winform对话框?
使用Win32: 文件|新单位,那么你完全控制了代码。
var
F : TForm;
L : TLabel;
begin
F := TForm.Create(Application);
L := TLabel.Create(F);
L.Parent := F; // Needed to have it show up on the form.
L.Left := 50;
L.Top := 50;
L.Caption := 'This is an example';
F.Show;
end;
在.NET /德尔福棱镜: 右键单击该项目|新建项目|类
namespace WindowsApplication2.Properties;
interface
uses
System.Windows.Forms,
System.Collections.Generic,
System.Linq,
System.Text;
type
Class1 = public class(System.Windows.Forms.Form)
private
protected
lablel1 : Label;
public
constructor;
end;
implementation
constructor Class1;
begin
self.label1 := new System.Windows.Forms.Label();
self.SuspendLayout();
self.label1.AutoSize := true;
self.label1.Location := new System.Drawing.Point(37, 80);
self.label1.Name := 'label1';
self.label1.Size := new System.Drawing.Size(35, 13);
self.label1.TabIndex := 0;
self.label1.Text := 'This is an Example';
self.ResumeLayout(false);
self.PerformLayout();
end;
end.
首先,你不需要德尔福IDE运行德尔福程序。德尔福产生(通常)独立.EXE应用程序,所以
foo.exe的
按预期工作。
其次,你可以用命令行编译器编译你的Delphi项目。确切的语法取决于你安装的Delphi版本。看看this post 或搜索Delphi命令行编译器
你不需要IDE来生成res文件吗? – 2009-12-31 16:37:24
不,Marco。您可以使用brcc32.exe编译资源文件。 – 2009-12-31 19:06:52
从你的答案中假设你没有安装任何编译器。为了编译Delphi代码,你需要一个编译器。 Delphi没有免费的版本,除非你能找到一个旧的版本,否则你不得不购买Delphi。 Delphi带有一个像gcc这样的命令行编译器,并且可以在没有IDE的情况下编译程序。
德尔福2006年和Win32前:
dcc32 YourProject.dpr
德尔福2006年和.Net前:
dccil YourProject.dpr
德尔福2007年后:
msbuild YourProject.dproj
这将导致一个编译的二进制如果是EXE,你可以像你习惯的那样运行它。
Robert Love完美地解释了如何编写代码来显示GUI,而无需在IDE中使用设计器。这样可以节省你的钱,因为无论如何你必须购买IDE才能获得命令行编译器。
德尔福有免费的替代品,如FreePascal和他们的免费IDE Lazarus。我没有检查过自己,但我很确定它也带有一个命令行编译器。
D2007 + afaik do dcc32也可以。我会将msbuild更多地与旧版本中的make相比,而不是dcc32。免费的Pascal在每个体系结构中都有一个命令行编译器“ppc
确实如此,但D2007和更高版本不再使用.cfg文件,因此您将错过任何已设置的项目选项,必须提供它们作为参数。 – 2009-12-31 16:42:18
请注意,已经提到的Lazarus也带有一个类似Delphi的设计器。
提及WinForms是否使用.NET?如果所以这应该被标记为Delphi-Prism – 2009-12-31 15:32:23
不,我没有安装.NET。 – user198729 2009-12-31 15:45:58
了解您使用的Delphi版本会有帮助。例如,Delphi 2007,2009和2010使用MSBuild,并有一个批处理文件来设置所有的环境变量。此外,德尔福自D8/D2005以来不做WinForms。 – 2009-12-31 15:46:10