Çeviri: Ramazan Gülbahar
Aşşağı açılan tuşlar yapmanın en kolay yolu iki tuş kullanmaktır, Soldaki tuş normal bir tuş gibi davranacak, sağdaki tuş ta aşşağı doğru açılan bir popup menü olacak. Sağda açılan menüden bir tuşa tıklandığında tuşa bağlı kod çalışacak.
Bu uygulamanın adımları:
1) Yeni bir Delphi uygulaması oluşturun.
2) Delphi IDE sinden bir Frame ekleyin “File - New - Other - Delphi Files – Frame”.
3) Frame üzerine iki Button ekleyin.
4) Soldaki tuşa “MainButton” adını verin ve Align özelliğini alClient yapın.
5) Sağdaki tuşa “MenuButton” adını verin ve Align özelliğini alLeft yapın.
6) Bir Unit gibi “UnitButtonMenu” adıyla kaydedin.
Artık Frame bir PopupMenu özelliğine sahip, şimdi “MenuButton” a tıklandığı zaman frame özelliğini kullanabiliriz.
Kullanıcı sağdaki tuşa tıkladığı zaman Delphi popup kontrolünü oluşturacak ve görünür duruma getirecek. Frame’nin context menüsünü bastırmaya ihtiyacımız var bu nedenle Frame’nin “OnContextPopup” olayını kullanacağız.
Aşşağıdaki kod ("UnitButtonMenu" unit) ‘e ait kaynak kodudur:
Kod: Tümünü seç
unit UnitButtonMenu;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus;
type
TButtonMenu = class(TFrame)
MainButton: TButton;
MenuButton: TButton;
procedure FrameContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean) ;
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$R *.dfm}
procedure TButtonMenu.FrameContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean) ;
begin
{Varsayılan context menu yü bastır}
Handled := true;
end;
end.
“MenuButton” ait OnClick olayına aşşağıdaki kodu ekliyoruz:
procedure TButtonMenu.MenuButtonClick(Sender: TObject) ;
var
popupPoint : TPoint;
begin
if Assigned(PopupMenu) then
begin
popupPoint.X := MenuButton.Left + (MenuButton.Width DIV 2) ;
popupPoint.Y := MenuButton.Top + (MenuButton.Height DIV 2) ;
popupPoint := ClientToScreen(popupPoint) ;
{"menu button" ortasında popup göster}
PopupMenu.Popup(popupPoint.X, popupPoint.Y) ;
end;
end;
Kullanılışı:
Form üzerine Frame den oluşturduğumuz "ButtonMenu" ekleyin. Frame yi form üzerine eklediğiniz zaman "Select frame to insert" kutusu görünecek bu sayede oluşturduğun frameyi form üzerine eklemiş olacaksın. Form’a "ButtonMenu" eklediğin sırada bir adet “TPopupMenu” eklemelisin. Oluşturulan popupmenü özelliği içinde popup menüye nesneleri eklemelisin, varsayılan olarak adı "ButtonMenu1" dir. Popupmenüye "CloseItem" ve "CloseSaveItem" adlarını vermelisin.
Tuşların OnClick olayına:
Kod: Tümünü seç
procedure TForm1.CloseItemClick(Sender: TObject) ;
begin
ShowMessage('Bu programı kapat...') ;
end;
procedure TForm1.CloseSaveItemClick(Sender: TObject) ;
begin
ShowMessage('Bütün kullanıcı bilgilerini kaydet ve programı kapat...') ;
end;
Kod: Tümünü seç
procedure TForm1.ButtonMenu1MenuButtonClick(Sender: TObject) ;
begin
{Delphi ekledi – Popup menüyü göster}
ButtonMenu1.MenuButtonClick(Sender) ;
{Çok daha fazla kodu buraya ekle}
end;
Kaynak Kodlar Ektedir.