02-12-2017, Saat: 13:01
Merhaba,
Uygulamalarda birden fazla modül kullanılması durumunda, her bir modül için ek bir pencere ihtiyacı olmaktadır. Bu durumda en çok başvurulan yöntem Form'lardır.
Mobil uygulamalarda birden fazla Form kullanılması, sistem kaynaklarının (işlemci mimarisi ve diğer cihaz donanımlarına bağlı olarak) tüketimini arttırmakta, Form'lar arası geçişler oldukça yavaşlamaktadır.
Bu noktada sistem kaynaklarını minimum düzeyde kullanacak Form benzeri yapıların kullanılmasında fayda vardır. Bunların başında; TFrame, TLayout, TTabControl ve benzeri bileşenler vardır.
Bu makalede örnek bir uygulama ile Mobil platform projelerinde, TFrame yapılarının nasıl kullanılacağını kavrayacağız.
1- Yeni bir Multi-Device Application projesi oluşturalım ve projemizi kaydedelim.
2- Projemize Frame eklemek için File / New / Other menüsünden Delphi Projects / Delphi Files penceresini açalım ve FireMonkey Frame nesnesini seçerek OK butonuna tıklayalım.
3- Bu yöntemle formumuza ikinci bir Frame daha ekleyelim. Makalede iki Frame ile çalışma gösterilecektir. Siz istediğiniz kadar Frame ekleyerek devam edebilirsiniz.
4- Interface / Uses bölümüne Frame Unit'lerini referans olarak ekleyelim.
5- Her iki Frame (modüllerimiz)'i belirtecek bir enum tip oluşturalım.
Frame1 tanımı:
9- Forma ait diğer tasarım ve nesne yerleşimleri aşağıda gösterildiği gibidir.

10- Frame tasarımlarını dilediğiniz gibi yapabilirsiniz. Örnek Frame tasarımımız aşağıda gösterilmiştir.

11- Frame üzerindeki Geri butonunun kodu:
12- Layout üzerinde gösterilen tüm Frame'leri gizleyecek bir medod yazalım.
13- Frame gösteren bir metod yazalım.
Metodumuzda, Frame oluşturulmamış ise TModulTipi parametresine bağlı olarak ilgili Frame tipi oluşturup, diğer özellikleri Set edilmektedir. Frame gösterilmeden hemen önce Layout üzerinde yer alan tüm Frame'ler gizlenmektedir.
14- Buton olarak kullandığımız Rectangle1'in OnClick olayında Frame1'i çağıralım.
15- Rectangle2'in OnClick olayında Frame2'i çağıralım.
Faydalı olması dileğiyle...
Uygulamalarda birden fazla modül kullanılması durumunda, her bir modül için ek bir pencere ihtiyacı olmaktadır. Bu durumda en çok başvurulan yöntem Form'lardır.
Mobil uygulamalarda birden fazla Form kullanılması, sistem kaynaklarının (işlemci mimarisi ve diğer cihaz donanımlarına bağlı olarak) tüketimini arttırmakta, Form'lar arası geçişler oldukça yavaşlamaktadır.
Bu noktada sistem kaynaklarını minimum düzeyde kullanacak Form benzeri yapıların kullanılmasında fayda vardır. Bunların başında; TFrame, TLayout, TTabControl ve benzeri bileşenler vardır.
Bu makalede örnek bir uygulama ile Mobil platform projelerinde, TFrame yapılarının nasıl kullanılacağını kavrayacağız.
1- Yeni bir Multi-Device Application projesi oluşturalım ve projemizi kaydedelim.
2- Projemize Frame eklemek için File / New / Other menüsünden Delphi Projects / Delphi Files penceresini açalım ve FireMonkey Frame nesnesini seçerek OK butonuna tıklayalım.
3- Bu yöntemle formumuza ikinci bir Frame daha ekleyelim. Makalede iki Frame ile çalışma gösterilecektir. Siz istediğiniz kadar Frame ekleyerek devam edebilirsiniz.
4- Interface / Uses bölümüne Frame Unit'lerini referans olarak ekleyelim.
uses Unit2, Unit3;
5- Her iki Frame (modüllerimiz)'i belirtecek bir enum tip oluşturalım.
type TModulTipi = (Ornek1, Ornek2);6- Her iki Frame'in Interface kısmında Frame adlarını tanımlayalım.
Frame1 tanımı:
var Frame1: TFrame1;Frame2 tanımı:
var Frame2: TFrame2;7- Ana formun private bölümünde Frame tiplerimizi tanımlayalım.
private FfrmFrame1: TFrame1; FfrmFrame2: TFrame2;8- Ana form üzerine her iki Frame'in gösterileceği bir TLayot yerleştirelim.
9- Forma ait diğer tasarım ve nesne yerleşimleri aşağıda gösterildiği gibidir.

10- Frame tasarımlarını dilediğiniz gibi yapabilirsiniz. Örnek Frame tasarımımız aşağıda gösterilmiştir.

11- Frame üzerindeki Geri butonunun kodu:
Self.Visible := False;
12- Layout üzerinde gösterilen tüm Frame'leri gizleyecek bir medod yazalım.
procedure TForm1.SetFrameGizle(); var I: Integer; begin for I := 0 to Layout1.ControlsCount - 1 do if Layout1.Controls[i] is TFrame then TFrame(Layout1.Controls[i]).Visible := False; end;
13- Frame gösteren bir metod yazalım.
procedure TForm1.SetFrameGoster(Frame: TFrame; ModulTipi: TModulTipi); begin if Frame = Nil then begin case ModulTipi of Ornek1: begin FfrmFrame1 := TFrame1.Create(Self); Frame := FfrmFrame1; end; Ornek2: begin FfrmFrame2 := TFrame2.Create(Self); Frame := FfrmFrame2; end; end; end; Frame.Parent := Self.Layout1; Frame.Align := TAlignLayout.Client; SetFrameGizle(); Frame.Visible := True; end;
Metodumuzda, Frame oluşturulmamış ise TModulTipi parametresine bağlı olarak ilgili Frame tipi oluşturup, diğer özellikleri Set edilmektedir. Frame gösterilmeden hemen önce Layout üzerinde yer alan tüm Frame'ler gizlenmektedir.
14- Buton olarak kullandığımız Rectangle1'in OnClick olayında Frame1'i çağıralım.
SetFrameGoster(FfrmFrame1, TModulTipi.Ornek1);
15- Rectangle2'in OnClick olayında Frame2'i çağıralım.
SetFrameGoster(FfrmFrame2, TModulTipi.Ornek2);
Faydalı olması dileğiyle...
