transparent color

0

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?

0

Obawiam się, że to niemożliwe. Tutaj jest dyskusja na ten temat.

0

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;).

0

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. 
0

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>

0

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ść.

0

ten kod CooBek'a działa na milenium i na xp.

0

No a jak :) Moj kod zawsze dziala "D .. ale cos mi sie wydaje ze nie o to mu chodzilo :P

0

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

0

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]

1 użytkowników online, w tym zalogowanych: 0, gości: 1