Autor Beitrag
b0kaJ
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 25.02.03 19:30 
Hallo !
Gibt es in Delphi 5 eine Möglichkeit ein Formular transparent zu machen ?
Als Colour oder so ...
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Di 25.02.03 20:32 
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
//////////////////////////////////////////////
// Author: Lars Pietrowski (lp@detfri.dk)   //
// Make your forms 25%, 50% Transparent...  //
//////////////////////////////////////////////

TMyForm = class (TForm); 
TrackBar1: TTrackBar; 
//.. 
private 
FColorKey: TCOLOR; 
end; 

const 
  // Use crKey as the transparency color. 
  LWA_COLORKEY = 1; 
  // Use bAlpha to determine the opacity of the layered window.. 
  LWA_ALPHA     = 2; 
  WS_EX_LAYERED = $80000; 

implementation 

{$R *.DFM} 

// The SetLayeredWindowAttributes function sets the opacity and transparency 
// color key of a layered window. 
// Note : This function is only available with Windows 2000 and XP! 
function SetLayeredWindowAttributes( 
  // Handle to the layered window. 
  Wnd: hwnd; 
  // Pointer to a COLORREF value that specifies the transparency 
  // color key to be used when composing the layered window 
  crKey: ColorRef; 
  // Alpha value used to describe the opacity of the layered window 
  Alpha: Byte; 
  // Specifies an action to take 
  // LWA_COLORKEY or LWA_ALPHA 
  // This parameter can be one or more of the following values: 
  dwFlags: DWORD): Boolean; 
  stdcall; external 'user32.dll'; 

procedure TMyForm.TrackBar1Change(Sender: TObject); 
  // Trackbar.Position must run at range 1-255... 
begin 
  SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED); 
  SetLayeredWindowAttributes(Handle, ColorToRGB(FColorKey), TrackBar1.Position, LWA_ALPHA); 
end; 

{******************************************************************} 
{ To load the SetLayeredWindowAttributes() function dynamically, use this function:} 
function MakeWindowTransparent(Wnd: HWND; nAlpha: Integer = 10): Boolean; 
type 
  TSetLayeredWindowAttributes = function(hwnd: HWND; crKey: COLORREF; bAlpha: Byte; 
    dwFlags: Longint): Longint;  
  stdcall; 
const 
  // Use crKey as the transparency color. 
  LWA_COLORKEY = 1; 
  // Use bAlpha to determine the opacity of the layered window.. 
  LWA_ALPHA     = 2; 
  WS_EX_LAYERED = $80000; 
var 
  hUser32: HMODULE; 
  SetLayeredWindowAttributes: TSetLayeredWindowAttributes; 
  i: Integer; 
begin 
  Result := False; 
  // Here we import the function from USER32.DLL 
  hUser32 := GetModuleHandle('USER32.DLL'); 
  if hUser32 <> 0 then 
  begin @SetLayeredWindowAttributes := GetProcAddress(hUser32, 'SetLayeredWindowAttributes'); 
    // If the import did not succeed, make sure your app can handle it! 
    if @SetLayeredWindowAttributes <> nil then 
    begin 
      // Check the current state of the dialog, and then add the WS_EX_LAYERED attribute 
      SetWindowLong(Wnd, GWL_EXSTYLE, GetWindowLong(Wnd, GWL_EXSTYLE) or WS_EX_LAYERED); 
      // The SetLayeredWindowAttributes function sets the opacity and 
      // transparency color key of a layered window 
      SetLayeredWindowAttributes(Wnd, 0, Trunc((255 / 100) * (100 - nAlpha)), LWA_ALPHA); 
      Result := True; 
    end; 
  end; 
end;
b0kaJ Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 25.02.03 22:21 
Danke !
Delphi-Forum.de is ja echt ne nette Seite!