Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Alphablend (https://www.delphipraxis.net/4064-alphablend.html)

Basic-Master 13. Apr 2003 19:32


Alphablend
 
Hi,
ich hab folgendes Problem: Wenn ich im Form Alphablend aktiviere (AlphaBlend = True und AlphaBlendValue = 125) und wenn ich das Projekt gestartet hab, das Form verschiebe, dann ist das mit AlphaBlend weg... Was kann ich dagegen tun?

mirage228 13. Apr 2003 19:33

setzt doch bei onActivate vom Form!
den AlphaBlend und den AlphaBlendValue einfach neu!

Basic-Master 13. Apr 2003 19:37

das ändert auch nix, wenn ich mit dem verschieben fertig bin, dann ist wieder alles so wie ohne...

mirage228 13. Apr 2003 19:43

vielleicht OnMouseUp! Weil nach dem verschieben lässt du Maustaste ja los

wenn das nicht klappt, weiss ich auch nicht weiter, hab selber nur D3, hatt d6 pers. nur kurz drauf, daher.

Daniel B 13. Apr 2003 20:53

Hallo,

AlphaBlend und Value funktioniert erst ab >= Win2k.

Grüsse, Daniel :hi:

Basic-Master 13. Apr 2003 20:59

also bei mir ist es da egal, habs ausserdem auch schon mit nem timer ausprobiert, leider ohne erfolg :( ah, mir ist glaub ich was eingefallen: könnt ihr mir die api für alphablend geben? ich glaub wenn man das nach verschieben nochmal setzt, dann könnte es gehen :idea:

Basic-Master 13. Apr 2003 21:00

Zitat:

Zitat von Daniel B
Hallo,

AlphaBlend und Value funktioniert erst ab >= Win2k.

Grüsse, Daniel :hi:

ja is klar, hab W2K Service Pack 3, ausserdem gíbts ja nur probleme nachm verschieben

Basic-Master 13. Apr 2003 21:19

so die funktion heisst SetLayeredWindowAttributes
[edit] hier ist der code den ich hab, der fuktioniert (n grossteil hab ich ausm internet):
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
const
 WS_EX_LAYERED = $80000;
 LWA_COLORKEY = 1;
 LWA_ALPHA   = 2;

type
  TForm1 = class(TForm)
  procedure SetTransparentForm(AHandle : THandle; AValue : byte = 0);
    procedure FormCreate(Sender: TObject);
    procedure FormConstrainedResize(Sender: TObject; var MinWidth,
      MinHeight, MaxWidth, MaxHeight: Integer);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.SetTransparentForm(AHandle : THandle; AValue : byte = 0);
var
 Info: TOSVersionInfo;
 SetLayeredWindowAttributes: TSetLayeredWindowAttributes;
begin
 //Check Windows version
 Info.dwOSVersionInfoSize := SizeOf(Info);
 GetVersionEx(Info);
 if (Info.dwPlatformId = VER_PLATFORM_WIN32_NT) and
 (Info.dwMajorVersion >= 5) then
   begin
     SetLayeredWindowAttributes := GetProcAddress(GetModulehandle(user32), 'SetLayeredWindowAttributes');
      if Assigned(SetLayeredWindowAttributes) then
       begin
        SetWindowLong(AHandle, GWL_EXSTYLE, GetWindowLong(AHandle, GWL_EXSTYLE) or WS_EX_LAYERED);
        //Make form transparent
        SetLayeredWindowAttributes(AHandle, 0, AValue, LWA_ALPHA);
      end;
   end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
SetTransparentForm(handle, 125);
end;

procedure TForm1.FormConstrainedResize(Sender: TObject; var MinWidth,
  MinHeight, MaxWidth, MaxHeight: Integer);
begin
SetTransparentForm(handle, 125);
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:26 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