AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Transparente Fenster?

Ein Thema von Rastaman · begonnen am 25. Okt 2005 · letzter Beitrag vom 25. Okt 2005
Antwort Antwort
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#1

Transparente Fenster?

  Alt 25. Okt 2005, 20:18
Nabend!

Ich such wegen des Song Tickers für Winamp ne Möglichkeit Fenster transparent darzustellen.
Wenn ich bei Delphi nach Alphablend suche ( so heissts ja inner VCL ), dann schreiben die da imma was von Bitmaps.
Suche n Ansatz wie das zu machen ist.

Dangö schon ma
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Transparente Fenster?

  Alt 25. Okt 2005, 20:21
willst du ein anders Programm Transparent machen so wie es das Transparent beim TForm gibt?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#3

Re: Transparente Fenster?

  Alt 25. Okt 2005, 20:22
Ne mein Eigenes
Ich such halt sowas wie Alphablend bei der TForm
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.987 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Transparente Fenster?

  Alt 25. Okt 2005, 20:23


Delphi-Quellcode:
Form.AlphaBlend := true;
Form.AlphablendValue := 100; //0 - 255
oder so ähnlich.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Transparente Fenster?

  Alt 25. Okt 2005, 20:25
du suchst sowas wie transparent von TForm?
schau mal hier
http://www.delphipraxis.net/internal...=337906#337906
unter Delphi2005 solltest du das definieren der Konstanten jedoch rausnehmen können (war für D5)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#6

Re: Transparente Fenster?

  Alt 25. Okt 2005, 20:25
Zitat von Rastaman:
Ne mein Eigenes
Ich such halt sowas wie Alphablend bei der TForm
Zitat von Matze:


Delphi-Quellcode:
Form.AlphaBlend := true;
Form.AlphablendValue := 100; //0 - 255
oder so ähnlich.
Nächstes Mal sag ich gleich von Anfang an, dass ich ohne Forms arbeite

// EDIT:

Zitat von SirThornberry:
du suchst sowas wie transparent von TForm?
schau mal hier
http://www.delphipraxis.net/internal...=337906#337906
unter Delphi2005 solltest du das definieren der Konstanten jedoch rausnehmen können (war für D5)
Das isses
Auch wenn ich nich durchsteige
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Transparente Fenster?

  Alt 25. Okt 2005, 20:33
naja, dann halt mal ne Erklärung. Wie bereits geschrieben war das ganze für Delphi5
Zur Zusammenfassung erstmal der Komplette Source.
Delphi-Quellcode:
function SetFormTransparent(AFormHandle: HWnd; ATransparentVal: Byte): Boolean;
const
  WS_EX_LAYERED = $00080000;
  LWA_ALPHA = $00000002;
var LStyle: Integer;
    LDLLHandle: Cardinal;
    LSetLayerdProc: function (Hwnd: THandle; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD): Boolean; stdcall;
begin
  LDLLHandle := LoadLibrary('user32.dll');
  if LDLLHandle <> 0 then
  begin
    @LSetLayerdProc := GetProcAddress(LDLLHandle, 'SetLayeredWindowAttributes');
    if Assigned(LSetLayerdProc) then
    begin
      LStyle := GetWindowLong(AFormHandle, GWL_EXSTYLE);
      SetWindowLong(AFormHandle, GWL_EXSTYLE, LStyle or WS_EX_LAYERED);

      result := LSetLayerdProc(AFormHandle, 0, ATransparentVal, LWA_ALPHA);
    end else result := False;
    FreeLibrary(LDLLHandle);
  end else result := False;
end;
Da es unter Delphi5 die Funktion "SetLayeredWindowAttributes" noch nicht gab musste diese hier mittels LoadLibrary und GetProcAddress erst eingebunden werden. Die Konstanten LWA_ALPHA und WS_EX_LAYERED gab es auch noch nicht. Wenn man all das Berücksichtigt sieht die Funktion für D2005 so aus:
Delphi-Quellcode:
function SetFormTransparent(AFormHandle: HWnd; ATransparentVal: Byte): Boolean;
var LStyle: Integer;
begin
  LStyle := GetWindowLong(AFormHandle, GWL_EXSTYLE);
  SetWindowLong(AFormHandle, GWL_EXSTYLE, LStyle or WS_EX_LAYERED);
  result := SetLayeredWindowAttributes(AFormHandle, 0, ATransparentVal, LWA_ALPHA);
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#8

Re: Transparente Fenster?

  Alt 25. Okt 2005, 20:36
Ok, das vereinfacht die Sache dann doch schon "etwas"
Vielen Dank
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
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 16:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf