TreeView Alt bölüm ekleme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 99
- Kayıt: 24 Tem 2004 05:13
- Konum: kayseri
- İletişim:
TreeView Alt bölüm ekleme
ben alt alta bölümler açmak istiyorun en az 4 tane alt alta alan açmam gerekiyor ben yanlızca 2 tane acabildim databesde çağırma yaprak açmam gerekiyo benim yazdığım kod
IBTable2.First;
if IBTable1ANA_STOK_GRUP_NO.AsInteger=0 then
node:=TreeView1.Items.Add(nil,IBTable1GRUP_ADI.AsString);
while not IBTable2.Eof do
begin
if IBTable1STOK_GRUP_NO.AsInteger=IBTable2ANA_STOK_GRUP_NO.AsInteger then
begin
node1:=TreeView1.Items.AddChild(node,IBTable2GRUP_ADI.AsString);
if (IBTable1GRUP_KODU.AsInteger=IBTable1SIRA_NO.AsInteger) and (IBTable1SEVIYE.AsInteger=3) then
TreeView1.Items.AddChild(node1,IBTable2GRUP_ADI.AsString);
//yukarıdaki kod çalışmıyor
end;
IBTable2.Next;
end;
IBTable1.Next;
Acil
IBTable2.First;
if IBTable1ANA_STOK_GRUP_NO.AsInteger=0 then
node:=TreeView1.Items.Add(nil,IBTable1GRUP_ADI.AsString);
while not IBTable2.Eof do
begin
if IBTable1STOK_GRUP_NO.AsInteger=IBTable2ANA_STOK_GRUP_NO.AsInteger then
begin
node1:=TreeView1.Items.AddChild(node,IBTable2GRUP_ADI.AsString);
if (IBTable1GRUP_KODU.AsInteger=IBTable1SIRA_NO.AsInteger) and (IBTable1SEVIYE.AsInteger=3) then
TreeView1.Items.AddChild(node1,IBTable2GRUP_ADI.AsString);
//yukarıdaki kod çalışmıyor
end;
IBTable2.Next;
end;
IBTable1.Next;
Acil
s.a.
önce birinci seviyedeki nodları yükle.
sonra onselec( olması lazım olayın adını tam hatırlamıyorum) olayındada ilgili nodun alt nodlarını yüklersin. bu arada nodların data sını ekleyerek sana lazım olan key leri tutabilirsin.
şu an iş yerinde değilim.
işyerine geçersem(en erken yarın) daha net bilgi verebilirim.
kolaygelsin.
önce birinci seviyedeki nodları yükle.
sonra onselec( olması lazım olayın adını tam hatırlamıyorum) olayındada ilgili nodun alt nodlarını yüklersin. bu arada nodların data sını ekleyerek sana lazım olan key leri tutabilirsin.
şu an iş yerinde değilim.
işyerine geçersem(en erken yarın) daha net bilgi verebilirim.
kolaygelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
-
- Üye
- Mesajlar: 99
- Kayıt: 24 Tem 2004 05:13
- Konum: kayseri
- İletişim:
node
ben while do alt alta eklemeyi duşünüyodum 3 while do dan sonra hata veriyor sebebini anlayamadım iç içe olmasına kızıyo her halde ben node ekledikten sonra nasıl geri bulabilirim ki anlamadım
s.a.
node ların data özelliği var. ona eklediğin kaydın id sini atacaksın.
daha sonra o node seçildiği zaman onun datasında id sini bulup alt tablodaki kayıtları çekeceksin. kayıtları ona aktaracaksın.
şöyle anlatmaya çalışıyım.
önce node için kullanacağımı dtanın tipini belirliyoruz.
bu birinci alanımız birden fazla olduğu zamanlarda kullanmak için yapılmış bir örnekten alınıtıdır.
daha sonra kullanacağımız değişkenleri tanımlıyoruz
kullanıcı bir node doubleclikc yaptığı zamana
ve ekle prosedürü
genel olarak böyle bişeyler yapabilirsin.
procedureleri biraz kısalttım. ama mantığı anlaman açısından örnek olarak kullanabilirsin.
kolay gelsin.
node ların data özelliği var. ona eklediğin kaydın id sini atacaksın.
daha sonra o node seçildiği zaman onun datasında id sini bulup alt tablodaki kayıtları çekeceksin. kayıtları ona aktaracaksın.
şöyle anlatmaya çalışıyım.
önce node için kullanacağımı dtanın tipini belirliyoruz.
bu birinci alanımız birden fazla olduğu zamanlarda kullanmak için yapılmış bir örnekten alınıtıdır.
Kod: Tümünü seç
type
adrestype=array[0..7]of word:;
Kod: Tümünü seç
var
Buraya,
MyNode: ttreenode; //atamalarda bu iki nodu kullanacağız.
adresT : ^adresType; //nodelarımıza atama yaparken
//bu değişkenleri kullanacağız
Kod: Tümünü seç
Buraya := treeview1.selected; //seçili olan nodu değişkene atıyoruz
if buraya.Count=0 then
ekle(buraya.Level+1);//ekle proceduresi kendi yazdığımız bir presedür.
Kod: Tümünü seç
Procedure TFXXXXX.ekle(hangisi:byte);
Var
s:string;
Begin
case hangisi of
0://ana kayıtlar
begin
anakayitlar.Open;
while not anakayitlar.Eof do
begin
MyNode := TreeView1.items.add (Nil, anakayitlaradi.asstring);
mynode.ImageIndex:=hangisi;
new (adrest);
fillchar (adrest^, sizeof (adrest^), 0);
adrest^ [0] := anakayitID.asinteger;
MyNode.Data := adrest; //dispose yapmak yok
mynode.ImageIndex:=hangisi;
mynode.StateIndex:=-1;
anakayitlar.Next;
end;
anakayitlar.Close;
end;
1://
Begin
detay1.Open;
while not detay1.Eof do
begin //buraya burada kullaniliyor
MyNode := TreeView1.items.AddChild (buraya, trim(detay1adi.asstring');
new (adrest);
fillchar (adrest^, sizeof (adrest^), 0);
adrest^ [0] := anakayitlar_id
adrest^ [1] := detay_id;
MyNode.Data := adrest;
mynode.ImageIndex:=hangisi;
mynode.StateIndex:=-1;
detay1.Next;
end;
detay.close.Close;
end;
if buraya <>nil then buraya.Expand(true);
procedureleri biraz kısalttım. ama mantığı anlaman açısından örnek olarak kullanabilirsin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
-
- Üye
- Mesajlar: 99
- Kayıt: 24 Tem 2004 05:13
- Konum: kayseri
- İletişim:
teşkür
hocam sağlosın ekledim şimdi söyle bir sorunum var
ben bu kayıtdaki bilğiye göre sorgulama yapmak istiyorum yani databasde field şöyle
stok no grup no ana grup no grup adı
1 1 1 aaaaa
2 2 1 bbbbb
gibi treewiev ekledim ama bana stokno treewiev tıkladığında hanğisine geldiğini bilmem gerekiyo yani aaaaa treewiev tıkladım mı aaa nın stok no 1 olduğunu nasıl anlarım
yardımların için allah razı olsun hocam
ben bu kayıtdaki bilğiye göre sorgulama yapmak istiyorum yani databasde field şöyle
stok no grup no ana grup no grup adı
1 1 1 aaaaa
2 2 1 bbbbb
gibi treewiev ekledim ama bana stokno treewiev tıkladığında hanğisine geldiğini bilmem gerekiyo yani aaaaa treewiev tıkladım mı aaa nın stok no 1 olduğunu nasıl anlarım
yardımların için allah razı olsun hocam
Aşağıda bir Programda kullandığım Kodlardan bir kesit...
incelersen sanırım sorularına cevap olur...
incelersen sanırım sorularına cevap olur...
Kod: Tümünü seç
Procedure TFrmolusansorular.Kaynaklarlistesiniolustur(yuklenecekyer:TRzTreeView);
var
sqlkaynaktur,sqlkaynak:TADOQuery;
altkonularyuklenirkenkullanilacakdeger:Integer;
begin
altkonularyuklenirkenkullanilacakdeger:=0;
yuklenecekyer.Items.Clear;
sqlkaynaktur:=TADOQuery.Create(self);
sqlkaynak:=TADOQuery.Create(self);
sqlkaynaktur.Connection:=Frmmain.veritabanibaglantisaglayici;
sqlkaynak.Connection:=Frmmain.veritabanibaglantisaglayici;
sqlkaynak.close;
sqlkaynak.SQL.Clear;
sqlkaynak.SQL.Add(' SELECT kaynak.kaynakno FROM kaynak');
sqlkaynak.Open;
SetLength(kaynaklar,sqlkaynak.RecordCount);
sqlkaynaktur.close;
sqlkaynaktur.SQL.Clear;
sqlkaynaktur.SQL.Add('SELECT DISTINCT kaynaktur.kaynakturno, kaynaktur.kaynakturadi FROM kaynaktur INNER JOIN kaynak ON kaynaktur.kaynakturno = kaynak.kaynakturno');
sqlkaynaktur.Open;
sqlkaynaktur.First;
while not sqlkaynaktur.Eof do
begin
nodekaynaktur:=yuklenecekyer.Items.Add(nil,sqlkaynaktur.FieldList.Fields[1].AsString);
nodekaynaktur.ImageIndex:=0;
nodekaynaktur.SelectedIndex:=0;
sqlkaynak.close;
sqlkaynak.SQL.Clear;
sqlkaynak.SQL.Add('SELECT DISTINCT kaynak.kaynakturno, kaynak.kaynakno, kaynak.kaynakadi, kaynak.kaynakyayinevi, kaynak.kaynakyazari FROM kaynak WHERE (((kaynak.kaynakturno)='+sqlkaynaktur.FieldList.Fields[0].AsString+'))');
sqlkaynak.Open;
sqlkaynak.First;
while not sqlkaynak.Eof do
begin
nodekaynak:=yuklenecekyer.Items.AddChild(nodekaynaktur,sqlkaynak.FieldList.Fields[2].AsString);
// +' '+sqlkaynak.FieldList.Fields[3].AsString+' '+sqlkaynak.FieldList.Fields[4].AsString);
nodekaynak.ImageIndex:=2;
nodekaynak.SelectedIndex:=3;
kaynaklar[altkonularyuklenirkenkullanilacakdeger].kaynakno:=sqlkaynak.FieldList.Fields[1].AsInteger;
kaynaklar[altkonularyuklenirkenkullanilacakdeger].kaynakadi:=sqlkaynak.FieldList.Fields[2].AsString;
kaynaklar[altkonularyuklenirkenkullanilacakdeger].kaynakyayinevi:=sqlkaynak.FieldList.Fields[3].AsString;
kaynaklar[altkonularyuklenirkenkullanilacakdeger].kaynakyazari:=sqlkaynak.FieldList.Fields[4].AsString;
altkonularyuklenirkenkullanilacakdeger:=altkonularyuklenirkenkullanilacakdeger+1;
sqlkaynak.Next;
end;
sqlkaynaktur.Next;
end;
sqlkaynaktur.Free;
sqlkaynak.Free;
end;
s.a.
data kısmında istediğin bilgileri ekleyerek yapabilrsin.
tip tanımlaması yaparken record oluşturup onu dataya atarak yapabilirsin.
oluşturacağın recordda istediğin bilgileri tutabilirsin.
kolay gelsin.
data kısmında istediğin bilgileri ekleyerek yapabilrsin.
tip tanımlaması yaparken record oluşturup onu dataya atarak yapabilirsin.
oluşturacağın recordda istediğin bilgileri tutabilirsin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
-
- Üye
- Mesajlar: 99
- Kayıt: 24 Tem 2004 05:13
- Konum: kayseri
- İletişim:
treeview
hocam ben derdimi anlatamadım her halde sorun şu kişi databese bilğileri giriyor buna görede ağaç yapısını oluşturuyorum bunu yaptım şimdi sorun şu ağaç yapısındaki bir nesneye tıkladım mı filitreleme yapmam lazım grupnosuna göre amam treeview grup adını yazdırdım databesde gurpno var ama nasıl ulaşacağımı bilmiyorum
s.a.
sanırım ben anlatamadım.
grupadını treeviewa yazdırırken
node ların data özelliğine grupıd sini ekleyeceksin.
sonra bir nod seçildiği zaman o nodun data sında grupid sini bulacaksın.
tablonuda bulduğun o idye göre filitreleyeceksin.
kolay gelsin.
sanırım ben anlatamadım.
grupadını treeviewa yazdırırken
node ların data özelliğine grupıd sini ekleyeceksin.
sonra bir nod seçildiği zaman o nodun data sında grupid sini bulacaksın.
tablonuda bulduğun o idye göre filitreleyeceksin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
-
- Üye
- Mesajlar: 99
- Kayıt: 24 Tem 2004 05:13
- Konum: kayseri
- İletişim:
sorun şu
ben aslında bir prg arayüz yazıyorum sorun şu gurupno ve stokno bir databasede stok no stok adı bir databesde ve grup adı grupno bir database de ben grup databaseden ağaç yapısını yaptım filreleme yapmam lazımki ürünler gelsin onun içinde şöyle bir kod kullandım
Data.kirilma1.Locate('GRUP_ADI',TreeView1.Selected.Text,[loCaseInsensitive]);
data.ana.Filter:='STOK_GRUP_NO ='+data.kirilma1STOK_GRUP_NO.AsString;
data.ana.Filtered:=true;
şimdide hata ver,yo hata
aritmetik hata, nümerik taşıma yada karekter fazlası diye ben ne yapmalıyım ve pazertesiye tetiştirim demiştim acaba yetiştirebilirmiyim
Data.kirilma1.Locate('GRUP_ADI',TreeView1.Selected.Text,[loCaseInsensitive]);
data.ana.Filter:='STOK_GRUP_NO ='+data.kirilma1STOK_GRUP_NO.AsString;
data.ana.Filtered:=true;
şimdide hata ver,yo hata
aritmetik hata, nümerik taşıma yada karekter fazlası diye ben ne yapmalıyım ve pazertesiye tetiştirim demiştim acaba yetiştirebilirmiyim
nodelerin data sı pointer tipinde nasıl veri ekleyecm bir türlü yapamadım...aslangeri yazdı:s.a.
önce birinci seviyedeki nodları yükle.
sonra onselec( olması lazım olayın adını tam hatırlamıyorum) olayındada ilgili nodun alt nodlarını yüklersin. bu arada nodların data sını ekleyerek sana lazım olan key leri tutabilirsin.
şu an iş yerinde değilim.
işyerine geçersem(en erken yarın) daha net bilgi verebilirim.
kolaygelsin.
bir code yazarsanız sevinirim..
Siz hayal edin...Biz yapalım TuannaSoft...