Delphi製作帶圖示的彈出式選單 (轉)
Delphi製作帶圖示的彈出式選單 (轉)[@more@]杏
介面的一大特色就是顯示豐富多彩的圖示,圖示不僅美化了Windows的桌面,而且便於直觀的操作,給帶來了極大的方便。在設計介面時,Windows風格是很好的參考。
一般提供兩種設定圖示的方法,一個是在Project Options 中指定應用程式的圖示,另一個是在 Inspector 的properties頁中提供Icon特性。如果想設計出像Windows開始選單那樣美麗的彈出選單,就要自己編寫程式碼了。
我們知道大多數Windows應用程式本身帶有圖示,只要將程式本身所帶的圖示取出,調整圖示的大小加入到彈出選單中,一個美麗的選單就完成了。
首先用ExtractAssociatedIcon從某一程式中獲取圖示,而圖示的尺寸大小不一,不一定能直接新增到選單中,同時Delphi沒有提供調整圖示大小的功能,這就必須將圖示轉化成位件,然後調整點陣圖檔案的大小,最後用點陣圖檔案取代選單專案即可。其如下:
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
/**** 選單條中的專案****/
Open1: TMenuItem;
/****選單檔案中的專案 ****/
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{區域性引數宣告}
public
{全域性引數宣告}
Icn, Txt, MnuItm: TBitmap;
end;
procedure TForm2.FormCreate(Sender: TObject);
var R: TRect;
HIcn: HIcon;
Ic: TIcon;
Index: ;
FileName: PChar;
begin
/**從某一程式中獲取圖示**/
Ic:=TIcon.Create;
Ic.Handle:=ExtractAssociatedIcon(Hinstance, /*檔名稱及其路徑*/, Index);
/** 建立點陣圖**/
Txt:=TBitmap.Create;
with Txt do
begin
Width:=Canvas.TextWidth(' Test');
Height:=Canvas.TextHeight(' Tes');
Canvas.TextOut(0,0,' Test');
end;
/**將圖示複製到上述建立的點陣圖中,並調整它的尺寸 **/
Icn:=TBitmap.Create;
with Icn do
begin
Width:=32;
Height:=32;
Brush.Color:=clBtnFace;
Canvas.Draw(0,0,Ic);
end;
/** 建立最後的點陣圖檔案**/
MnuItm:=TBitmap.Create;
with MnuItm do
begin
Width:=Txt.Width+18;
Height:=18;
with Canvas do
begin
Brush.Color:=clBtnFace;
Pen.Color:=clBtnFace;
Brush.Style:=bsSolid;
Rectangle(0,0,Width,Height);
CopyMode:=cmSrcAnd;
StretchDraw(Rect(0,0,16,16),Icn);
CopyMode:=cmSrcAnd;
Draw(16,8-(Txt.Height div 2),Txt);
end;
end;
end;
procedure TForm2.FormShow(Sender: TObject);
var
ItemInfo: TMenuItemInfo;
hBmp1 : THandle;
begin
HBmp1:=MnuItm.Handle;
with ItemInfo do
begin
cbSize:= SizeOf( ItemInfo );
fMask:= MIIM_TYPE;
fType:= MFT_BITMAP;
dwTypeData:= PChar(MakeLong( hBmp1, 0 ));
end;
/** 用點陣圖取代選單專案Open1 **/
SetMenuItemInfo( GetSubMenu( MainMenu1.Handle, File1.MenuIndex ),
Open1.MenuIndex, true, ItemInfo );
end;
以上程式在Windows98、Delphi 4.0環境下透過
介面的一大特色就是顯示豐富多彩的圖示,圖示不僅美化了Windows的桌面,而且便於直觀的操作,給帶來了極大的方便。在設計介面時,Windows風格是很好的參考。
一般提供兩種設定圖示的方法,一個是在Project Options 中指定應用程式的圖示,另一個是在 Inspector 的properties頁中提供Icon特性。如果想設計出像Windows開始選單那樣美麗的彈出選單,就要自己編寫程式碼了。
我們知道大多數Windows應用程式本身帶有圖示,只要將程式本身所帶的圖示取出,調整圖示的大小加入到彈出選單中,一個美麗的選單就完成了。
首先用ExtractAssociatedIcon從某一程式中獲取圖示,而圖示的尺寸大小不一,不一定能直接新增到選單中,同時Delphi沒有提供調整圖示大小的功能,這就必須將圖示轉化成位件,然後調整點陣圖檔案的大小,最後用點陣圖檔案取代選單專案即可。其如下:
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
/**** 選單條中的專案****/
Open1: TMenuItem;
/****選單檔案中的專案 ****/
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{區域性引數宣告}
public
{全域性引數宣告}
Icn, Txt, MnuItm: TBitmap;
end;
procedure TForm2.FormCreate(Sender: TObject);
var R: TRect;
HIcn: HIcon;
Ic: TIcon;
Index: ;
FileName: PChar;
begin
/**從某一程式中獲取圖示**/
Ic:=TIcon.Create;
Ic.Handle:=ExtractAssociatedIcon(Hinstance, /*檔名稱及其路徑*/, Index);
/** 建立點陣圖**/
Txt:=TBitmap.Create;
with Txt do
begin
Width:=Canvas.TextWidth(' Test');
Height:=Canvas.TextHeight(' Tes');
Canvas.TextOut(0,0,' Test');
end;
/**將圖示複製到上述建立的點陣圖中,並調整它的尺寸 **/
Icn:=TBitmap.Create;
with Icn do
begin
Width:=32;
Height:=32;
Brush.Color:=clBtnFace;
Canvas.Draw(0,0,Ic);
end;
/** 建立最後的點陣圖檔案**/
MnuItm:=TBitmap.Create;
with MnuItm do
begin
Width:=Txt.Width+18;
Height:=18;
with Canvas do
begin
Brush.Color:=clBtnFace;
Pen.Color:=clBtnFace;
Brush.Style:=bsSolid;
Rectangle(0,0,Width,Height);
CopyMode:=cmSrcAnd;
StretchDraw(Rect(0,0,16,16),Icn);
CopyMode:=cmSrcAnd;
Draw(16,8-(Txt.Height div 2),Txt);
end;
end;
end;
procedure TForm2.FormShow(Sender: TObject);
var
ItemInfo: TMenuItemInfo;
hBmp1 : THandle;
begin
HBmp1:=MnuItm.Handle;
with ItemInfo do
begin
cbSize:= SizeOf( ItemInfo );
fMask:= MIIM_TYPE;
fType:= MFT_BITMAP;
dwTypeData:= PChar(MakeLong( hBmp1, 0 ));
end;
/** 用點陣圖取代選單專案Open1 **/
SetMenuItemInfo( GetSubMenu( MainMenu1.Handle, File1.MenuIndex ),
Open1.MenuIndex, true, ItemInfo );
end;
以上程式在Windows98、Delphi 4.0環境下透過
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988874/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 製作可以自動隱藏的彈出式選單 (轉)
- 用Delphi製作個性化的選單 (轉)
- UITextView定製彈出選單UITextView
- js如何防止自帶右鍵選單的彈出JS
- 在選單中加入圖示 (轉)
- 彈彈彈,彈走魚尾紋的彈出選單(vue)Vue
- 視訊: iphone式圓角圖示製作教程iPhone
- 左鍵彈出選單
- svg製作小圖示SVG
- web 前端 圖示製作Web前端
- 使用jquery製作彈出框效果jQuery
- PPT怎麼製作漸變UI圖示?PPT扁平化圖示圖片的製作方法UI
- Toolbar製作選單條過程詳解 (轉)
- QToolButton設定彈出選單QT
- 用CSS來製作圖示CSS
- 使用svg製作字型圖示SVG
- 用VB編寫一個彈出選單類 (轉)
- 點選彈出帶有遮罩的視窗效果遮罩
- jQuery點選小圖彈出大圖jQuery
- javascript點選彈出可以關閉帶有灰色背景彈出層JavaScript
- 給Notepad++ 加帶圖示右鍵選單
- 淺談控制元件(元件)製作方法一(附帶一delphi匯出資料到Excel的元件例項)(原創) (轉)控制元件Excel
- Win8截圖工具快速擷取彈出選單的方法
- 絕對精彩:在網頁裡做類似window右鍵的彈出式選單 (轉)網頁
- InstallShield Express for delphi製作安裝程式定製BDE引擎 (轉)Express
- win10系統下ico圖示怎麼製作_win10製作ico圖示的教程Win10
- ios 仿android的popupwindow彈出選單iOSAndroid
- 我第一個做好的彈出選單
- 製作 Mac 圖示的那位設計師Mac
- 用DELPHI製作線上程式升級資訊查詢 (轉)
- Axure 教程:製作摺疊選單
- html-製作導航選單HTML
- 無需表格製作CSS選單CSS
- 用CSS製作隱藏選單CSS
- MFC彈出選單隱藏解決
- 滑鼠觸動能自動彈出的選單
- AE製作livephoto動態圖示
- Delphi_Excel例子:單元格複製貼上 (轉)Excel