Subitem gösteren checkbox seçimli listview

Yapmak istediğiniz işle ilgili doğru bileşeni bulmak için burayı kullanabilirsiniz. Sadece bulmak için, diğer sorular Programlama forumuna lütfen.
Forum kuralları
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
Cevapla
ramcet
Üye
Mesajlar: 8
Kayıt: 22 Tem 2010 10:58

Subitem gösteren checkbox seçimli listview

Mesaj gönderen ramcet »

Merhaba arkadaşlar,
başlık oldukça açıklayıcı olsa da izaha muhtaç. Şimdi, bana iş yerindeki birimler ve bu birimlerdeki isimlerin checkbox lı listesi lazım. Ancak checkboxlarda seçim yapıldığında hepimizi kodek ve sair kurulumlarda karşılaştığımız subitem li seçenekler lazım.
Daha açıklayıcı olmak için arzu ettiğim componente dair bir adet ekran görüntüsü koyuyorum.

Resim
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Subitem gösteren checkbox seçimli listview

Mesaj gönderen conari »

treeview desen elli tane gelir.
örnek
http://delphi.about.com/b/2009/01/19/tt ... uttons.htm
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
ramcet
Üye
Mesajlar: 8
Kayıt: 22 Tem 2010 10:58

Re: Subitem gösteren checkbox seçimli listview

Mesaj gönderen ramcet »

hocam verdiğin adresteki istediğim şey değil. dikkat edersen ana düğümde de checkbox istiyorum ve alt düğümlerdeki seçimlere göre tam seçilmiş, yarı seçilmiş ve seçilmemiş olmasını istiyorum.

ayrıca 98'den beri var olan bu tip view için delphi'nin kendi componenti olmamasını anlamıyorum.
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Subitem gösteren checkbox seçimli listview

Mesaj gönderen emin_as »

Ücretsiz ve açık kaynak kodlu virtualtreeview işini görür,
http://www.soft-gems.net/index.php?opti ... &Itemid=33
ramcet
Üye
Mesajlar: 8
Kayıt: 22 Tem 2010 10:58

Re: Subitem gösteren checkbox seçimli listview

Mesaj gönderen ramcet »

sağolun arkadaşlar,
dediğiniz componenti kurdum.
yapmak istediğim birimleri parent, personeli bağlı oldukları birimlerin node ları yapmak istiyorum. burada yapılan seçimleri alıp teker teker döngüde mesai hesaplatacam. nodeları ekleyebiliyorum. ada isimleri "node" olarak kalıyor. ayrıca checked ları çekerken de beceremiyorum. componenti anlatan kitapçığını da karıştırdım ama bir neticeye varamadım. bilgi verirseniz sevinirim.
ramcet
Üye
Mesajlar: 8
Kayıt: 22 Tem 2010 10:58

Re: Subitem gösteren checkbox seçimli listview

Mesaj gönderen ramcet »

Bir Allah kulu yok mu yahu?
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Subitem gösteren checkbox seçimli listview

Mesaj gönderen aslangeri »

s.a.
Allah'ın kulu çok.
istediğin bilgi kitapçıkta yazan şeylerin tekrarı mı yoksa sorunun çözümü?
sorununu çözmek için ne yaptığını görmemiz lazım.
şunu şöyle yaptın şunu şöyle yapınca şuda şöyle oldu ama ben şöyle yapmak istiyodum. gibisinden kodlarınıda yazarsan yardımcı olmaya çalışalım.
doğru foruma doğru soruyu sorarsan cevabını alırsın.
hadi kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ramcet
Üye
Mesajlar: 8
Kayıt: 22 Tem 2010 10:58

Re: Subitem gösteren checkbox seçimli listview

Mesaj gönderen ramcet »

merhaba, doğru foruma doğru soru meselesi kenarda dursun azizim. bunca vakitte cevap verilmemesinin bu şekilde açıklanabileceğini zannetmiyorum. Neyse.

İmdi, ben bu meretin eğitimine dair bir pdf buldum ve meseleyi oradan çözdüm. Şöyle ki, VirtualStrinTree nesnesine düğüm ekleme işlemini addchild ile yapıyoruz.
Addchild metodu iki adet değişken alıyor: birincisi düğüm (ki PvirtualNode tipinde bir değişken olmak icabeder yahut nil ), ikincisi ise bir pointer. ikinci parametre ile o düğüme data aktarıyoruz [Ben bunun yerine yine aynı pdf dosyasından arakladığım foksiyonu da dercedeğim]. VirtualStrinTree nesnedinin onGetText hadisesinde ise bu datalardan birisini CELLTEXT olarak tesbit ediyoruz. Bunu bir de kodlar söylesin :

