Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Transparente Form (https://www.delphipraxis.net/50173-transparente-form.html)

Jelly 21. Jul 2005 14:54


Transparente Form
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich nutze für ein Programm einén Bootbildschirm, welches ein transparentes Form sein soll. Klappt in den meisten Fällen auch wunderbar, doch irgendwie habe ich 2 komische Erscheinungen.

Ich habe als transparente Farbe clLime definiert. Das Anzeigen der Form klappt wie gewollt. Nach dem Anzeigen verbindet sich mein Programm zu einer Online Datenbank, was mal einige Sekunden dauern kann. Ab und zu wechselt mein transparentes Form dann jedoch zu einem ganz normalen Fenster, und dieses hässliche Grün erscheint wieder als Hintergrund (siehe Attachment).

Das zweite Problem hängt irgendwie mit dem ersten zusammen. Denn nach dem Connecten mit der Datenbank versuche ich wieder das Bootfenster zu schliessen, jedoch tuts das nicht immer.

Woran kann das liegen. Wie gesagt, in den meisten Fällen klappts, jedoch manchmal scheint dieses Fenster ein Eigenleben zu entwickeln.

barf00s 21. Jul 2005 15:09

Re: Transparente Form
 
SetLayeredWindowAttributes() ist dein Freund LWA_COLORKEY

und im OnFormCreate
Delphi-Quellcode:
var
  iStyleEx: cardinal;

begin
  iStyleEx := GetWindowLong(Handle, GWL_EX_STYLE);
  iStyleEx := iStyleEx or WS_EX_TRANSPARENT;
  SetWindowLong(Handle, GWL_EX_STYLE, iStyleEx);
end;
ich hoff ich hab getz nix verwürfelt

Jelly 21. Jul 2005 15:22

Re: Transparente Form
 
Hmm, "Undeclared identifier: GWL_EX_STYLE"

Welche Unit muss ich denn einbinden?

Und was hat das mit dem SetLayeredWindowAttributes auf sich. Ich kann dazu auch keine Hilfe finden.

barf00s 21. Jul 2005 15:27

Re: Transparente Form
 
Delphi-Quellcode:
var
  iStyleEx: cardinal;

begin
  iStyleEx := GetWindowLong(Handle, GWL_EXSTYLE);
  iStyleEx := iStyleEx or WS_EX_LAYERED;
  SetWindowLong(Handle, GWL_EXSTYLE, iStyleEx);
end;
heißen, sry

und

SetLayeredWindowAttributes(Handle, clLime, 0, LWA_COLORKEY);

<msdn>
Delphi-Quellcode:
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';
</msdn>

[edit]blubb, thx freak[/edit]

freak4fun 21. Jul 2005 15:31

Re: Transparente Form
 
*barf00s ein Paar CodeTags schenkt* :mrgreen:

MfG
freak

Jelly 21. Jul 2005 16:26

Re: Transparente Form
 
Danke euch beiden, die Lösung scheint bis jetzt einwandfrei zu klappen. :thumb:

Jelly 21. Jul 2005 17:30

Re: Transparente Form
 
Also nach mehrmaligem Testen bleibt das Phänomen dennoch erhalten. Die Hintergrundfarbe scheint wieder durch und die Form wieder nicht auf Wunsch geschlossen.


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