![]() |
Form einblenden andere forms laden und form ausblenden
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 |
Re: Form einblenden andere forms laden und form ausblenden
Meinst du sowas, wie in Sakuras Splahsscreen-Tutorial hier in der DP?
Mussts halt nur in ner Schleife und dem Alphawert einblenden lassen. |
Re: Form einblenden andere forms laden und form ausblenden
Zitat:
|
Re: Form einblenden andere forms laden und form ausblenden
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. |
Re: Form einblenden andere forms laden und form ausblenden
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
(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. |
Re: Form einblenden andere forms laden und form ausblenden
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] |
Re: Form einblenden andere forms laden und form ausblenden
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:
|
Re: Form einblenden andere forms laden und form ausblenden
Zitat:
(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:
Delphi-Quellcode:
oder:
{$IFDEF BLABLA}machwas;{$ENDIF}
Delphi-Quellcode:
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.
{$Message Hint 'Füttere die Katzen'}
|
Re: Form einblenden andere forms laden und form ausblenden
Zitat:
(Beim Free? Wird das OnClose Ereignis noch abgearbeitet? , ...) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 Uhr. |
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