Treeview menu hazırlama dinamik

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Treeview menu hazırlama dinamik

Mesaj gönderen delphist »

S.a. Arkadaşlar.

Treeview de menü hazırlamak istiyorum. Fakat durum biraz farklı. Kullanıcı haklarına göre treeview deki menüleri oluşturmak istiyorum. Bunu yaptıktan sonra tabi treeview onclick altındaki kodları da çalıştırmam gerek bu konuda yardımcı olursanız dinamik oluşturulan treeview menülerindeki onclick kodlarını nasıl uyarlıyacam nasıl yapıcam...Şimdiden teşekkür ederim. iyi Çalışmalar
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

S.A.

Hocam bence treview'da göstermek istediğin menüleri vt'de tutun. ve bunlara bir değer atayın. Her kullanıcı kendi kullanıcı adı ve şifresiyle girişte form'da kontrol edilir ve treview'da menüler diyelim ki 1 olanlar otomatik olarak treview'da görüntülenirler. Buradan formu açmak için aşağıdaki kod tarzı bir olay kullanabilirsiniz..

Kod: Tümünü seç

  case TreeView1.Selected.AbsoluteIndex of
    1 : if Kontrol(1) Then
          Begin
            sbtfrm.ShowModal;
          End Else TreeView1.Items[0].AlphaSort := False;
  End;
Mantık bu şekilde hocam umarım yardımcı olabilmişimdir. Kolay gelsin...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba ,
TreeView in her bir Node si için StateIndex adında Integer bir özelliği vardır, siz VT nizde menü isimlerini ve Numaralarını tutun, TreeView i oluştururken StateInde özelliklerine ilgili menü kodunu atayın, gerekli procedureyi de şu şekilde sabitleyin,

Kod: Tümünü seç

case Treeview.Selected.StateIndex of
 1:
 2:
 3:
. .. . . . 
end;
şeklinde kullanabilirsiniz.
İyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

Vkamadan s.a. eyvalla hocam stateindex işimi görür büyük ihtimalle...Menulere vereceğim id lere göre zaten form ve program ve alt program tanımlamalarında kulanncağım id leri bu stateindexe göre ayarlarsam sıkıntı çıkmandyacak ozaman. Veritabanında kullanıcıya verdiğim haklara göre menulerde hangi no tanımlıysa o noya göre menüleri oluşturabilirim dinamik olarak. Buraya kadar anladım.

Fakat bundan sonraki işlemde bu dinamik oluşturulan treeviewdeki münelerin on click olayına form açılımlarını nasıl yyerleştirecem bunu tam kavrayamadım. Bu konudada yardımcı olursanız memnun olurum.

Teşekkür ederim iyi Çalışmalar
Kullanıcı avatarı
comfort
Üye
Mesajlar: 214
Kayıt: 28 Ara 2004 06:37
Konum: İzmir
İletişim:

Mesaj gönderen comfort »

Bu şekilde yetkilendirme işlemini bende kullanıyorum ama Jedi bileşenlerinin treeview nesnesi ile. Bu treeview içinde checkbox kullnabiliyorsun. Bütün formlarını treeview içine at. Checked olanları vt de 1 yaparsın.
yani

Kod: Tümünü seç

if jvtreeview1.items[i].checked then
table1Form1.asboolean:=true;
(bo kodu for döngüsüne sokarsan sorun çıkmıycaktır)

gibi bir kod işini görecektir. olmazsa bütün kodu göndereyim ama bende form sayısı ve yetkilendirme daha karışık olduğu için pek anlıycağını zannetmiyorum.Çok karışık bi kod.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

delphist yazdı: Fakat bundan sonraki işlemde bu dinamik oluşturulan treeviewdeki münelerin on click olayına form açılımlarını nasıl yyerleştirecem bunu tam kavrayamadım. Bu konudada yardımcı olursanız memnun olurum.

Teşekkür ederim iyi Çalışmalar
Programınızda örneğin, Hesap Kartı , Hesap Hareketi ve Raporlama die üç modül olsun, Hesap Kartı 1 nolu , Hesap Hareketi 2 nolu Raporlama 3 nolu Stateindex temsilci değerlerine sahip olsun. Sizin Treeview in OnClick yordamına yazacağınız kod bütün Stateindex değerlerini içerecek şekilde olmalı , yani,

Kod: Tümünü seç

case Treeview.Selected.StateIndex of
 1:frHesapKart.ShowModal;
 2:frHesapHareket.ShowModal;
 3:frRapor.ShowModal;
end;
bu durumda sizin sisteme giren kullanıcının sadece 1 ve 2 nolu menüleri kulanmaya yetkisi olduğunu varsayarsak , Treeview ninizde sadece 1 ve 2 nolu StateIndex ler olacaktır ve kodlamamaızda 3 nolu menüde olmasına rağmen hiç bir zaman 3 nolu Case yordamı çalışmayacaktır, ama biz case bloğuna bütün yetkilere sahip bir kullanıcı için oluşturmalıyız.
Umarım anlatabilmişimdir.
İyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

Tşk derim. arkadaşlar Eyvallah...Sonucu buraya kodlarıyla birlikte yazıcam... :)
KnoppiX
Üye
Mesajlar: 5
Kayıt: 02 Nis 2006 02:41

