AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Form einblenden andere forms laden und form ausblenden
Thema durchsuchen
Ansicht
Themen-Optionen

Form einblenden andere forms laden und form ausblenden

Ein Thema von Christian18 · begonnen am 28. Jul 2005 · letzter Beitrag vom 29. Jul 2005
Antwort Antwort
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#1

Form einblenden andere forms laden und form ausblenden

  Alt 28. Jul 2005, 14:48
Hallo,

wie kann ich bei einem Programm start. eine form über den alpha effekt einblenden lassen? dann sollen alle anderen forms geladen werden. der lade status soll auf einer ProgressBar angezeigt werden und dann soll die form wieder ausgeblendet werden und die haupt form angezeigt werden. wie kann ich das machen???

MFG Christian18
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Form einblenden andere forms laden und form ausblenden

  Alt 28. Jul 2005, 14:51
Meinst du sowas, wie in Sakuras Splahsscreen-Tutorial hier in der DP?
Mussts halt nur in ner Schleife und dem Alphawert einblenden lassen.
Julian J. Pracht
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#3

Re: Form einblenden andere forms laden und form ausblenden

  Alt 28. Jul 2005, 14:58
Zitat von Ultimator:
Meinst du sowas, wie in Sakuras Splahsscreen-Tutorial hier in der DP?
Mussts halt nur in ner Schleife und dem Alphawert einblenden lassen.
ja so ähnlich bloß das die erste form eingeblendet wird, dann soll die anderen forms geladen werden und dann soll die lade forn wieder ausgeblendet werden und die haupt form angezeigt werden.
  Mit Zitat antworten Zitat
Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Form einblenden andere forms laden und form ausblenden

  Alt 28. Jul 2005, 15:02
du gibst an dass als erstes nur der splashscreen angezeigt wird. ist dieser fertig reingeblendet, zeigtst du die anderen forms mit Form.Show an, und dann blendest du den splashscreen wieder aus. wenn er dann ganz ausgeblendet ist schliesst du die splashscreen-form.
ach ja wenn der splashscreen die anderen forms überlagern soll stell z.b. fsStayOnTop beim FormStyle des Splashscreens ein.
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Form einblenden andere forms laden und form ausblenden

  Alt 28. Jul 2005, 16:01
Zitat von Christian18:
ja so ähnlich bloß das die erste form eingeblendet wird, dann soll die anderen forms geladen werden und dann soll die lade forn wieder ausgeblendet werden und die haupt form angezeigt werden.
Ich habe mal schnell was gebastelt (ohne sakuras Tutorial als Grundlage, es geht ja nur um das Alphablending)

(Beispiel als *.zip im Anhang)

Delphi-Quellcode:
program Project1;
////////////////////////////////////////////////////////////////////////////////
// Splash Beispiel mit Alphablending (Ein- und Ausblenden)
// written in 2005 by MaBuSE for [url]www.delphipraxis.net[/url]
////////////////////////////////////////////////////////////////////////////////
uses
  Forms,
  Unit1 in 'Unit1.pas{Form1}, // Hauptformular
  Unit2 in 'Unit2.pas{Form2}, // Dummyformular ohne Funktion
  Unit3 in 'Unit3.pas{Form3}; // Splash

{$R *.res}

begin
  Application.Initialize;
  Form3 := TForm3.Create(nil);
  Form3.Show;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.
Delphi-Quellcode:
unit Unit1;
////////////////////////////////////////////////////////////////////////////////
// Splash Beispiel mit Alphablending (Ein- und Ausblenden)
// written in 2005 by MaBuSE for [url]www.delphipraxis.net[/url]
////////////////////////////////////////////////////////////////////////////////
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormActivate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses unit3;

{$R *.dfm}

{$J+}
procedure TForm1.FormActivate(Sender: TObject);
const
  FirstTime: Boolean = True;
begin
  // Wenn Hautformular sichtbar (also nach Application.Run in *.dpr)
  // Splash wieder ausblenden und aus Speicher entfernen
  if FirstTime then
  begin
    FirstTime := False;
    Form3.Close;
  end;
end;
{$J-}

