Treeview Node sorusu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ardahan
Üye
Mesajlar: 144
Kayıt: 26 Oca 2004 05:17
Konum: İstanbul - Kocaeli - Ardahan
İletişim:

Treeview Node sorusu

Mesaj gönderen ardahan »

S.A.

Treeviewa önce makinadaki Portları ekliyorum

Com1
Com2 gibi

Sonra başka bir function da (yapılması gereken başka şeyler olduğundan ayrı ayrı eleman eklemek durumundayım.)

Com1 e bağlı cihazları listeleyeceğim AddChild ile bir güzel ekliyorum ama Com1 in item index i 0 olduğundan problem yok ama bu sefer Com2 ye eleman eklemek istediğimde ekleyemiyorum nasıl halledebilirim?
Gözyaşlarım sevgimi anlatmıyor mu !
ardahan
Üye
Mesajlar: 144
Kayıt: 26 Oca 2004 05:17
Konum: İstanbul - Kocaeli - Ardahan
İletişim:

Mesaj gönderen ardahan »

Kendim hallettim Elhamdülillah :) Biraz kötü bir metod ama çalışıyo :

Kod: Tümünü seç

  procedure FindNodeText(Text: String; const TreeView: TTreeView);
  var
    Node: TTreeNode;
  begin
    Node := TreeView.Items.GetFirstNode;

    while Node <> nil do
    begin
      if Node.Text = Text then
      begin
        Node.Selected := True;
        TreeView.SetFocus;
        Break;
      end;
      Node := Node.GetNext
    end;
  end;


  FindNodeText('Com'+Inttostr(n), TVReader);
  NewNode:= TVReader.Items.AddChild(TVReader.Selected,'Bla Bla');

Gözyaşlarım sevgimi anlatmıyor mu !
AliRiza
Üye
Mesajlar: 172
Kayıt: 24 Kas 2004 10:57
Konum: İstanbul/Avcılar
İletişim:

Bana yardım edermisiniz..

Mesaj gönderen AliRiza »

Ya bende treeview'de bulunan bir elemanı seçili hale getirmek istiyorum.
Şöyle treeview'de grup ve ona bağlı alt grup var.
Ben eğer şart doğru ise buna göre alt grubu nasıl seçili hale getirebilirim.
Items özelliğini denedim olmadı.Şöyle bir kaç tane ana düğüm var.O düğüme bağlı alt grup o alt grubunda başka bir alt grubu var.Ben bir alt grupdaki elemanı seçili hale getirmek istiyorum.Daha doğrusu html'de arama yaptırıyorum.Sqğ taraftada treeview'de sayfa listeleri var.Kişi isterse buradan treeview'e tıklayıp sayfalara ulaşıyor.Benim istediğim kişi arama yaptığında sağ taraftaki treeviewde elemanın seçili gelmesi..

Kod: Tümünü seç

if url.Caption='Body Appointments.htm' then
       begin
     treeview1.FullExpand;
       treeview1.items[43].Selected;  
    end;
Bilginin efendisi olmak için çalışmanın uşağı olmak şarttır...
BALZAC
Bana bir harf öğretenin kulu kölesi olurum..
HZ.ALİ
ertug
Üye
Mesajlar: 82
Kayıt: 10 Ara 2004 05:41

Mesaj gönderen ertug »

@ardahan, AliRiza

Merhaba,

TreeView içerisinde arama yapma örneği vereceğim. Ancak bir noktayı açıklığa kavuşturmak istiyorum. "TreeView"ların HideSelection özelliği varsayılan olarak (True) gelmektedir. Bu özelliği (False) yapmazsanız, sadece "TreeView" focus olmuşken seçili elemanın arka zemini boyanacaktır.

Öncelikle "Object Inspector"dan HideSelection özelliğini (False) yapınız. Ardından (TListView1)e aşağıdaki gibi eleman ekleyiniz.

100
_110
__111
__112
__113
_120
__121

Şimdi 111 elemanını bulup onun listede görünmesini sağlayacağız. (Button1.OnClick) olayı içerisinde:

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
 aNode: TTreeNode;
begin
  aNode := TreeView1.Items.GetFirstNode; { ilk elemana git }
  while (aNode <> nil) do begin
   if aNode.Text = '111' then
   begin
     TreeView1.Selected := aNode;
     aNode.MakeVisible; { elemanın görünmesini sağla }
     Break;
   end else
     aNode := aNode.GetNext; { sonraki elemana geç }
 end;
end;
aNode.MakeVisible; satırı, kapalı da olsa gerekli düğümleri açarak ilgili elemanın görünmesini sağlar.

Ertuğ Kaya
Kullanıcı avatarı
chnyildirim
Üye
Mesajlar: 39
Kayıt: 25 Haz 2003 01:51
İletişim:

Mesaj gönderen chnyildirim »

ertug yazdı:@ardahan, AliRiza

Merhaba,

TreeView içerisinde arama yapma örneği vereceğim. Ancak bir noktayı açıklığa kavuşturmak istiyorum. "TreeView"ların HideSelection özelliği varsayılan olarak (True) gelmektedir. Bu özelliği (False) yapmazsanız, sadece "TreeView" focus olmuşken seçili elemanın arka zemini boyanacaktır.

Öncelikle "Object Inspector"dan HideSelection özelliğini (False) yapınız. Ardından (TListView1)e aşağıdaki gibi eleman ekleyiniz.

100
_110
__111
__112
__113
_120
__121

Şimdi 111 elemanını bulup onun listede görünmesini sağlayacağız. (Button1.OnClick) olayı içerisinde:

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
 aNode: TTreeNode;
begin
  aNode := TreeView1.Items.GetFirstNode; { ilk elemana git }
  while (aNode <> nil) do begin
   if aNode.Text = '111' then
   begin
     TreeView1.Selected := aNode;
     aNode.MakeVisible; { elemanın görünmesini sağla }
     Break;
   end else
     aNode := aNode.GetNext; { sonraki elemana geç }
 end;
end;
aNode.MakeVisible; satırı, kapalı da olsa gerekli düğümleri açarak ilgili elemanın görünmesini sağlar.

Ertuğ Kaya
Sana ne kadar teşekkür etsem azdır. Teşekkürler...

Senin sayende 2 gündür üzerinde uğraştığım olayı halletim.

Bu adrese viewtopic.php?t=17145&highlight=treeview bu sayfanın linkini veriyorum. Aynı soruna benziyor.
Bilgine,

Cihan YILDIRIM
Cevapla