Avatar billede kingguro Nybegynder
19. december 2001 - 16:27 Der er 6 kommentarer og
1 løsning

Gennemsigtig Panel?

Hvordan laver jeg en gennemsigtig panel?
Avatar billede maxium Novice
19. december 2001 - 16:29 #1
Avatar billede maxium Novice
19. december 2001 - 16:30 #2
Gøre formen gennemsigtig

Hvis du vil lave din form fuldstændig gennemsigtig skal du sætte følgende linie ind i din FormCreate:

Form1.Brush.Style := bsClear;

\"Form1\" varierer efter navnet på formen.
Du kan dobbeltklikke på formen for at komme ind i FormCreate. :-)

Du kan prøve i Object Inspectoren at sætte formens BorderStyle til bsNone. Så vil man slet ikke kunne se formen. Så kan den kun lukkes på Alt+F4 og Ctrl+Alt+Del!
Avatar billede ziron Nybegynder
19. december 2001 - 16:30 #3
nårrrr kar du ikke finde ud af det :)

/ZIRON
Avatar billede kingguro Nybegynder
19. december 2001 - 16:36 #4
Det skal være en Panel. JEg har selvfølgelig prøvet med BsClear. Men det virker ikke på en Panel.
Avatar billede maxium Novice
19. december 2001 - 16:40 #5
kingguro> ziron siger at du er hård til delphi kan jeg se nogle af de programmer du har lavet
Avatar billede borrisholt Novice
20. december 2001 - 15:49 #6
unit Unit2;

interface
uses
  Windows , Classes ,Messages,ExtCtrls, Sysutils, Controls;

const
  TMWM__SpecialInvalidate=WM_USER+1111;

Type
  TTransparentPanel = class(TPanel)
  private
    procedure SpecialInvalidate(var Message:TMessage); message TMWM__SpecialInvalidate;
  protected
    procedure CreateParams(var Params: TCreateParams); override;
    procedure CNCTLCOLOREDIT(var Message:TWMCTLCOLOREDIT); message CN_CTLCOLOREDIT;
    procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND;
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
  public
    constructor Create(AOwner: TComponent); override;
  end;
implementation

{ TTransparentPanel }

procedure TTransparentPanel.CNCTLCOLOREDIT(var Message: TWMCTLCOLOREDIT);
begin
  with Message do
    begin
      SetBkMode(ChildDC,TRANSPARENT);
      Result:=GetStockObject(HOLLOW_BRUSH)
    end
end;

constructor TTransparentPanel.Create(AOwner: TComponent);
begin
  inherited;
  ControlStyle:=[csCaptureMouse, csDesignInteractive, csClickEvents,  csSetCaption, csOpaque, csDoubleClicks,  csReplicatable, csNoStdEvents];
end;

procedure TTransparentPanel.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
    ExStyle:=  ExStyle
                or WS_EX_TRANSPARENT
                and not WS_EX_WINDOWEDGE
                and not WS_EX_STATICEDGE
                and not WS_EX_DLGMODALFRAME
                and not WS_EX_CLIENTEDGE;

end;

procedure TTransparentPanel.SpecialInvalidate(var Message: TMessage);
var
  Rect : TRect;
begin
  if Parent <> nil then
    begin
      Rect:=ClientRect;
      Rect.TopLeft:=Parent.ScreenToClient(ClientToScreen(Rect.TopLeft));
      Rect.BottomRight:=Parent.ScreenToClient(ClientToScreen(Rect.BottomRight));
      InvalidateRect(Parent.Handle,@Rect,true);
      RedrawWindow(Handle,nil,0,RDW_FRAME+RDW_INVALIDATE)
    end;
end;

procedure TTransparentPanel.WMEraseBkgnd(var Message: TWMEraseBkgnd);
begin
  Message.Result:=1
end;

procedure TTransparentPanel.WMPaint(var Message: TWMPaint);
begin
  SendMessage(Handle,TMWM__SpecialInvalidate,0,0);
end;

end.

Jens B
Avatar billede kingguro Nybegynder
22. december 2001 - 18:54 #7
Det er lige meget, jeg har ikke brug for det alligevel.
Men det var ellers et godt svar fra borrisholt, som da også fortjener de point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester