PageControl hakkında

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Tahsinzencir
Üye
Mesajlar: 48
Kayıt: 15 May 2009 12:16

PageControl hakkında

Mesaj gönderen Tahsinzencir »

Delphi 7 kullanıyorum

Ana formum var üzerinde
1- Buton A
2- Buton B
3- Buton C

1 adet de PageControl

3 adet de Form um var

1. Form A üzerinde bir buton
2. Form B üzerinde bir buton
3. Form C üzerinde bir buton

Şimdi Ana formdaki Buton A ya tıkladığımda PageControl tabsheet1 içinde Form A Açılsın Form A daki butona tıkladığımda kapansın
Ana formdaki Buton B ya tıkladığımda PageControl tabsheet2 içinde Form B Açılsın Form B daki butona tıkladığımda kapansın
Ana formdaki Buton C ya tıkladığımda PageControl tabsheet3 içinde Form C Açılsın Form C daki butona tıkladığımda kapansın
Bu şekilde işlev görecek bir Ara yüz hazırlamak istiyorum bu hususta yardımcı olacaklara şimdiden teşekkür ederim.
Saygılar sunarım.
kerpeten
Üye
Mesajlar: 62
Kayıt: 26 May 2016 01:31

Re: PageControl hakkında

Mesaj gönderen kerpeten »

Bu istediğinizi TFrame kullanarak yapabilirsiniz. Bunun için Form olarak yarattığınız sayfaları Frame olarak yaratmanız gerekir. Bunun yanısıra main form üzerinde de istediğiniz yere istediğiniz kadar frame bileşeni koyarsınız. Daha sonra bir butona tıkladığınızda, istediğiniz TFrame'i bu frame bileşeninin ilgili alanına atayarak çıkmasını sağlayabilirsiniz. Ekte örnek var.
Dosya ekleri
Frame.rar
(3.38 KiB) 91 kere indirildi
kerpeten
Üye
Mesajlar: 62
Kayıt: 26 May 2016 01:31

Re: PageControl hakkında

Mesaj gönderen kerpeten »

Bir de bu konuda TJvEmbeddedFormPanel adlı Jedi Vcl bileşen setinin bir bileşeni var. Bu da oldukça kullanışlı, herhangi bir formu bu panel üzerinde gösterebiliyorsunuz.
Tahsinzencir
Üye
Mesajlar: 48
Kayıt: 15 May 2009 12:16

Re: PageControl hakkında

Mesaj gönderen Tahsinzencir »

Deneme 4.rar
(343.39 KiB) 90 kere indirildi
Sevgili kerpeten örneğini inceledim güzel ama istediğim o değil ekli dosyayı incelersen PageControl de istediğim Frame sayfasını açıyorum ancak saifeden çıktıktan sonra o sahifeyi tekrar açamıyorum kodları inceleyip nere de hata yaptığıma yardımcı ola bilirmisin teşekkürler.
kerpeten
Üye
Mesajlar: 62
Kayıt: 26 May 2016 01:31

Re: PageControl hakkında

Mesaj gönderen kerpeten »

Aslında hata basit; ana formdaki butona basıldığında Frame1 = nil ise tekrar yarat diyorsunuz. Ancak Frame üzerindeki butona bastığınızda Frame1'i free yapıp değişkenine nil vermiyorsunuz. Haliyle ikinci seferde buraya girmiyor. Yani ana ekrandaki butonun onclick eventinde if için bir de else yazılması gerekir.

if intForm2 = nil then begin
intTS := TTabSheet.Create( PageControl1 );
intTS.PageControl := PageControl1 ;

intForm2 := TFrame2.Create(intTS);
intForm2.Align := alClient ;
intForm2.Parent := intTS ;

intTS.Caption := 'Taşeron';

PageControl1.Visible := True;
intForm2.Show ;
PageControl1.ActivePage := intTS;
end
else
begin
PageControl1.ActivePage := intTS;
intTS.Visible:=True;
PageControl1.ActivePage.tabVisible:=True;

end;
kerpeten
Üye
Mesajlar: 62
Kayıt: 26 May 2016 01:31

Re: PageControl hakkında

Mesaj gönderen kerpeten »

Bu arada bazı uyarılar da yapmam gerekiyor,
1-Bir form içinden diğer bir formun içindeki bileşen değerini değiştirmeyiniz. Bunu örneğin formdan forma mesaj göndererek yapabilirsiniz. Ya da en kötü durumda form içinde bir procedure ya da function oluşturup dışarıdan bunu çalıştırın. Aksi halde ilerleyen zamanlarda programınızı kontrol edemez hale gelirsiniz. Bir hata oluşur nerede olduğunu bulmanız çok zaman alır.
kerpeten
Üye
Mesajlar: 62
Kayıt: 26 May 2016 01:31

