从可用表单列表中选择MainForm

时间:2014-08-27 09:18:43

标签: delphi

是否可以从"可用"的列表中选择一个表单(作为主表单)。连接到数据库后的表单?我有一个3'可用的数据模块' form.No mainform暂时.Datamodule首先创建。现在,我想根据用户登录的数据库选择表单,并使其成为mainform。可以这样做,怎么做?

2 个答案:

答案 0 :(得分:8)

您可以轻松地在DPR中执行类似的操作。

program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {DM1: TDataModule},
  Unit3 in 'Unit3.pas' {Form2};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TDM1, DM1);
  case DM1.ChooseForm of
    1: Application.CreateForm(TForm1, Form1);
    else Application.CreateForm(TForm2, Form2);
  end;
  Application.Run;
end.

在此示例中,您首先要创建数据模块。创建它时,您可以使用数据模块中的逻辑。在数据模块中,我创建了一个公共函数,它返回一个整数来确定要加载的表单。 (在实践中,我不会依赖魔法数字)

答案 1 :(得分:5)

主要表单被视为通过调用Application.CreateForm创建的第一个表单。因此,将选择逻辑添加到.dpr文件代码中,然后调用Application.CreateForm以创建用户选择的任何形式。

// .dpr code
begin
  Application.Initialize;
  CreateMainForm;
  Application.Run;
end.

此处,CreateMainForm由您提供并实现用户表单选择。它可能是这样的:

procedure CreateMainForm;
var
  Form: TForm;
  FormClass: TFormClass;
begin
  FormClass := ChooseMainFormClass;
  Application.CreateForm(FormClass, Form);
end;

同样,ChooseMainFormClass由您提供。