end.
Delphi-Quellcode:
unit Unit3;
////////////////////////////////////////////////////////////////////////////////
// Splash Beispiel mit Alphablending (Ein- und Ausblenden)
// written in 2005 by MaBuSE for [url]www.delphipraxis.net[/url]
////////////////////////////////////////////////////////////////////////////////
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm3 = class(TForm)
    Shape1: TShape; // optisch, keine Funktion
    Label1: TLabel; // optisch, keine Funktion
    procedure FormShow(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.FormCreate(Sender: TObject);
begin
  // Wird beim Create aufgerufen
  BorderStyle := bsNone;
  FormStyle := fsStayOnTop;
  Position := poMainFormCenter;
  Color := clRed; // :-)
end;

procedure TForm3.FormShow(Sender: TObject);
begin
  // Wird beim Show aufgerufen, aber Form ist noch nicht sichtbar
  Form3.AlphaBlendValue := 0;
  Form3.AlphaBlend := true; // Form ist nun trasparent (=unsichtbar)
end;

procedure TForm3.FormActivate(Sender: TObject);
var
  i: Integer;
begin
  // wird aufgerufen, wenn Form auf dem Schirm "sichtbar" ist. (ist ja noch transparent)

  // In Schleife einblenden
  for i := 0 to 255 do
  begin
    Form3.AlphaBlendValue := i;
    Application.ProcessMessages;
  end;
  sleep(500); // eine halbe Sek. warten (kann natürlich entfernt werden)
end;

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
var
  i: Integer;
begin
  // Wenn Form geschlossen wird, ausblenden und "Self.Free" machen
  for i := 255 downto 0 do
  begin
    Form3.AlphaBlendValue := i;
    Application.ProcessMessages;
  end;
  Action := caFree;
end;

end.
Angehängte Dateien
Dateityp: zip splashscreen_158.zip (3,8 KB, 131x aufgerufen)
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#6

Re: Form einblenden andere forms laden und form ausblenden

  Alt 29. Jul 2005, 09:06
Hallo,

ich habe es mal versucht in mein Programm einzubinden. Leider funktioniert es nicht. ich schicke einfach mal den Quellcode.


Delphi-Quellcode:
unit ULoad;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, jpeg, ComCtrls;

type
  TFLoad = class(TForm)
    Image1: TImage;
    ProgressBar1: TProgressBar;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormActivate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  FLoad: TFLoad;

implementation

{$R *.dfm}

procedure TFLoad.FormActivate(Sender: TObject);
  var i : Integer; // Schleifenvariable
begin
  for i:=0 to 25 do
    begin
      FLoad.AlphaBlendValue:=i * 10;
      Application.ProcessMessages;
    end;
end;

procedure TFLoad.FormClose(Sender: TObject; var Action: TCloseAction);
  var i : Integer; // Schleifenvariable
begin
  for i:=0 to 25 do
    begin
      FLoad.AlphaBlendValue:=255 - i * 10;
      Application.ProcessMessages;
    end;
end;

end.


program Test;

uses
  Forms,SysUtils,
...


...

{$R *.res}

begin
  Application.Initialize;
  Application.Title:='GM-Praxis2005';
  with TFLoad.Create(nil) do try
    ProgressBar1.Max:=4;

    Application.CreateForm(TFAnmeldung, FAnmeldung);

    Application.CreateForm(TFMain, FMain);

    Application.CreateForm(TDM, DM);

    Application.CreateForm(TFPatEdit, FPatEdit);
  finally
    Free;
  end;
  Application.Run;
end.

Es kommt ein Fehler:

Dieser hier:

[Fehler]
Zugriffsverletzung bei Adresse 00467D88 in Modul 'Test.exe'. Lesen von Adresse 000002E1.
[/Fehler]
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#7

Re: Form einblenden andere forms laden und form ausblenden

  Alt 29. Jul 2005, 09:55
Da der J-Schalter nur noch da ist, um wirklich beinalten code (object pascal u.ä.) übersetzen zu können, solltest du aber das FirstShow in den private teil deiner Form schieben und im Constructor auf true setzten.
Das hat ausserdem noch den Vorteil, dass du von überall her zugreifen kannst, um festzustellen, ob die Form schonmal gezeigt wurde.
Generell sollte man sowieso vermeiden, compilerschalter im code zu setzen.
Zitat:
Die Direktive $J legt fest, ob typisierte Konstanten geändert werden können. Im Status {$J+} ist diese Änderung möglich. Typisierte Konstanten sind in diesem Fall mit initialisierten Variablen vergleichbar. Im Status {$J-} sind typisierte Konstanten tatsächlich konstant. Jeder Versuch, sie zu ändern, führt zu einer Fehlermeldung durch den Compiler.
In früheren Versionen von Delphi und Borland Pascal konnten typisierte Konstanten immer geändert werden (wie im Status {$J+}). Deshalb muß älterer Quelltext, der änderbare typisierte Konstanten enthält, im Status {$J+} compiliert werden. Bei neuen Anwendungen sollten Sie aber initialisierte Variablen und den Status {$J-} verwenden.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

Re: Form einblenden andere forms laden und form ausblenden

  Alt 29. Jul 2005, 10:53
Zitat von Sidorion:
Da der J-Schalter nur noch da ist, um wirklich beinalten code übersetzen zu können, ...Generell sollte man sowieso vermeiden, compilerschalter im code zu setzen.
Ich gebe Dir in dem Punkt Recht, das der J-Schalter nicht benutzt werde sollte.
(Ich habe es auch "Macht der Gewohnheit" benutzt.)

Ich gebe Dir nicht Recht was Compiler Schalter im Source angeht.
Wir haben hier ein Team von ca. 40 Delphi Entwicklern. Die Programme werden direkt über ReleaseLabel aus der Versionskontrolle genommen und von einem build Server übersetzt.
Der Build Server ignoriert die *.dof und *.cfg Dateien und benutzt die Firmen Vorgaben der Compilerschalter. Die einzige Möglichkeit als Programmierer Einfluss darauf zu nehmen ist ein gezieltes Setzen im Quellcode. Dazu sind die Schalter ja schliesslich da!
Man sollte Sie allerding nur Benutzen wenn man auch weiß was man da tut.
Ein [Strg+O][Strg+O] (Das ist ein o, keine Null) um Die kompletten Schalter am Dateianfang einzufügen ist nicht empfehlenswert.
Ich denke da nur an den Schalter {$I+} oder {$I-} diese machen nur im Quelltext Sinn.
oder bedingte Compilierung: {$IFDEF BLABLA}machwas;{$ENDIF} oder: {$Message Hint 'Füttere die Katzen'} Da das Compilerschalter Thema hier offtopic ist, können wir gerne für weitere Diskussion einen neuen Thread zu diesem Thema "Compilerschalter im Quelltext?" öffnen.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

Re: Form einblenden andere forms laden und form ausblenden

  Alt 29. Jul 2005, 10:55
Zitat von Christian18:
Es kommt ein Fehler:
Dieser hier:
[Fehler]
Zugriffsverletzung bei Adresse 00467D88 in Modul 'Test.exe'. Lesen von Adresse 000002E1.
[/Fehler]
Debugge mal und sag mir an welcher Stelle der Fehler auftritt.
(Beim Free? Wird das OnClose Ereignis noch abgearbeitet? , ...)
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz