Kodla oluşturulan kontrolü TabbedNotebook pages'ine dock ?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
ByDeniS
Üye
Mesajlar: 144
Kayıt: 03 Oca 2009 12:24
Konum: My Computer

Kodla oluşturulan kontrolü TabbedNotebook pages'ine dock ?

Mesaj gönderen ByDeniS »

Arkadaşlar öncelikle herkeze merhabalar ve cevap verenlere teşekkürler.

Bir button aracılığı ile oluşturduğum TShellListView kontrolünü TabbedNotebook kontrolüne alclient etmek istiyorum.

Buttona tıkladığımızda gerçekleşen olaylar :

TabbedNotebook1.Pages.Add(Dgr); // TabbedNotebook kontrolüne yeni sayfa ekliyorum.
// Buradan aşağısı TShellListView kontrolünü oluşturuyoru. Bunu yukarıda oluşturduğum page'nin içerisine aling ile client etmek istiyorum. Aşağıdaki kodlar bunu gerçekleştiriyor lakin sıkıtıyı yaratan kısım pageyi değiştirip aynı pageye geri geldiğimde o kontrol orada olmuyor. Anladımki yanlış yoladayım 1.5 2 saattir araştırıyorum ama birşey bulamadım. Yardımlarınızı bekliyorum.
yeni:=TShellListView.Create(TabbedNotebook1);
yeni.Parent:=TabbedNotebook1;
yeni.Align:=alClient;

Olayı yukarıda belirttim parent:=TabbedNotebook1; yerine ActiveControl yazıyorum bu seferde tıkladığım buttonun içerisinde bu olayı gerçekleştiriyoru. Dock sistemi aklıma geldi ama docklama yöntemi bulamadım CTRL+Space tuşu ile gelen kodlamalarda.

Saygılarımla.
·•· Bilgi Güçtür ! Bu Gücü Hisset ! ·•·
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: Kodla oluşturulan kontrolü TabbedNotebook pages'ine dock ?

Mesaj gönderen CiTiZEN »

anladığım kadarıyla

Kod: Tümünü seç

yeni:=TShellListView.Create(TabbedNotebook1);
bu kod shelllistview i tabbed notebook ta create ediyor.yani bu olayı bir sayfaya taşırsan sorun ortadan kalkar sanırım.Şöyleki

Kod: Tümünü seç

Yeni:=TShellListView.Create(TabbedNoteBook1.dgr)
gibi.Şu an deneyemiyorum ama işe yarayabilir deneyip sonucu yazarsan bizde faydalanırız..

Kolay Gelsin.
UWESIS CORPORATION
Kullanıcı avatarı
ByDeniS
Üye
Mesajlar: 144
Kayıt: 03 Oca 2009 12:24
Konum: My Computer

Re: Kodla oluşturulan kontrolü TabbedNotebook pages'ine dock ?

Mesaj gönderen ByDeniS »

İlgin için teşekkür ederim.

Kodda ilk olarak bir sayfa eklediğini söylemiştim haliyle eklediği sayfaya eklemesi gerekiyor.

Kod: Tümünü seç

Yeni:=TShellListView.Create(TabbedNoteBook1.dgr)
Yukarıda . koyduktan sonra yazılan herangibir kodu kabul etmiyor yada kabul ettiği kodda çalışmıyor.

Kod: Tümünü seç

Yeni:=TShellListView.Create(TabbedNoteBook1.PageIndex);
Kodunu kullanıyorum buda işte yaramıyor. CTRL+Space ile çıkan tüm kodlarıda kontrol ettim ama çözüm alamadım :s
·•· Bilgi Güçtür ! Bu Gücü Hisset ! ·•·
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Kodla oluşturulan kontrolü TabbedNotebook pages'ine dock ?

Mesaj gönderen aslangeri »

s.a.
oluşturduğun ShellListView in parentine dgr yi atamayı dene.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
ByDeniS
Üye
Mesajlar: 144
Kayıt: 03 Oca 2009 12:24
Konum: My Computer

