TreeView E Ekleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

TreeView E Ekleme

Mesaj gönderen vedatkaba »

Herkese Merhabalar.....

procedure TForm1.CustomItem7Click(Sender: TObject);
var
i:integer;
node:TTreenode;
begin
i:=tree.Items.Count;
if tree.Items.Count=0 then
begin
tree.Items.Add(nil,edit1.Text);
end
else
node:=tree.Items.Item;
tree.Items.Add(node,edit1.Text);
end;
end.

Arkadaşlar şimdi bu kodda yapmak istediğim.Tree de kayıt yoksa treenode yi nil olarak belirle kayıt yap eğer varsa en son kayıtın nodesini al ve onun altına kayıt yap diyorum ama omuyor..invalidindex diye bir hata veriyor.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba...

- Siz bir soru sormuşsunuz ama ben aslında iki hata gördüm...

1. Sorunuzun cevabı; Index değeri 0 ile başlar. Count-1 ile biter. Siz i değişkenine Count vermişsiniz. Count-1 vermeliydiniz. :idea:

2. Else'den sonra begin .. end bloğu açmadığınızdan ELSE ile sadece takip eden satır işleme konur. IF ilk bloğu halinde de ELSE halinde de yani tüm durumlarda

Kod: Tümünü seç

tree.Items.Add(node,edit1.Text); 
satırı daime işleme girer. :idea:

- Yanılıyor da olabilirim o zaman kusura bakmazsın. Aşağıdaki şekilde okunaklı olarak her iki durumun da uygulandığını görebilirsin. Sırası gelmişken yazdığın kodu CODE tagına alırsan aşağıdaki gibi okuması kolay olur...

Kod: Tümünü seç

var
  i    : integer;
  node : TTreenode;
begin
  i := tree.Items.Count;
  if tree.Items.Count = 0 then
  begin
    tree.Items.Add(nil, edit1.Text);
  end
  else
  begin
    node := tree.Items.Item[i-1];
    tree.Items.Add(node, edit1.Text);
  end;
end;
// Edit // unutmuşum, altına eklesin demişsin ya, bahsettiğin alt dal ise AddChild demen gerekiyor...
Resim
Resim ....Resim
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Kod: Tümünü seç

procedure TForm1.CustomItem7Click(Sender: TObject);
var
i:integer;
node:TTreenode;
begin
i:=tree.Items.Count-1;
if  tree.Items.Count=0 then
begin
tree.Items.Add(nil,edit2.Text);
end
else
begin
node:=tree.Items.Item[i].GetNext;
tree.Items.Add(node,edit2.Text);
end;
end;
end.

son hali ve çalıştı.Bu kadar basit ama göremedik yani..
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Cevapla