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.
TreeView E Ekleme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
TreeView E Ekleme
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
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.
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 satırı daime işleme girer.
- 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...
// Edit // unutmuşum, altına eklesin demişsin ya, bahsettiğin alt dal ise AddChild demen gerekiyor...
- 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.

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);

- 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;
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.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************