MainMenu > Window (Pecereler) ?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- hi_selamlar
- Üye
- Mesajlar: 523
- Kayıt: 05 May 2005 03:24
- Konum: DelphiTürkiye.COM
MainMenu > Window (Pecereler) ?
S.A.
kolay gelsin.
arkadaşlar takıldığımı bir nokta var.
1. ana form var. (MDIForm)
2. detay form (MDIChild)
hani bütün uygulamalarda görürüz ya, üst mainmenu de "Window" başlığı altında bütün uygulama içinde
açık bulunan detay (MDIChild) formların isimler yer alıyor.
Bunu delphi de nasıl yapabiliriz ?
Şimdiden teşekkür ederim.
Saygılar
KOlay Gelsin
kolay gelsin.
arkadaşlar takıldığımı bir nokta var.
1. ana form var. (MDIForm)
2. detay form (MDIChild)
hani bütün uygulamalarda görürüz ya, üst mainmenu de "Window" başlığı altında bütün uygulama içinde
açık bulunan detay (MDIChild) formların isimler yer alıyor.
Bunu delphi de nasıl yapabiliriz ?
Şimdiden teşekkür ederim.
Saygılar
KOlay Gelsin
Herkes cahildir, bazi konularda.
-
- Üye
- Mesajlar: 32
- Kayıt: 02 Eki 2008 02:55
Re: MainMenu > Window (Pecereler) ?
Aşağıdaki Form sınıfını Mdi Childlerini türeticeğin sınıf olarak kullanırsan herhangi bir kod yazmadan istediğini elde edersin.
Bu kodu ayrı bir unite kaydedip.
Mdi child formlarınıda bu sınıftan türetirsen (örn: TForm2 = class(TFormChild) gibi)
sorun cıkmaz bir ufak hatırlatma Form1 ana form ve "window1" pencereleri listeliycek menu öğesi
Not : mdi child formları kapatırken yok ettiğini varsayarak yazdım kodu
Kod: Tümünü seç
interface
uses forms,classes,dialogs,Menus;
type
TFormChild=class(tform)
protected
procedure DoClose(var Action: TCloseAction); override;
procedure Activate; override;
procedure MenuItemCheck;
constructor Create(Aowner:tcomponent);override;
destructor Destroy;override;
procedure mitemclick(sender:tobject);
end;
implementation
uses unit1;//ANA formun(Mdiform) olduğu unit
{ TFormChild}
procedure TFormChild.DoClose(var Action: TCloseAction);
begin
inherited DoClose(Action);
action:=cafree; //Formları Kapatırken YokEt
end;
constructor TFormChild.Create(Aowner: tcomponent);
var
i:integer;
mitem:TMenuItem;
Begin
// Form oluşturulduğunda Windows menusüne yeni öğe ekle
inherited create(aowner);
mitem:=TMenuItem.Create(form1.Window1);
mitem.Caption:=Caption; //Öğenin başlığını formun başlığı yap
mitem.OnClick:=mitemclick; //Click olayını yönet
form1.window1.Add(mitem);
MenuItemCheck;//Öğeyi Seçili hale getir
end;
procedure TFormChild.mitemclick(sender: tobject);
Begin
show; //Formu Göster(Ön Plana getir)
MenuItemCheck;//Öğeyi seçili hale getir
end;
destructor TFormChild.Destroy;
var
i:integer;
begin
//Form yok Edilirken Formun başlığıyla aynı ada sahip menü öğesinide sil
with form1.window1 do
begin
i:=0;
while i<count do
if AnsiSameCaption(items[i].caption,self.caption) then
Delete(i) else inc(i);
end;
inherited Destroy;
end;
procedure TFormChild.Activate;
begin
inherited activate;
MenuItemCheck; //Form Aktif olduğunda ilgili menü öğesinide seçili kıl
end;
procedure TFormChild.MenuItemCheck;
var
i:integer;
begin
//Formla aynı isme sahip öğeyi seçili kıl,diğerlerinin seçililiklerini kaldır.
with form1.window1 do
for i:=0 to count-1 do
items[i].Checked:=AnsiSameCaption(items[i].caption,self.caption);
end;
end.
Mdi child formlarınıda bu sınıftan türetirsen (örn: TForm2 = class(TFormChild) gibi)
sorun cıkmaz bir ufak hatırlatma Form1 ana form ve "window1" pencereleri listeliycek menu öğesi
Not : mdi child formları kapatırken yok ettiğini varsayarak yazdım kodu
Re: MainMenu > Window (Pecereler) ?
Delphi bu işlemi otomatik yapar. Tek yapmanız gereken: Pencere listesinin hangi menü seçeneğinin altında görünmesini istiyorsanız MDI ana formun WindowMenu özelliğini o menü seçeneğine ayarlayın.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri
Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
csunguray at netbilisim.kom
Net Bilişim Hizmetleri
Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
-
- Üye
- Mesajlar: 32
- Kayıt: 02 Eki 2008 02:55
Re: MainMenu > Window (Pecereler) ?
hazır varmış yahu 

