![]() |
Semitransparente Abdeckung eines Grids
Hallo,
Welche Möglichkeiten hat man denn, um in einem Programm einen Teil des GUIs (in dem Fall ein Grid) abzudunkeln (so als ob man ein semitransparentes Panel darüber plaziert hätte), und der abgedunkelte Bereich sollte dann zusätzlich noch einen Schriftzug enthalten. Was ich bisher gefunden habe, war es mit einer Form mit Alphablennding zu probieren. Geht zwar, aber dann muß ich die Form bei Größenänderungen oder Positionswechslen des Grids immer synchron mitziehen. Modal kann ich sie auch nicht machen , da im Rest des Programms weiter gearbeitet werden muß. Mir wäre es irgendwie lieber, wenn ich auf eine Form verzichten könnte und statt dessen so etwas wie ein semitransparentes Panel drüber legen könnte (ohne externe Komponenten). Grüße, Uli |
AW: Semitransparente Abdeckung eines Grids
Versuch doch mal ein TImage mit einem halbtransparenten *.png draufzulegen.
Das kannst Du dann mit
Delphi-Quellcode:
an und ausschalten und es "fängt" Deine Mausklicks ab.
Image1.visible := True/False;
|
AW: Semitransparente Abdeckung eines Grids
Liste der Anhänge anzeigen (Anzahl: 1)
Hab ich nun gerade mal ausprobiert. Funktioniert an sich schon, nur wenn mein Bereich der abgedeckt wird z.B. einen Button enthält, so wird dieser nicht abgedeckt (obwohl er ja in dem Fall gar nicht benutzbar sein sollte). Oder wenn ich ein Tabsheet abdecken will, das ein Grid enthält, so wird zwar das Sheet abgedeckt, aber nicht das Grid selbst. :(
Ich bin dabei immer so vorgegangen, daß ich den Parent des Images auf das abzudeckende Control gesetzt hab mit Align = alClient. Ich hab mal einen Screenshot angehängt. Der dunkle Bereich ist der abgedunkelte und man sieht schön, wie der Controls auf dem Sheet nicht abgedeckt werden. Nur falls es etwas ausmachen sollte: arbeiten tu ich unter Windows 7 mit Delphi XE. Grüße, Uli |
AW: Semitransparente Abdeckung eines Grids
Liste der Anhänge anzeigen (Anzahl: 1)
Das sieht nach cxGrid aus. Dann hilft dir vielleicht das:
Anhang 36046 (auf ![]() |
AW: Semitransparente Abdeckung eines Grids
Und wenn du mal Image1.BringToFront aufrufst?
|
AW: Semitransparente Abdeckung eines Grids
Zitat:
Zitat:
|
AW: Semitransparente Abdeckung eines Grids
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Gruß aus den Bergen Günter |
AW: Semitransparente Abdeckung eines Grids
Hallo Günther,
das ist ja genau was ich suche! Funktioniert wie geschmiert. :party: Nun die Frage: darf ich deine Unit auch in einem kommerziellen Projekt einsetzen? Grüße, Uli |
AW: Semitransparente Abdeckung eines Grids
Zitat:
Aber evtl reicht es Dir ja schon, wenn Du "nur" alle Componenten des Containers enabled auf False setzt. Das ist ja mit einer einfachen For Schleife erledigt. Hier ein kleines Beispiel. Einfach ein Form mit einem Panel mit folgenden Imhalt: Button, Editfeld, RadioButton, Grid, ... Dann eine CheckBox1 auf das Form1 legen und folgenden Code einfügen. Das Panel1 inkl. aller enthaltener Komponenten werden Enabled False/True und jeweils ausgegraut. Man könnte auch noch ein Color in der proc setzen oder einzelne Komponenten gesondert behandeln...
Delphi-Quellcode:
Ich hoffe das hilft Dir.
procedure CompEnabler(pForm: TCustomForm; pComp: TControl; pEnabled: Boolean);
var i: Integer; // optional const EnabledColor: array[Boolean] of TColor = (clBtnFace, clWindow); // --optional begin for i := 0 to pForm.ComponentCount-1 do begin if pForm.Components[i] is TControl then begin if ((pForm.Components[i] as TControl).Parent = pComp) or (pForm.Components[i] = pComp) then begin (pForm.Components[i] as TControl).Enabled := pEnabled; // optional if (pForm.Components[i] is TEdit) then begin (pForm.Components[i] as TEdit).Color := EnabledColor[pEnabled]; end; // --optional end; end; end; end; procedure TForm1.CheckBox1Click(Sender: TObject); begin CompEnabler(Form1, Panel1, CheckBox1.Checked); end; |
AW: Semitransparente Abdeckung eines Grids
Zitat:
mir dann auch wieder zukommen lassen könntest. Gruß aus den Bergen Günter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 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