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
 
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
 
#7

AW: Semitransparente Abdeckung eines Grids

  Alt 12. Jan 2012, 12: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
 


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 16:05 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