Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
FMX Mimarisinde - TFrame Kullanmak
#1
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.
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.

01.png

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

02.png

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...
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#2
FMX' e başladığımda kullanacağım bir yapı. Elinize sağlık. Teşekkürler...
Cevapla
#3
Teşekkürler , rica etsem kodu da paylaşır mısınız ? Bir şeyler yanlış sanırım bir türlü çalıştıramadım.
Cevapla
#4
(15-02-2018, Saat: 18:22)Bay_Y Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlTeşekkürler , rica etsem kodu da paylaşır mısınız ? Bir şeyler yanlış sanırım bir türlü çalıştıramadım.

Merhaba,
Özellikle adım adım ve hiçbir ayrıntıyı atlamadan anlatmaya çalıştım. 
Kaynak kodum maalesef yok. Örnek bir çalışma yapıp, kodu silmiştim, diye hatırlıyorum.
Bundaki asıl kastım ise hazıra alıştırmamaktır.
Fakat bir DelphiCan bu makale doğrultusunda örnek bir uygulama hazırlayıp, size yardımcı olabilirse iyi olur.
Böylece farklı bir çalışmaya da imza atmış oluruz: Makale bir DelphiCan tarafından hazırlanır, diğer DelphiCan'lar da bu makaleden yola çıkarak birkaç farklı demo paylaşır.  Smile
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#5
Teşekkür ederim atladığım birşey olduğu kesin bende tekrar deneyeceğim çalıştırabilirsem bende kodu paylaşırım.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  ListView - CheckBox Kullanmak Fesih ARSLAN 2 1.479 17-10-2016, Saat: 15:42
Son Yorum: Fesih ARSLAN



Konuyu Okuyanlar: 1 Ziyaretçi