AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Semitransparente Abdeckung eines Grids

Ein Thema von ULIK · begonnen am 12. Jan 2012 · letzter Beitrag vom 20. Jan 2012
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#1

Semitransparente Abdeckung eines Grids

  Alt 12. Jan 2012, 10:09
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
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Semitransparente Abdeckung eines Grids

  Alt 12. Jan 2012, 11:31
Versuch doch mal ein TImage mit einem halbtransparenten *.png draufzulegen.

Das kannst Du dann mit Image1.visible := True/False; an und ausschalten und es "fängt" Deine Mausklicks ab.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Semitransparente Abdeckung eines Grids

  Alt 12. Jan 2012, 12:50
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
Miniaturansicht angehängter Grafiken
darken.png  
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Semitransparente Abdeckung eines Grids

  Alt 12. Jan 2012, 13:00
Das sieht nach cxGrid aus. Dann hilft dir vielleicht das:
build2011.1_qglockedstateimage.png
(auf http://www.devexpress.com/Subscripti...ge=3#autolist1 nach "Locked View Image" suchen)
Uli Gerhardt
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

AW: Semitransparente Abdeckung eines Grids

  Alt 12. Jan 2012, 13:01
Und wenn du mal Image1.BringToFront aufrufst?
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Semitransparente Abdeckung eines Grids

  Alt 12. Jan 2012, 13:09
Das sieht nach cxGrid aus. Dann hilft dir vielleicht das:
Jup, ist ein cxGrid. Leider kann ich im Moment noch nicht auf die aktuelle Version hochziehen, sondern bin noch auf einen etwas älteren Build (56) angewiesen. Somit fällt diese Lösung erst mal flach.

Und wenn du mal Image1.BringToFront aufrufst?
Das funktioniert leider auch nicht.
  Mit Zitat antworten Zitat
Tyrolean

Registriert seit: 3. Jul 2003
76 Beiträge
 
Delphi 7 Professional
 
#7

AW: Semitransparente Abdeckung eines Grids

  Alt 12. Jan 2012, 13:19
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).
Ich habe mir mal mit Hilfe so ein Teil gebastelt, ging dann auch, habe es dann aber doch nie eingesetzt. Vielleicht hilft es dir ja etwas.

Gruß aus den Bergen
Günter
Angehängte Dateien
Dateityp: rar schleier.rar (3,2 KB, 36x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Semitransparente Abdeckung eines Grids

  Alt 12. Jan 2012, 13:51
Hallo Günther,

das ist ja genau was ich suche! Funktioniert wie geschmiert.
Nun die Frage: darf ich deine Unit auch in einem kommerziellen Projekt einsetzen?


Grüße,
Uli
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Semitransparente Abdeckung eines Grids

  Alt 12. Jan 2012, 13:55
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.
Stimmt, hab ich auch gerade mal ausprobiert.

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:
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;
Ich hoffe das hilft Dir.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Tyrolean

Registriert seit: 3. Jul 2003
76 Beiträge
 
Delphi 7 Professional
 
#10

AW: Semitransparente Abdeckung eines Grids

  Alt 12. Jan 2012, 13:58
das ist ja genau was ich suche! Funktioniert wie geschmiert.
Nun die Frage: darf ich deine Unit auch in einem kommerziellen Projekt einsetzen?
Klar. Habe ich ja auch mit Hilfe anderer gemacht. Schön wäre es, wenn du diese Unit bei Verbesserungen
mir dann auch wieder zukommen lassen könntest.

Gruß aus den Bergen
Günter
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:36 Uhr.
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