w opcjach formy jest coś takiego jak kolor przezroczystości (wiecie o co chodzi). ale to działa tylko pod xp. jak zrobić by forma była przezroczysta też pod ME i starszych?
Obawiam się, że to niemożliwe. Tutaj jest dyskusja na ten temat.
W pakiecie JediVCL masz komponent TPerform(czy jakoś tak) w zakładce JvForm, potestuj go, a jak sie spodoba zobacz do źródeł i troche pomyśl;).
Pobaw się regionami.
Ja znalazlem w sieci takie cuś [nie gwarantuję 100% działania, ale spróbować można]:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure dovisible;
procedure doinvisible;
end;
var
Form1: TForm1;
FullRgn,ClientRgn,CtlRgn:HWND;
implementation
{$R *.DFM}
procedure TForm1.DoInvisible;
var
AControl : TControl;
A, Margin, X, Y, CtlX, CtlY : Integer;
begin
Margin := ( Width - ClientWidth ) div 2;
FullRgn := CreateRectRgn(0, 0, Width, Height);
X := Margin;
Y := Height - ClientHeight - Margin;
ClientRgn := CreateRectRgn( X, Y, X + ClientWidth, Y + ClientHeight );
CombineRgn( FullRgn, FullRgn, ClientRgn, RGN_DIFF );
for A := 0 to ControlCount - 1 do
begin
AControl := Controls[A];
if ( AControl is TWinControl ) or ( AControl is TGraphicControl )
then with AControl do
begin
if Visible then
begin
CtlX := X + Left;
CtlY := Y + Top;
CtlRgn := CreateRectRgn( CtlX, CtlY, CtlX + Width, CtlY + Height );
CombineRgn( FullRgn, FullRgn, CtlRgn, RGN_OR );
end;
end;
end;
SetWindowRgn(Handle, FullRgn, TRUE);
end;
procedure TForm1.DoVisible;
begin
FullRgn := CreateRectRgn(0, 0, Width, Height);
CombineRgn(FullRgn, FullRgn, FullRgn, RGN_COPY);
SetWindowRgn(Handle, FullRgn, TRUE);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
DoVisible;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
DoInvisible;
end;
end.
Nie jestem pewien czy o to chodzi, ani czy zadziala (na Win2000 dziala), w kazdym razie jest cos takiego jak (np. w odwolaniu do formy Form1):
Form1.AlphaBlending := x;
x nalezy <0; 255>
Alphablending działa tylko na windowsach > 2000. Ale raczej nie o to chodziło, bo w temacie jest transparent color, czyli przezroczystość, a nie półprzezroczystość.
ten kod CooBek'a działa na milenium i na xp.
No a jak :) Moj kod zawsze dziala "D .. ale cos mi sie wydaje ze nie o to mu chodzilo :P
nie sprawdzalem go do końca, ale właśnie o to mi chodziło. forma robi się przeźroczysta a na niej moge se ustawiać co chce! :d
No widzisz :) Co jak co, ale sam myślałem, że Tobie chodzi o ustawienie AlphaBlengingu pod me itp :P To jest cos innego, a nuż się przydało :P Polecam się na przyszłość [browar] Pozdrawiam! [cya]