2008-05-25

【Delphi】讓 form 變半透明 / 變淡

當使用者使用您撰寫的程式, 開了很多視窗時, 使用者可能會眼花撩亂, 不知目前作用中(active form) 的視窗是哪個.

讓非作用中的視窗變透明 / 變淡 是個可以考慮的方法.

先說變半透明 ----

開啟一個新專案, 在 form 上放一個 button, 在 button 的 OnClick 寫入:

 
procedure TForm1.Button1Click(Sender: TObject);
begin
    AlphaBlend := true;    // 讓 form 變透明
    AlphaBlendValue := 128;    // 透明的程度, 數值 0 ~ 255, 數字愈小愈透明
    ShowMessage('hello');
    AlphaBlend := false;
end;
 

您會看到 form1 變透明了, 可以看到 form1 下的東東.

如果只是希望非作用中的 form 變淡呢? 我們可以在 form1 上疊上一個半透明的 form2.

加入第二個 form, 並選擇功能表 file --> use unit... --> 點選 unit1.

OnCreate 寫入:
 
procedure TForm2.FormCreate(Sender: TObject);
begin
    AlphaBlend := true;
    AlphaBlendValue := 200;
    BorderStyle := bsNone;
end;
 

OnShow 寫入:
 
procedure TForm2.FormShow(Sender: TObject);
begin
    Left := Form1.Left;
    Top := Form1.Top;
    Width := Form1.Width;
    Height := Form1.Height;
end;
 
回到 form1, 同樣地, use form2.

將 Button1 的 OnClick 改寫為:
 
procedure TForm1.Button1Click(Sender: TObject);
begin
    form2.Show;    // 顯示 form2
    ShowMessage('hello');
    form2.Hide;    // 隱藏 form2
end;
 

沒有留言:

張貼留言