Dimming the screen with Delphi

前端 未结 2 1046
长发绾君心
长发绾君心 2020-12-20 01:45

I am looking to create an effect similar to the lightbox effect seen on many website where the background of the screen fades out and the content you want to emphasize does

2条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-20 02:34

    I have the same need as Oscar. After some search on the net, I found what is shown here. It has helped me to do this, since it works. You can move what is emphasized in a Form instead of a Panel. I use two forms. The first is use as "fader" and the second as dialogbox. First

    unit uFormFaded;
    
    interface
    
    uses
       ...
    
    type
      TFormFaded = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
    
    var
      FormFaded: TFormFaded;
    
    implementation
    
    {$R *.dfm}
    
    procedure TFormFaded.FormCreate(Sender: TObject); 
    begin
      Align := alClient;
      AlphaBlend := true;
      AlphaBlendValue := 100;
      BorderStyle := bsNone;
      Color := clBlack;
      Enabled := false;
      FormStyle := fsStayOnTop;
    end;
    
    end.
    

    Second

    unit UFormDlgBox;
    
    interface
    
    uses
       ...
    
    type
      TFormDlgBox = class(TForm)
        procedure FormShow(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
    
    var
      FormDlgBox: TFormDlgBox;
    
    implementation
    
    {$R *.dfm}
    
    uses uFormFaded;
    
    procedure TFormDlgBox.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      FormFaded.Close;
    end;
    
    procedure TFormDlgBox.FormShow(Sender: TObject);
    begin
      FormFaded.Show;
    end;
    
    end.
    

    The use

    FormDlgBox.ShowModal;
    

    I tried to reproduce this schema creating the forms in run-time an make the TFormDlgBox Owns and create the TFormFaded but it doesn't work. It seems it works only with forms created in design-time.

提交回复
热议问题