![]() |
Maximiert
Ich habe ein Programm, das maximiert startet und einen schwarzen Background hat.
Die erste Form ist ein SplashScreen, die zweite eine "Login"-Form. Beide haben einen schwarzen Hintergrund. Wenn der SplashScrenn nach erfolgreichem Laden zur zweiten Form wechselt, funktioniert das nicht ganz so, wie das mir vorstelle. Zum einen, blitzt zwischen den beiden Formen, kurz der Desktop auf und wie kann ich es realisieren, dass die Formen praktisch seicht eingeblendet werden, wie man das zum Beispiel von "GTA San Andreas" kennt. Also quasi einen Einblendeffekt. |
Re: Maximiert
Nun ich nehme mal an beide Formen gehen ganzen Bildschirm (Titel). Mach doch einfach ein schwarzes Hintergrund Formular. Darauf erstellst du dann den SplashScreen und danach die Login-Form.
Für einen Slide Effekt musst du AlphaBlending benutzen, du setzt AlphaBlendValue auf 0, nach dem Erstellen der Form, also wenn die Form angezeigt wird (OnShow), setzt du in einer Schleife AlphaBlendValue auf 255. In der Schleife ein Sleep nicht vergessen sonst siehst du nichts. |
Re: Maximiert
deinen ersten text zu meinem Problem des aublitzenen desktops verstehe ich nicht ganz, denn ich glaube so wie du es meinst habe ich es gemacht und zu dem zweiten meckert er mit wenn ich OnShow:
Delphi-Quellcode:
eingebe mit >>incompatible types 'boolean' and 'integer'<< und zu dem sleep, muss ich das über AlphaBlend setzen? Ich bin zwar kein Delphi-Neuling, dennoch hbae ich bis jetzt auf Schleifen verzichten können, und habe daher leider nich so den Schimmer, wie ich das in ne Schleife packen könnte. Und welches procedure TForm2.FormShow(Sender: TObject); begin AlphaBlend:=255; end;
Delphi-Quellcode:
nehme ich da am besten?
begin
Sleep(?) end; |
Re: Maximiert
Die Eigenschaft .AlphaBlend gibt an ob geblendet wird.
Delphi-Quellcode:
AlphaBlendValue:=255;
AlphaBlend := True; |
Re: Maximiert
Und zu dem sleep, muss ich das über AlphaBlend setzen? Ich bin zwar kein Delphi-Neuling, dennoch hbae ich bis jetzt auf Schleifen verzichten können, und habe daher leider nich so den Schimmer, wie ich das in ne Schleife packen könnte. Und welches
Delphi-Quellcode:
nehme ich da am besten?
begin
Sleep(?); end; |
Re: Maximiert
Sleep hält das Programm für eine bestimmte Zeit an. Ein Timer wäre besser.
Delphi-Quellcode:
For i := 0 to 255
begin AlphaBlendValue := i; Sleep(100); end; |
Re: Maximiert
Also du erstellst eine kleine Schwarze Form die du anzeigst. Danach erstellst deinen SplashScreen du zeigt diesen auf der ersten Form an. Danach erstellst du deine LoginForm und zeigst auch diese auf der ersten Form an. Somit siehst du denn Desktop nicht mehr.
Zum Alpha Blending: hier mal meine Klasse dazu:
Delphi-Quellcode:
unit uBlendForm;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TBlendForm = class(TForm) private { Private-Deklarationen } FBlendValue: Byte; FFirstShow: Boolean; FBlendTimer: TTimer; FBlendOut: Boolean; procedure TimerProc(Sender: TObject); procedure SetBlendOut(const Value: Boolean); public { Public-Deklarationen } constructor Create(AOwner: TComponent); override; procedure DoClose(var Action: TCloseAction); override; procedure DoShow; override; published property BlendOut: Boolean read FBlendOut write SetBlendOut; end; var BlendForm: TBlendForm; implementation {$R *.dfm} constructor TBlendForm.Create(AOwner: TComponent); begin inherited; FBlendOut := false; FBlendValue := 0; FFirstShow := true; FBlendTimer:= TTimer.Create(Self); FBlendTimer.Enabled := false; FBlendTimer.Interval := 1; FBlendTimer.OnTimer := TimerProc; end; procedure TBlendForm.DoClose(var Action: TCloseAction); var i: integer; begin inherited; if FBlendOut then begin for i := 255 downto 0 do begin AlphaBlendValue := i; Sleep(1); Application.ProcessMessages; end; end; end; procedure TBlendForm.DoShow; begin inherited; if FFirstShow then begin FBlendTimer.Enabled := true; end; end; procedure TBlendForm.SetBlendOut(const Value: Boolean); begin FBlendOut := Value; end; procedure TBlendForm.TimerProc(Sender: TObject); begin if FBlendValue < 255 then begin inc(FBlendValue); if FBlendValue = 255 then begin FBlendTimer.Enabled := false; end; AlphaBlendValue := FBlendValue; end; end; // oder das Ganze in FormActivate // //procedure TBlendForm.FormActivate(Sender: TObject); //var // i: integer; //begin // for i := 0 to 255 do begin // AlphaBlendValue := i; // Sleep(1); // Application.ProcessMessages; // end; //end; end. |
Re: Maximiert
thx. arbu man. hat mir schon weitergeholfen dein text zum AlphaBlend. Jetz noch die Frage, kann man die Farbe des AlphaBlend beeinflussen. Ist ja so ein weißes Alphablend. geht das auch in schwarz?
|
Re: Maximiert
Alphablend verschmilzt mit dem Hintergrund
|
Re: Maximiert
zu deinem Vorschlag wegen des aufblitzenden Desktops:
das mit dieser schwarzen hintergrund form, kann ich das auch nachträglich machen? oder meinst du Frames? |
Re: Maximiert
Ich wollte nur ausdrücken, daß Alphabelnd keine Farbe hat, sondern der Inhalt des Fensters mit dem Hintergrund "gemischt" wird. Was meinst du mit schwarzen Alphablend?
|
Re: Maximiert
vielleicht funzt es schon mit dem schwarzen alphablend, wenn ich den aublitzenden (hellen) desktop verhindere.
ich meine sowas: ![]() ich meine z.B. das ein- bzw ausblenden des "RATING PANDING" am anfang des trailers. P.S.: Nicht, das jetzt was missverstanden wird: Ich möchte es für mein Prog. nicht für Internet, ich glaube das funzt ein bisschen anders. Aber wie gesagt, sowas in der art. |
Re: Maximiert
Du brauchst halt einen schwarzen Hintergrund (z.B. andere Form dahinter)
|
Re: Maximiert
das war ja auch der Vorschlag von "Arbu Man" aber meine Frage kann ich diese Hintergrundform auch nachträglich machen.
P.S.: Die bereits vorhandenen Formen "SplashScreen" und "Loginform" haben einen schwarzen Hintergrund. Nur der Desktop (heller hintergrund) blitzt zwischen beiden Formen kurz auf, wenn die erste Form zur zweiten wechselt. |
Re: Maximiert
Du könntest auch das zu Blendende auf eine Panel ablegen:
![]() |
Re: Maximiert
Vielen Dank, "mKinzler". Sowohl, das alphablend, sowie auch das problem mit dem auflitzenden Desktop ist gelöst. :lol:
Und natürlich auch Thx. an "Arbu Man" |
Re: Maximiert
sry, dass ich doch nochmal stören muss. Desktop blitzt wieder auf. :( Die Komponente, die AlphaBlend anwenden soll, muss auch AlphaBlend im OI haben? Bzw wo muss ich
Delphi-Quellcode:
anwenden? Form, TransparentesPanel, oder Inhalt des Panels? Und
var
i: integer; begin for i := 0 to 255 do begin AlphaBlendValue := i; AlphaBlend:=true; Sleep(1); Application.ProcessMessages; end; end; und als welches "On"-Ereignis? OnShow??, OnActivate?? (Form) OnEnter?? (Form, TransparentesPanel, Inhalt des Panels) |
Re: Maximiert
hallo pirat. ab zu zu könntest du ruhig mal die Beiträge, die man hier verlinkt richtig Lesen und auch die Suchfunktion des Forums und die OH von Delphi verwenden, und dies nicht andere für dich erledigen lassen. :warn:
Delphi bringt auch einige Beispiele mit. |
Re: Maximiert
Ok. :oops:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:50 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