Delphi-PRAXiS
Seite 1 von 3  1 23      

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 Lightbox-Effekt für Form (https://www.delphipraxis.net/140886-lightbox-effekt-fuer-form.html)

Codewalker 28. Sep 2009 10:42


Lightbox-Effekt für Form
 
Ich möchte gerne in einem kleinen Dateimanager für Bilder ein Vorschau anbieten, wie man sie von Webseiten kennt. Dabei soll der Hauptbereich des Formulars (ohne Menüleiste) abgedunkelt werden und zentral das Bild angezeigt werden. Bei Webseiten läuft das afaik unter dem Namen "Lightbox". Wie würdet ihr einen solchen Effekt in Delphi umsetzen?

Meine Versuche bisher:
:arrow: Ein halbtransparentes PNG in einem TImage: Klappt nicht, weil TImage kein echtes Fenster und hinter anderen Komponenten verschwindet
:arrow: Das ganze mit TImage32 von Graphics32: Klappt nicht. TImage32 bleibt zwar im Vordergrund, ist aber selbst nicht durchsichtig.

Grolle 28. Sep 2009 12:08

Re: Lightbox-Effekt für Form
 
Hi,

wie wäre es mit Alpha Blend? - Auf eine Form und die andere Form dann im Vordergrund anzeigen.

Viele Grüße ...

// Edit - kann man in einer Schleife auch sehr schön stufenweise machen

Brainshock 28. Sep 2009 14:13

Re: Lightbox-Effekt für Form
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,

ich hab das mal für modale Fenster gemacht, d.h. wenn ein modales Fenster geöffnet wird, legt sich ein halbtransparentes graues Formular zwischen Hauptfenster und modales Fenster.

Den Quellcode (Demoexe) hab ich mal in den Anhang gepackt, vielleicht hilft dir das weiter.

Gruß,
Matthias

Uwe Raabe 28. Sep 2009 17:16

Re: Lightbox-Effekt für Form
 
Ich habe dafür mal folgende Funktion geschrieben:

Delphi-Quellcode:
function ShowModalDimmed(Form: TForm; Centered: Boolean = true): TModalResult;
var
  Back: TForm;
begin
  Back := TForm.Create(nil);
  try
    Back.Position := poDesigned;
    Back.BorderStyle := bsNone;
    Back.AlphaBlend := true;
    Back.AlphaBlendValue := 192;
    Back.Color := clBlack;
    Back.SetBounds(0, 0, Screen.Width, Screen.Height);
    Back.Show;
    if Centered then begin
      Form.Left := (Back.ClientWidth - Form.Width) div 2;
      Form.Top := (Back.ClientHeight - Form.Height) div 2;
    end;
    result := Form.ShowModal;
  finally
    Back.Free;
  end;
end;

chris 19. Okt 2009 12:54

Re: Lightbox-Effekt für Form
 
Huhu,

genau sowas brauchte ich mal für die aufrufende Form, nicht den ganzen Desktop.

Vielleicht kann es jemand gebrauchen:

Delphi-Quellcode:
function ShowModalDimmed(Form, ParentForm: TForm): TModalResult;
var
  Back: TForm;
  i: Byte;
begin
  Back := TForm.Create(nil);
  try
    Back.Position := ParentForm.Position;
    Back.BorderStyle := ParentForm.BorderStyle;
    Back.BorderIcons := [];
    Back.AlphaBlend := true;
    Back.AlphaBlendValue := 0;
    Back.Color := clBlack;
    with ParentForm do Back.SetBounds(Left, Top, Width, Height);
    Back.Show;
    for i := 1 to 185 do
    begin
      Back.AlphaBlendValue := i;
      Sleep(2)
    end;
    Form.Left := ParentForm.left + ((ParentForm.Width - Form.Width) div 2);
    Form.Top := ParentForm.Top + ((ParentForm.Height - Form.height) div 2);
    Result := Form.ShowModal
  finally
    Back.Free;
    ParentForm.BringToFront
  end
end;

xOli30 25. Aug 2011 08:06

AW: Lightbox-Effekt für Form
 
Hallo

Ich möchte dieses veraltete Thema noch mal eben aufgreifen, da ich das hier beschriebene gerade benötige. Kann mir evt jemand sagen wie und mit welchen Argumenten die Funktion aufgerufen werden muß? Ich will die "LightBox" Effect als Loading Anzeige nutzen. Wenn also geladen wird, soll sich der "Fenster-Bereich" dimmen und zentral ein Loading-Image angezeigt werden.

Vielen Dank

DeddyH 25. Aug 2011 08:16

AW: Lightbox-Effekt für Form
 
Welche Version denn? Bei der von Uwe gibst Du lediglich das Formular an, das Du anzeigen möchtest, bei der von cris zusätzlich noch das abzudunkelnde dahinterliegende Formular.

xOli30 25. Aug 2011 08:18

AW: Lightbox-Effekt für Form
 
Hallo

Was meinst du mit Version?
Das heisst also wenn ich im aktuellen Fenster einen Loading-Bereich simulieren will geb ich einfach als Übergabe Form1 (z.B.) ?

lg

DeddyH 25. Aug 2011 08:23

AW: Lightbox-Effekt für Form
 
Ich meinte, welche Funktion Du denn verwendest, es wurden ja verschiedene gepostet.

xOli30 25. Aug 2011 08:27

AW: Lightbox-Effekt für Form
 
ah ok. Ich bin an der von Chris da ich den Dimmbereich nur im aktuellen Fenster haben will und nicht über den ganzen Desktop.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:07 Uhr.
Seite 1 von 3  1 23      

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