Re: Kodla oluşturulan kontrolü TabbedNotebook pages'ine dock ?

Mesaj gönderen ByDeniS »

Kodun tamamını vereyim size karışıcak yoksa. Dgr oluşturduğum bir var ve InputBox'a girilen veriyi veriyor.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
deger,deger1:AnsiString;
i,satir:Integer;
yeni:TShellListView;
begin
 satir:=TabbedNotebook1.Pages.Count;//eleman sayısı
 deger:=inputbox('Kategori Oluştur !','Kategori Adı','');
 if deger = '' then
  begin
  ShowMessage('Boş değer girerek bir kategori oluşturamazsınız !');
  end
 else
  begin
  for i:=0 to satir-1 do
   if deger = TabbedNotebook1.Pages[i] then
   begin
   ShowMessage('Bu kategori zaten mevcut durumda. Aynı isimde 1 den fazla kategori oluşturulamaz !');
   exit;
   end;
   TabbedNotebook1.Pages.Add(deger);
   yeni:=TShellListView.Create(TabbedNotebook1);
   yeni.Parent:=TabbedNotebook1;
   yeni.Root:=('rfdesktop');
   yeni.Align:=alClient;
 end;
end;
Yukarıdaki kodun açıklamasını tekrar yapayım.

Button'a bastığımız zaman InputBox açılıyor ve değer girmemiz isteniyor. Girdiğimiz değeri sonra kontrol ediyor eğer değer yoksa eklemiyor değer varda aynısı zaten pages olarak mecvutsa yine eklemiyor. Ama değer var ve benzersizse InputBox'a yazılan metini pages (yeni sayfa) olarak ekliyor. Eklemeyi yaptıktan sonra yeni TShellListView oluşturuyorum burayakadar problem yok ama oluşturduğum ShellListView'i yeni eklediğim pages'in içine aling alclient yapmak istiyorum. Yukarıda belirttiğim kodda alclient yada başka bir parametre kullandığımda ekliyor ama sayda değiştirip aynı sayfaya gelince kayboluyor. Tahminimce TabbedNotebook'un arkasına atıyor.
·•· Bilgi Güçtür ! Bu Gücü Hisset ! ·•·
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Kodla oluşturulan kontrolü TabbedNotebook pages'ine dock ?

Mesaj gönderen aslangeri »

s.a.
tabbednotebook u daha önce hiç kullanmamıştım. şimdi biraz baktım. page leri tstrings tipinde tutmuş.
o zaman yeni eklediğimiz page in handlesini tabbednotebook un "controls" listesinden çıkartacağız demektir.
pages.add metodu bize eklenen yeni page in sıra numarasını geri döndürüyor. bu değeri bir yere alıp yeni oluşturduğumuz bileşenin handle sine verirsek problemi çözmüş oluruz.
ufak bir örnek yaptım. shelllistview yerine label create ettim.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
yeni:tlabel;
begin
  i:=TabbedNotebook1.Pages.Add('yeni');
  yeni:=tlabel.Create(TabbedNotebook1);
  yeni.Parent:=twincontrol(TabbedNotebook1.Controls[i]);
  yeni.Caption:='merhaba';
  yeni.Align:=altop;;
end;
parent wincontrol istediği için ufak bir tip değiştirme operasyonu ile sorunumuzu hallediyoruz. :wink:
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
ByDeniS
Üye
Mesajlar: 144
Kayıt: 03 Oca 2009 12:24
Konum: My Computer

Re: Kodla oluşturulan kontrolü TabbedNotebook pages'ine dock ?

Mesaj gönderen ByDeniS »

Teşekkür ediyorum deniyorum tahminimce olmuştur bu yöntem aklıma gelmemişti.
·•· Bilgi Güçtür ! Bu Gücü Hisset ! ·•·
Cevapla