Einzelnen Beitrag anzeigen

simjoh

Registriert seit: 13. Nov 2006
Ort: Asslar
99 Beiträge
 
Delphi 7 Enterprise
 
#1

Transparentes Fenster vor anderem Fenster

  Alt 3. Jul 2007, 21:08
Hallo,

verzweifle gleich. Ich will mein Fenster vor das Fenster einer anderen Anwendung setzten. Zudem ist mein Fenster transparent, das funzt mit

Delphi-Quellcode:
procedure TFormTransparent1.DoInvisible;
var
  AControl : TControl;
  A, Margin, X, Y, CtlX, CtlY : Integer;
begin
  Margin := ( Width - ClientWidth ) div 2;
  //First, get form region
  FullRgn := CreateRectRgn(0, 0, Width, Height);
  //Find client area region
  X := Margin;
  Y := Height - ClientHeight - Margin;
  ClientRgn := CreateRectRgn( X, Y, X + ClientWidth, Y + ClientHeight );
  //'Mask' out all but non-client areas
  CombineRgn( FullRgn, FullRgn, ClientRgn, RGN_DIFF );

  //Now, walk through all the controls on the form and 'OR' them
  // into the existing Full region.
  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;
  //When the region is all ready, put it into effect:
  SetWindowRgn(Handle, FullRgn, TRUE);
  
end;

procedure TFormTransparent1.FormDestroy(Sender: TObject);
begin
  //Clean up the regions we created
  DeleteObject(ClientRgn);
  DeleteObject(FullRgn);
  DeleteObject(CtlRgn);
end;

procedure TFormTransparent1.DoVisible;
begin
  //To restore complete visibility:
  FullRgn := CreateRectRgn(0, 0, Width, Height);
  CombineRgn(FullRgn, FullRgn, FullRgn, RGN_COPY);
  SetWindowRgn(Handle, FullRgn, TRUE);
end;

procedure TFormTransparent1.FormCreate(Sender: TObject);
begin
  //We start out as a transparent form....
  DoInvisible;
end;
ganz gut, dann kann man auch noch auf die Objekte auf meinem Fenster klicken, wenn man an denen vorbeiklickt kommt aber immer das fremde Fenster in den Vordergrund.

Ich möchte gerne, dass mein Fenster immer vor nur diesem einen Fenster ist und man durchklicken kann. Die Objekte auf meinem Fenster sollen also sichtbar bleiben, auh wenn man durchklickt.

Hab noch was vergessen: Das Fenster, welches transparent sein soll, ist nicht das Hauptfenster, sondern wird vom Hauptfenster per Button "geshowed".

Hab mal ein Beipiel drangehängt.

HELP!!
Angehängte Dateien
Dateityp: zip trans_101.zip (206,4 KB, 28x aufgerufen)
  Mit Zitat antworten Zitat