Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Mainform verschleiern (https://www.delphipraxis.net/106678-mainform-verschleiern.html)

Alfonso 14. Jan 2008 23:18


Mainform verschleiern
 
Ich möchte, dass während ein modales Fenster angezeigt wird, das Mainform grau verschleiert wird.

Meine Idee bisher ist: ich speichere in ein TImage das Mainformbild mit Mainform.GetFormImage. Dieses Bild wird verschleiert und über das gesamte Mainform gelegt.

Wenn das der richtige Ansatz ist: Wie verschleiere ich nun das Bild (so ähnlich wie man das jetzt auf vielen Webseiten sieht, wenn man ein popup öffnet).

Gibt es sonst einen anderen Ansatz?

Gruß
Alfonso

Larsi 15. Jan 2008 06:09

Re: Mainform verschleiern
 
du sagst einfach vor show modal color = clgrey

Alfonso 15. Jan 2008 06:35

Re: Mainform verschleiern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Larsi
du sagst einfach vor show modal color = clgrey

Was soll das denn auswirken? Damit setze ich doch die Farbe der Canvas des Formulars auf grau. Alle Elemente die darauf sind, inkl. andere Icons bleiben in der Originalfarbe.

Anbei ein Test, wie ich es mir vorstelle. Die linke Hälfte ist original, die zweite Hälfte ausgegraut. Ich habe es mit Photoshop gemacht, in dem ich ein graues Rechteck mit einer Deckkraft von 60% rübergelegt habe.

Gruß
Alfonso

mkinzler 15. Jan 2008 06:42

Re: Mainform verschleiern
 
Man könnte links und rechts je einen Panel nehmen, der weiss ist. den eigentlichen Hintergrund der Form dunkel. Durch Erhöhung der Transparenz des Panels würden alle Komponenten dunkler.

Alfonso 15. Jan 2008 07:48

Re: Mainform verschleiern
 
Zitat:

Zitat von mkinzler
Man könnte links und rechts je einen Panel nehmen, der weiss ist. den eigentlichen Hintergrund der Form dunkel. Durch Erhöhung der Transparenz des Panels würden alle Komponenten dunkler.

Wenn du mir jetzt noch sagst, mit welcher Eigenschaft des TPanel ich die Transparenz des Panels festlege ist dann alles klar.
Ein Formular hat die Eigenschaft Alphablend, nicht jedoch ein TPanel.

Übrigens, ich will nicht zwei Hälften machen, sondern alles Grau. Die Hälften sind nur im Beispiel, um zu verdeutlichen was ich will.

Gruß
Alfonso

RavenIV 15. Jan 2008 07:49

Re: Mainform verschleiern
 
Zitat:

Zitat von Alfonso
Ich möchte, dass während ein modales Fenster angezeigt wird, das Mainform grau verschleiert wird.

Das geht aber ganz klar am Windows-Standard vorbei.
Man erkennt ein inaktives Fenster doch daran, dass die Titelzeile eine andere Farbe hat.
Und bei einem modalen Fenster kann man im Hauptfenster dann eh nichts mehr machen.

Alfonso 15. Jan 2008 07:55

Re: Mainform verschleiern
 
Zitat:

Zitat von RavenIV
Das geht aber ganz klar am Windows-Standard vorbei.

Ja, das weis ich! Aber nenne mir ein Programm, dass sich heute am Windows-Standars hält. Nicht mal Microsoft hält sich mit dem neuen Office am Standard (keine Menüs). Viele Programme haben inzwischen Skins, die dem Programm so aussehen lassen, als wären sie nicht von dieser "Windows"-Welt.

Also, warum nicht mal was neues probieren. Im Web hat sich das etabliert, dass man bei Popups den Hintergrund ausgraut. Warum den nicht auch bei Programme?
Gruß
Alfonso

mkinzler 15. Jan 2008 08:00

Re: Mainform verschleiern
 
http://www.delphipraxis.net/internal...t.php?p=216731

Alfonso 15. Jan 2008 08:31

Re: Mainform verschleiern
 
So, jetzt bin ich selber fündig geworden und will die Antwort nicht vorenthalten, falls jemand die gleiche Lösung sucht.

Ich habe in meinem Programm die Funktion "Alphablendrect" aus DP aufgenommen.
Dann habe ich ein kleines unsichtbares Panel auf mein Mainform gesetzt, auf dem ein TImage mit align:=alclient platziert ist (damit ich eine Canvas habe).
Wenn ich den Schleier haben will, rufe ich folgendes auf:
Delphi-Quellcode:
 Panel1.Align:=alclient;
 Image2.Picture.Bitmap:=self.GetFormImage;
 AlphaBlendRect(Image2.Canvas,panel1.ClientRect,clblack,70);
 Panel1.Show;
Dadurch erreiche ich den Grauschleier. Will ich diesen entfernen, rufe ich nun nur folgendes auf:
Delphi-Quellcode:
Panel1.Hide;
Gruß
Alfonso

RavenIV 15. Jan 2008 08:38

Re: Mainform verschleiern
 
Zitat:

Zitat von Alfonso
Zitat:

Zitat von RavenIV
Das geht aber ganz klar am Windows-Standard vorbei.

Ja, das weis ich! Aber nenne mir ein Programm, dass sich heute am Windows-Standars hält. Nicht mal Microsoft hält sich mit dem neuen Office am Standard (keine Menüs). Viele Programme haben inzwischen Skins, die dem Programm so aussehen lassen, als wären sie nicht von dieser "Windows"-Welt.

Das neue Office hält sich an den Vista-Standard.
Da gibt es die sogenannten "Ribbons".

Und muss man denn alles schlechte von anderen Programmen nachmachen?

Software, die bei uns entwickelt wird, hält sich an den Windows-Standard.

Bernhard Geyer 15. Jan 2008 08:50

Re: Mainform verschleiern
 
Zitat:

Zitat von RavenIV
Das neue Office hält sich an den Vista-Standard.
Da gibt es die sogenannten "Ribbons".

Auch wenns es jetzt ganz Off-Topic wird:
MS hält sich seit Office XP nicht mehr an den Windows Style Guide. Auch bei der 2007er-Version ist das so:
- Ribbons gibt es unter Windows nicht (Ich sehe keine andere Vista-App die sowas macht)
- Das geänderte "Hauptmenu" gibt es auch nicht unter Vista
- Das Farbschema (Theming) von Vista wird mit Office 2007 in einigen Bereichen ignoriert[/quote]

Zitat:

Zitat von RavenIV
Software, die bei uns entwickelt wird, hält sich an den Windows-Standard.

Wird bei uns auch größtmöglich so gemacht. Damit gibt es beim Kunden die wenigsten Diskussionen wenn man entsprechende Windows-Apps als vergleich nehmen kann. Leider gibt es Bereiche in denen es keine Vorgaben gibt. Aber glücklicherweise bietet uns ElPack an das der Kunde die App mit einem Theme "verhunzen" kann.


(Halb-)Back To Topic:

Das es bei Webapps oft das "verschleiern" verwendet wird liegt in der Sache begründet. Normalerweise müssten weitere Browser-Instanzen verwendet werden aber in Zeiten von Popup-Blocker und Tabed-Browsing würde das auf einer nicht unerheblichen Anzahl von Rechnern einfach nicht funktionieren. Deshalb "simuliert" man hier normales verhalten von nativen Apps.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:39 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