AGB  ·  Datenschutz  ·  Impressum  







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

Nur Stringgrid transparent ?

Ein Thema von oldman62 · begonnen am 27. Mär 2021 · letzter Beitrag vom 30. Mär 2021
Antwort Antwort
Seite 1 von 2  1 2      
oldman62

Registriert seit: 29. Dez 2012
6 Beiträge
 
#1

Nur Stringgrid transparent ?

  Alt 27. Mär 2021, 20:58
Hallo,
gibt es eine Möglichkeit nur ein Stringgrid transparent zu machen und nicht die ganze Form?
Ich habe z.B. auf meiner Form ein TImage und darüber ein Stringgrid. Nun hätte ich es gern das die Einträge des Stringgrids sozusagen auf dem TImage zu liegen scheinen. Hat jemand eine Idee? Danke.
  Mit Zitat antworten Zitat
mmw
(Gast)

n/a Beiträge
 
#2

AW: Nur Stringgrid transparent ?

  Alt 28. Mär 2021, 11:38
Hallo,

https://stackoverflow.com/questions/...-in-stringgrid

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Nur Stringgrid transparent ?

  Alt 28. Mär 2021, 13:32
Die TransparentColor bringt doch nur den Background des Fensters durch, aber nicht das hinterm Fenster.

Es gibt überall Erklärungen, wie man "Bereiche" eines Fenters transparent macht.
* entweder 100% eine bestimmte Farbe irgendwo im Fenster (die muß man dann nur als Hintergrund im gewünschten Control verwenden)
* oder mit einer Maske, welche man dann so festlegt, dass sie über dem Control liegt
$2B or not $2B
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Nur Stringgrid transparent ?

  Alt 28. Mär 2021, 13:39
Anstatt die Durchsichtigkeit des Stringgrids zu "simulieren" könnte man ihn auch als "Layered Window" wirklich transparent machen:

https://docs.microsoft.com/en-us/win...ayered-windows

Von der Delphi VCL gibt es da aber nichts "out of the box", das muss man sich dann wohl selbst über die WinApi machen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Nur Stringgrid transparent ?

  Alt 28. Mär 2021, 13:51
FMX und VCL kennen WS_EX_LAYERED.

FMXForm.Transparency bzw. VCLForm.AlphaBlend oder VCLForm.TransparentColor.
Es war damals in den What's New DAS supercoole Feature, weswegen man das neue Delphi kaufen sollte.
$2B or not $2B
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Nur Stringgrid transparent ?

  Alt 28. Mär 2021, 14:00
Ja, für Formulare, aber nicht für einzelne Komponenten, in diesem Fall den Stringgrid.

Nur mal so runtergetippt, Beispielvideo hier:
Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
var
   isTransparent: Boolean;
begin
   isTransparent := (Sender as TCheckBox).Checked;
   setIsStringGridTransparent(isTransparent);
end;

procedure TForm1.setIsStringGridTransparent(const isTransparent: Boolean);
var
   exStyle: DWORD;
begin
   exStyle := GetWindowLongPtr(StringGrid1.Handle, GWL_EXSTYLE);
   Win32Check(exStyle <> 0);

   if(isTransparent) then
      begin
         exStyle := (exStyle or WS_EX_LAYERED);
         Win32Check(
            SetWindowLongPtr(StringGrid1.Handle, GWL_EXSTYLE, exStyle)
            <>
            0
         );

         Win32Check( SetLayeredWindowAttributes(
            StringGrid1.Handle,
            0,
            127, // 50 % von 255
            LWA_ALPHA
         ) );
      end
   else
      begin
         exStyle := (exStyle xor WS_EX_LAYERED);
         SetWindowLong(StringGrid1.Handle, GWL_EXSTYLE, exStyle);
        end;
end;
  Mit Zitat antworten Zitat
oldman62

Registriert seit: 29. Dez 2012
6 Beiträge
 
#7

AW: Nur Stringgrid transparent ?

  Alt 28. Mär 2021, 17:42
Danke Euch für die rege Unterstützung. Das Beispielvideo von Der schöne Günther kommt genau an das heran was ich möchte. Also gleich mal den Code ausprobiert, aber leider bekomme ich beim ausführen die Fehlermeldung "Ein Aufruf einer Betriebssystemfunktion ist fehlgeschlagen". Beim debuggen läuft alles glatt durch.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Nur Stringgrid transparent ?

  Alt 28. Mär 2021, 19:23
Dann musst du ein paar mehr Informationen liefern, welche Delphi-Version?

Bei meinem Delphi 10 Seattle musste ich z.B. auch erst von Hand das ".exe-Manifest" bearbeiten denn darin muss man angeben dass man explizit Windows 8 (2012) unterstützt, und davon hatte man bei Embarcadero im Jahr 2015 wohl noch nichts gehört, neuere Delphi-Versionen habe ich nicht getestet ob die Handarbeit da noch nötig ist.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

AW: Nur Stringgrid transparent ?

  Alt 28. Mär 2021, 19:26
Seit mindestens Delphi 10.irgendwas ist das im Standardmanifest mit drin. (man kann da sogar Admin und HighDPI aktivieren)
$2B or not $2B
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Nur Stringgrid transparent ?

  Alt 28. Mär 2021, 20:27
Ja, das gibt es in 10.0 Seattle auch, aber im Manifest war anscheinend noch nicht explizit enthalten, dass man schon mal etwas von Windows 8 gehört hat. Jedenfalls hatte ich genau diesen Fehler auch, und nachdem ich von Hand einfach mal folgendes Beispiel-Manifest in den Projektoptionen eingebunden habe ging alles.

https://docs.microsoft.com/en-us/win...at-windows-8-1
  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 23:11 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