Kod: Tümünü seç

ype
  TTreeData = record
    isim : string;
    kartNo : integer;
  end;
    PTreeData = ^TTreeData;
  TForm1 = class(TForm)
    ADOQuery1: TADOQuery;
    bSaat: TButton;
    .............
aktaracağımız datalar için bir tip belirledik. Ondanda Ptreedata yı imal ettik.

Kod: Tümünü seç

function  AgacYap(AVST: TCustomVirtualStringTree; ANode:
PVirtualNode;
  ARecord: TTreeData): PVirtualNode;
var
  Data: PTreeData;
begin
  Result:=AVST.AddChild(ANode);
  Data:=AVST.GetNodeData(Result);
  Avst.ValidateNode(Result, False);
  Data^.isim:=ARecord.isim;
  Data^.kartNo := ARecord.kartNo;
end;
bu fonksiyonu düğüm eklemede kullanacağız.

Kod: Tümünü seç


var
  birimSayisi, i, birimKodu, birimPersonelSayisi: integer;
  baba, ogul : PVirtualNode;
  babaDetay, ogulDetay : TTreeData;
  j: Integer;

begin
  with ADOQuery1 do
  begin
    close;
    ConnectionString := CONN;
    SQL.Clear;
    SQL.Add('select * from birimler order by Birim');
    Open;
  end;
//BİRİMLER BABA PERSONELLER OĞUL
  birimSayisi := ADOQuery1.RecordCount;

  for I := 0 to birimSayisi - 1 do
  begin
  babaDetay.isim := ADOQuery1.FieldByName('birim').AsString; //BİRİMLER İÇİN SADECE İSİMLERİ LAZIM
  birimKodu := ADOQuery1.FieldByName('BirimKodu').AsInteger;

  VST.BeginUpdate;
  VST.NodeDataSize := SizeOf(TtreeData);
  baba := AgacYap(VST,nil,babaDetay);
  baba.CheckType := ctTriStateCheckBox;

    with ADOQuery2 do
    begin
      close;
      ConnectionString := CONN;
      SQL.Clear;
      SQL.Add('select * from Kisiler where BirimKodu like'+QuotedStr(IntToStr(birimKodu))); //BABANIN BİRİMKODU NEYSE SADECE O PERSONELİ ALIYORUZ
      SQL.Add('order by Isim');
      open;
    end;

  birimPersonelSayisi := ADOQuery2.RecordCount;

    for j := 0 to birimPersonelSayisi - 1 do
    begin
      ogulDetay.isim := ADOQuery2.FieldByName('Isim').AsString;  //PERSONELİN ADINI ALIYORUZ
      ogulDetay.kartNo := ADOQuery2.FieldByName('KartNo').AsInteger; //PERSONELİN KART NUMARASINI ALIYORUZ


      ogul := AgacYap(VST,baba,ogulDetay);
      ogul.CheckType := ctTriStateCheckBox;
      ADOQuery2.RecNo :=  ADOQuery2.RecNo + 1;
    end;
  VST.EndUpdate;
  ADOQuery1.RecNo :=  ADOQuery1.RecNo +1 ;
  end;
end;


böyleyken böyle.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Subitem gösteren checkbox seçimli listview

Mesaj gönderen aslangeri »

s.a.
şimdi durum biraz daha netleşti.
ramcet yazdı:.....burada yapılan seçimleri alıp teker teker döngüde mesai hesaplatacam........
bu işlemi nasıl yapmaya çalıştınız.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ramcet
Üye
Mesajlar: 8
Kayıt: 22 Tem 2010 10:58

Re: Subitem gösteren checkbox seçimli listview

Mesaj gönderen ramcet »

a.s,
azizim evvela bu kadar geç cevap verdiğim için affına mahcubum. helalleşme babı tez bitsin diye takvim işiyle meşgul olduğumu bildirmek isterim :).

şimdi benim bu treeview denen nesneye ihtiyacım sadece ve sadece kişi seçtirmede derli topluluk ve kolay kullanırlık sağlamak içindi. gerisi için gerekli prosedürleri ayarlamıştım. seçilmiş olanların kart numaralarını da aldıktan sonra nesneyle de işim bitmiş oldu. istediğimi yapmış oldum, alakanıza teşşekür ederim.
Cevapla