Thema: Delphi Application.Run

Einzelnen Beitrag anzeigen

day

Registriert seit: 10. Mai 2004
223 Beiträge
 
#5

Re: Application.Run

  Alt 8. Okt 2004, 19:46
Hallo

Ja es geht in etwa diese Richtung. Bis jetzt habe ich es eben so gemacht, dass ich alle Forms mir CreateForm erzeugt habe. Wenn ich dann die entsprechende Form benötige, brauche ich nur noch Visible auf True zu setzen.
Wenn man zwischen zwei Forms hin und her springt und den Dateninhalt der einten form nicht verlieren möchte, dann kann man nicht jedesmal mit create eine neue Form erzeugen.

Ich bin mir da eben noch unschlüssig wie ich das lösen soll. Habe bis jetzt noch keinen gescheiten lösungsansatz.

Bis jetzt sieht mein Programm in etwa so aus

Code:
program OffertClient;

uses
  Forms,
  OffertViewUnit in 'Gui\OffertViewUnit.pas' {OffertViewForm},
  DataModule in 'DataModule\DataModule.pas' {DM: TDataModule},
  EditViewUnit in 'Gui\EditViewUnit.pas' {EditViewForm},
  ProgressbarViewUnit in 'Gui\ProgressbarViewUnit.pas' {ProgressBarViewForm},
  IntroUnit in 'Gui\IntroUnit.pas' {IntroForm},
  MainUnit in 'Gui\MainUnit.pas',
  IntroThreadUnit in 'Gui\IntroThreadUnit.pas';

{$R *.RES}



begin

  TMain.create();

end.

Code:
unit MainUnit;


interface

uses Windows,SysUtils,Forms,SystemFunc,Dialogs;

type
  TMain = class(TObject)

  private
    mHasError : Boolean;
    mSys     : TSystemFunc;

    procedure initIntro();
    procedure initDataModule();
    procedure initScreens();
    procedure hasError();


  public
   constructor create();


  end;

const
  APPLICATION_TITLE : String = 'Offert-System';

implementation

uses DataModule,CsIntF, EditViewUnit, AboutDialogUnit, Preview,
     ProgressbarViewUnit, OffertViewUnit,IntroUnit;


 {**
   Der Konstruktor initialisiert und registriert alle nötigen Forms.
   Ebenfalls wird überprüft ob bereits ein Offert-System gestartet wurde.
   Ist dies der Fall, wird die Applikation beendet die gerade gestartet wurde.

 }
  constructor TMain.create();
  var i : Integer;
  begin

    //Überprüft, dass nur eine Applikation pro PC gestartet wird.
    if ( FindWindow( Nil, PChar( APPLICATION_TITLE )) = 0 ) Then
    begin
      mHasError := False;

      //Applikation initialisieren
      Application.Initialize;
      Application.Title := APPLICATION_TITLE;

      initIntro();
      //mIntro := TIntroThread.Create(False);

      initDataModule();

      if(DM.DCOMConnection.Connected) Then IntroForm.ConnectionLabel.Caption := 'Connected ...';
      Application.ProcessMessages;
      initScreens();

      // Intro wird Angehalten
      if(not mHasError) Then
      begin
        IntroForm.StopIntro();

        // Haupt-Fenster anzeigen.
        OffertViewForm.Show;
     end;

      Application.Run;

    end
    else
    begin
      Windows.Beep(500,250);
      MessageDlg( APPLICATION_TITLE + ' is not able to run twice on this PC.', mtError, [mbOK], 0);
    end;
  end;
  Mit Zitat antworten Zitat