Aşşağı Açılan Tuşlar Yapmak

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
RamazanG
Üye
Mesajlar: 73
Kayıt: 16 Tem 2010 03:38

Aşşağı Açılan Tuşlar Yapmak

Mesaj gönderen RamazanG »

Makale: Zarko Gajic
Çeviri: Ramazan Gülbahar

Resim
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;
Ok tuşu tıklandığı zaman Frame popup gösterilecek.

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;
Not: Eğer dizayn zamanında Ok tuşuna çift tıklarsan Delphi senin için bir olay oluşturacaktır. Bu sayede daha fazla özellik ekleyebilirsin.

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;
Bu uygulamada TBitBtn tuşlarını, glyph kullanabilirsin.
Kaynak Kodlar Ektedir.
Dosya ekleri
dropdownbutton.zip
Açılır Tuşlar Kaynak Kodları
(6.08 KiB) 366 kere indirildi
Cevapla