AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Transparenz bei eigener Komponente ein- bzw. ausschalten

Transparenz bei eigener Komponente ein- bzw. ausschalten

Ein Thema von Mazel · begonnen am 2. Aug 2006 · letzter Beitrag vom 2. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#1

Transparenz bei eigener Komponente ein- bzw. ausschalten

  Alt 2. Aug 2006, 12:55
Hallo,

um meine eigene Komponente transparent zu machen, nutze ich folgen Code:
Delphi-Quellcode:
procedure TMJGroupBox.CreateParams(var Params: TCreateParams);
begin
 inherited CreateParams(Params);
 Params.ExStyle:=Params.ExStyle + WS_EX_Transparent;
end;
Das funktioniert auch, aber wie kann ich es einstellen, ob ich die Transparenz haben möchte oder nicht?
Ich dachte da an:
Transparent := False; Nur weiss ich nicht, wie ich das abfragen soll? Muss ich diese CreateParms Prozedur erneut aber mit anderen Parametern aufrufen oder so umstellen das ich sie 2 mal verwenden kann?

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Transparenz bei eigener Komponente ein- bzw. ausschalten

  Alt 2. Aug 2006, 13:01
Ich glaube, du solltest dir mal MSDN-Library durchsuchenGetWindowLong in zusammenhang mit GWL_EXSTYLE anschauen
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#3

Re: Transparenz bei eigener Komponente ein- bzw. ausschalten

  Alt 2. Aug 2006, 13:09
Hi,

danke. GetWindowLong ist mir bekannt, ich dachte aber das es eine andere Möglichkeit gibt. Bisher habe ich GetWindowLong nur für Forms verwendet um sie entweder volltransparent oder teiltransparent zu machen wie bei diesem Programm:

Wivi 06 - macht Fenster transparent.


Geht diese Funktion auch bei Komponenten? Und sie geht doch nur ab Windows 2000?

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: Transparenz bei eigener Komponente ein- bzw. ausschalten

  Alt 2. Aug 2006, 13:16
In Windows ist nahezu alles ein "Window" ... also Forms, Edit, Labels, Buttons ...

Es wird auch all dieses mit CreateWindows(Ex) erzeugt.


Windows heißt ja nicht umsonst so
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

Re: Transparenz bei eigener Komponente ein- bzw. ausschalten

  Alt 2. Aug 2006, 13:18
Zitat von himitsu:
In Windows ist nahezu alles ein "Window" ... also Forms, Edit, Labels, Buttons ...

Es wird auch all dieses mit CreateWindows(Ex) erzeugt.
Also zumindest bei Delphis TLabel wäre mir neu dass das ein Fenster ist

Der Rest stimmt
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#6

Re: Transparenz bei eigener Komponente ein- bzw. ausschalten

  Alt 2. Aug 2006, 13:22
Ok,

stimmt.

(Labels sind keine Fenster )

Gibt es eine andere Möglichlkeit als mit GetWindowLong?

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

Re: Transparenz bei eigener Komponente ein- bzw. ausschalten

  Alt 2. Aug 2006, 13:24
Naja .... du könntest das Fenster zerstören und neu erstellen lassen, doch das wäre ungleich aufwändiger und weniger ...sexy... als den Wert für den Ex. Style einfach mit Get/SetWindowLong zu verändern

Dein Setter würde jetzt ungeähr so aussehen:
Delphi-Quellcode:
procedure TDingsDa.SetTransparency(const Value: Boolean);
begin
  FTransparency := Value;

  if Value then
    SetWindowLong(Handle,GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_Transparent);
  else
    SetWindowLong(Handle,GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) and not WS_EX_Transparent);
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: Transparenz bei eigener Komponente ein- bzw. ausschalten

  Alt 2. Aug 2006, 13:27
Ok, dat war'n blödes Beispiel (hab'sch vor kurzem auch gemerkt, als ich das Handle daruf suchte.

Auch wenn "Labels" STATIC (nicht TLabel) in Windows Windows sind.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: Transparenz bei eigener Komponente ein- bzw. ausschalten

  Alt 2. Aug 2006, 13:28
Zitat von jfheins:
Naja .... du könntest das Fenster zerstören und neu erstellen lassen, doch das wäre ungleich aufwändiger und weniger ...sexy... als den Wert für den Ex. Style einfach mit Get/SetWindowLong zu verändern
hast du dir mal die VCL angesehn ... die machen diesen Zerstörungstripp auch ständig
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#10

Re: Transparenz bei eigener Komponente ein- bzw. ausschalten

  Alt 2. Aug 2006, 13:33
OK.

Dann werde ich das mal versuchenn nur weis ich nicht so recht wie ich das abfragen bzw. setzen soll.
In einer Komponente habe ich wie gesagt noch nicht mit GetWindowLong oder SetWindowLong gearbeitet.

Gruß
mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:51 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