Treeview (dinamik)

Mesaj gönderen KnoppiX »

S.a arkadaslar

benimde treeview ile ilgli bir sorum olacaktı arama yaptım istedigim bilgiye ulasamadım buraya yazmak daha dogru olur diye düşündüm

delphi 7 ile mysql veritabanı kullanarak küçük bir raporlama uygulaması gelistirmeye çalışıyorum
veri tabanına ip adresi ile baglanıp ilgili taplodan şehir isimleri medya isimleri gibi bilgileri çekip treeview içinde listelettim daha sonra şehir isimlerinden bir yada daha fazlası seçilerek rapor kayıtlarının tutuldugu tabloda iller_id alanı seçilen ilin id numarası olan verileri cekmek istiyorum. Bu uygulamayı asp ile web tabanlı olarak yaptım programdan ufak birde ekran görüntüsünü http://88.247.199.171/treeview.htm bu urlye attim yapmak istedigim sey her il adı önüne aspde yaptıgım gibi birer checkbox atıp checkboxlarada illerin id sini atamak.
Bunun için treeviewde her ilin adını olustururken birde checkbox create etmem mi gerekiyor. Dinamik bi yapıda olması gerekiyor. Delphide daha çok yeniyim nasıl yapmam gerektigi hakkında kücük bi bilgi verirseniz çok sevinirim. Şimdiden teşekkürler..
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
@KnoppiX
treeview yerine checlistbox kullanabilirsin.
birde treview ile ilgili birşey söylemek istiyorum.
Treeview de node ların data özelliği var. filitreleme vs. işlemleri için bu özelliği kullanabilirler.
data ya pointer atayarak istenilen tipte veri saklayabilirsiniz.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
KnoppiX
Üye
Mesajlar: 5
Kayıt: 02 Nis 2006 02:41

Mesaj gönderen KnoppiX »

@aslangeri
yardımınız için teşekkür ederim. Uygulamadan kullanacagım ana kategoriler sabit oldugu ıcın sanırım checklistboxta istedigim gibi birsey yapabilirim öneriniz icin tekrar tesekkurler fakat bir sorum daha olacak

Kod: Tümünü seç

CheckListBox1.Items.Add(item1);
seklinde secenek ekleyebiliyoruz sanırım ama ben sadece secenek degil de her secenek icin arkaplanda bir id deger saklamasını istiyorum
mesela item1 ve item3 secildiginde bana item1 in degeri olarak 45 item3 ün degeri olarak 72 sonucunu dondurmesı gerekiyo ve ben bu id numaraları ile sorgulama yapabilmeliyim.

Kısacası vtden isimleri item olarak checklistboxa ekleyip ve o itemin degeri olarakta eklenen kayıtın id numarasını nasıl ekleyecegimi kucuk bi kodla soyleyebilirmisiniz.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
vt deki değerleri tutmak için items.add yerine additem kullanıyoruz.

Kod: Tümünü seç

    CLBEvdekiler.AddItem(qmud.fieldbyname('adi').AsString+' '+qmud.fieldbyname('soyadi').AsString,
                         Tobject(qmud.fieldbyname('artan').asinteger));
daha sonra seçili olan elemandaki veriyo okumak için

Kod: Tümünü seç

  for i:=0 to CLBEvdekiler.Items.Count-1 do
  begin
    if CLBEvdekiler.Checked[i] then
    Begin
       showmessage(inttostr((integer(CLBEvdekiler.Items.Objects[i]))));
    End;
  end;
böylelikle seçili olanların id seini almış olursunuz.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
KnoppiX
Üye
Mesajlar: 5
Kayıt: 02 Nis 2006 02:41

Mesaj gönderen KnoppiX »

Çok teşekkürler..
Kullanıcı avatarı
sarp_halit
Üye
Mesajlar: 241
Kayıt: 17 Ara 2003 04:30
Konum: Cennet Fethiye
İletişim:

Mesaj gönderen sarp_halit »

S.A. güzel bir sistem. şimdi hocam ben veritabanında yer alan kullanıcıların yetkilerine göre treeview nesnelerini yönetecek olursam, eğer bit kullanıcının yetkisi yoksa bunu disable yapabilir miyim? ve nasıl
Fethiye den herkese sevgiler ...
X))@:>
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

bu kadar kasmaya gerek varmı acaba ..bende treview menu kullanıyorum projemde fakat tüm kullanıcılarda tüm menüler gözüküyor.Ancak mesela kullanıcı yeni stok kartı' nı tıkladığında kullanıcı yetkisi yoksa "Kullanıcı Yetki Hatası" diye bir mesaj gösterip işlemi durduruyorum.Bana daha pratik ve stabil geliyor.
Kullanıcı avatarı
sarp_halit
Üye
Mesajlar: 241
Kayıt: 17 Ara 2003 04:30
Konum: Cennet Fethiye
İletişim:

Mesaj gönderen sarp_halit »

ben onu zaten yapabiliyorum. ama sizden istediğim şeyin de yöntemini buldum. formun oncreate olayında yetkilere göre kontrol edip gereken dalları sildiriyorum :D
Fethiye den herkese sevgiler ...
X))@:>
Cevapla