- hi_selamlar
- Üye
- Mesajlar: 523
- Kayıt: 05 May 2005 03:24
- Konum: DelphiTürkiye.COM
Re: MainMenu > Window (Pecereler) ?
S.A.csunguray yazdı:Delphi bu işlemi otomatik yapar. Tek yapmanız gereken: Pencere listesinin hangi menü seçeneğinin altında görünmesini istiyorsanız MDI ana formun WindowMenu özelliğini o menü seçeneğine ayarlayın.
Hocam öncelikle paylaşımınız için teşekkür ederim.
Tam olarak anlayamadım. Rica etsem biraz daha örnekli anlatırmısınız. Nasıl yapılacağına dair.

S.A.
Teşekkürler.
Herkes cahildir, bazi konularda.
-
- Üye
- Mesajlar: 13
- Kayıt: 03 Tem 2004 10:02
- Konum: sakarya
Re: MainMenu > Window (Pecereler) ?
arkadaşlar benim yapmak istediğim şey açık midi formları menu de listelemek..
forumda yazan " Pencere listesinin hangi menü seçeneğinin altında görünmesini istiyorsanız MDI ana formun WindowMenu özelliğini o menü seçeneğine ayarlayın."
işlemi yaptım fakat menude herhangi bir liste oluşmadı . Yapan arkadaşlar varsa yardımlarınızı bekliyorum. Şimdiden teşekkurler.
forumda yazan " Pencere listesinin hangi menü seçeneğinin altında görünmesini istiyorsanız MDI ana formun WindowMenu özelliğini o menü seçeneğine ayarlayın."
işlemi yaptım fakat menude herhangi bir liste oluşmadı . Yapan arkadaşlar varsa yardımlarınızı bekliyorum. Şimdiden teşekkurler.
Re: MainMenu > Window (Pecereler) ?
Formun OnCreate olayında da aynı işlemi yapın. Bazen designer'dan yaptığınızı yemiyor. Yani:
MenuItemPencere bir alt menü seçeneği değil, bir ana menü seçeneği. Yani doğrudan formun en üstünde görünen seçeneklerden biri (Dosya, Düzen, Yardım gibi).
Kod: Tümünü seç
procedure TFormAnaMenu.FormCreate(Sender: TObject);
begin
WindowMenu := MenuItemPencere;
end;
MenuItemPencere bir alt menü seçeneği değil, bir ana menü seçeneği. Yani doğrudan formun en üstünde görünen seçeneklerden biri (Dosya, Düzen, Yardım gibi).
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri
Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
csunguray at netbilisim.kom
Net Bilişim Hizmetleri
Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
-
- Üye
- Mesajlar: 13
- Kayıt: 03 Tem 2004 10:02
- Konum: sakarya
Re: MainMenu > Window (Pecereler) ?
Teşekkurler C. Sunguray arkadaşım.. söylediklerini yaptım ve şuan çalışıyor ...