Re: PageControl hakkında

Mesaj gönderen kerpeten »

2-Kod yazarken bazı şekil özelliklerine önem verin. Örneğin Begin...End blokları mutlaka standart formatta yazılmalı.
Benim kullandığım içiçe her blok 2 kolon sağdan başlıyor. Böylelikle baktığımda kodu daha rahat görebiliyorum.
kerpeten
Üye
Mesajlar: 62
Kayıt: 26 May 2016 01:31

Re: PageControl hakkında

Mesaj gönderen kerpeten »

Önceki gönderdiğimi kod bloğu içine almamışım tekrar gönderiyorum.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
  if intForm2 = nil then 
  begin
    intTS := TTabSheet.Create( PageControl1 );
    intTS.PageControl := PageControl1 ;

    intForm2 :=  TFrame2.Create(intTS);
    intForm2.Align := alClient ;
    intForm2.Parent := intTS ;

    intTS.Caption := 'Taşeron';

    PageControl1.Visible := True;
    intForm2.Show ;
    PageControl1.ActivePage := intTS;
   end
//bu kısım eklenecek
   else
   begin
    PageControl1.ActivePage := intTS;
    intTS.Visible:=True;
    PageControl1.ActivePage.tabVisible:=True;
  end;
end;
Tahsinzencir
Üye
Mesajlar: 48
Kayıt: 15 May 2009 12:16

Re: PageControl hakkında

Mesaj gönderen Tahsinzencir »

Desteğiniz için teşekkürler kardeşim. iyi çalışmalar.
Tahsinzencir
Üye
Mesajlar: 48
Kayıt: 15 May 2009 12:16

Re: PageControl hakkında

Mesaj gönderen Tahsinzencir »

Sayı Kerpeten Size de fazla yük olduğumun farkındayım af edin lütfen.
Ekte gönderdiğim örnekte yazdığım kod da ki hatayı çözemedim.
Yaş 60 ın üzerinde olunca mantık yürütmek zorlaşıyor ilgine teşekkürler.
Dosya ekleri
Deneme 4.rar
(389.56 KiB) 92 kere indirildi
Tahsinzencir
Üye
Mesajlar: 48
Kayıt: 15 May 2009 12:16

Re: PageControl hakkında

Mesaj gönderen Tahsinzencir »

Sayın Kerpeten problemi çözdüm seni meşgul etmek istemem saygılar
kerpeten
Üye
Mesajlar: 62
Kayıt: 26 May 2016 01:31

Re: PageControl hakkında

Mesaj gönderen kerpeten »

Kusura bakmayın mesajınızı görmemişim. Sorunu çözdüğünüze mesele yok. Ancak koda üstten bakınca Paradox tabloları gördüm. Aman sakın ola kullanmayın. Başınız dertten kurtulmaz. Paradox tabloları çok sık bozulurlar. Aman! Onun yerine SQlite3 kullanın.
Tahsinzencir
Üye
Mesajlar: 48
Kayıt: 15 May 2009 12:16

Re: PageControl hakkında

Mesaj gönderen Tahsinzencir »

Tavsiyene teşekkürler SQlite3 indirdim ancak kullanamadım, üzerinde çalışıyorum.
Ufak bir sorunum var cevap vermeye bilirsin taktir senin;
sorunum şu
1 adet DBComboBox
1 adet DBGrid
1 ade Edit
1 Table var
Tablom şöyle
Adı_Soyadı HTipi Tutarı
A CGirişi 200.00
A Alacak 1200.00
B Tahsilat 2000.00
B CGirişi 1500.00

İstiyorum ki

DBComboBox dan A kişiyi seçtiğimde
DBGrid de

Adı_Soyadı HTip Tutarı
A CGiriş 200.00
A Alacak 1200.00

Edit Toplam 1400.00 Yazsın

Aynı işlemi B Kişisini seçtiğimde de yapsın.

Query ile çözmeye çalıştım istediğimi buldum ama DBComboBox ile DBGrid'i bir türlü eşleştiremedim
yardımcı olursanız sevinirim saygılar.
Tahsinzencir
Üye
Mesajlar: 48
Kayıt: 15 May 2009 12:16

Re: PageControl hakkında

Mesaj gönderen Tahsinzencir »

Kıymetli kardeşim birde DBGrid içine StatusBar koya bilirmiyiz saygılar hürmetler. iyi çalışmalar dilerim
Cevapla