Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Form als eigener Thread (https://www.delphipraxis.net/31270-form-als-eigener-thread.html)

michael.kaufmann 7. Okt 2004 11:06

Re: Form als eigener Thread
 
nein eigentlich nicht wenn das formular in einem thread ist und nur in diesem thread bearbeitet wird ist das kein problem. Probleme gibt es nur wenn andere threads das formular ansprechen bzw. eine neue instanz von einem anderen thread erzeugt wird.

jaj die Tapplication da haben sie das problem mit clx und dlls :)

day 7. Okt 2004 11:17

Re: Form als eigener Thread
 
hallo
Das Intro hat im grossen und ganzen keine interaktionen. Deshalb sehe ich da einen kleineren Aufwand das Form als Thread zu erzeugen. Wenn ich hingegen das DataModule als Thread erzeugen würde wäre das ein weit grösserer Aufwand.

Jens Schumann 7. Okt 2004 11:24

Re: Form als eigener Thread
 
Hallo,
wenn ich es richtig verstehe handelt es sich hier um das Splashscreen-Problem.
Erzeuge im Projektquelltext das Formular mit dem Intro vor dem DataModul und
verwende Show anstatt ShowModal.

day 7. Okt 2004 20:38

Re: Form als eigener Thread
 
Hallo

Ich habe eine Lösung. Bin zwar nicht ganz so glücklich aber es läuft. Was haltet ihr davon?
Was würdet ihr verbessern?

Code:
  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
      //initCodeSite
      mSys := TSystemFunc.create();
      mSys.InitCodeSite();

      mHasError := False;

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

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

      // Kurze Pause damit der User das Intro auch sieht.
      // Processmessage wird benötigt damit die Schrift angezeigt wird.
      for i:= 1 to 100 do
      begin
        Application.ProcessMessages;
        sleep(20);
      end;
      initDataModule();

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

      // Kurze Pause damit der User sieht dass sich der Server verbunden hat.
      // Processmessage wird benötigt damit die Schrift angezeigt wird.
      for i:= 1 to 50 do
      begin
        Application.ProcessMessages;
        sleep(10);
      end;

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

      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;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:30 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz