listview1.Checkboxes

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

listview1.Checkboxes

Mesaj gönderen abdulkadir »

S.a
kullandıgım listview de suna ihtiyacım var ama yapamadım.
listview1.Checkboxes:= true;// durumunda

listview1 de Sadece 1 tane Checkbox secilebilsin (radioGruop gibi yani)
Yeni secim eski secimi kaldırmalı.

Kod: Tümünü seç


  for i:=0 to listview1.Items.Count-1 do
    begin
        listview1.Items[i].Checked:=false;
    end;
       listview1.Items.Item[ListView1.ItemIndex].Checked:=true;

bu kod işe yaramadı Checkboxu secemiyorum satırı secince Checkbox seciliyor.

Yardımcı olabilirseniz sevinirim....
Hayırlı işler.........
Fikirleri Aktar
Kaynakları Dagıt
Ve
Yoldan Çekil
http://www.Leventler.com.tr
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: listview1.Checkboxes

Mesaj gönderen mrmarman »

Merhaba.

Yaklaşımın doğru. Öncelikle tüm Item'lerin CheckBox'larının Checked özelliğini False yaparak temizliyor, ondan sonra da seçili olanınkini True yaparak sadece birisini seçili yapmak istiyorsun.

Burada henüz karşılaşmadığın ama karşılaşacağın ana problem seçilen Item'i kontrol etmekten -ki ListView'in Selected özelliği senin aradığın cevaptır- öte, eğer kullanıcı CheckBox'larına tıklayıp check ederse OnClick yordamı tetiklenmeyeceğinden bu kontrolünü aşabiliyor olmaları.

Bunu aşağıdaki şekilde ikili kurgu ile çözebilirsin. İlki senin sorduğun sorunun cevabı. Yani seçili olan varsa önce eskileri temizleyip seçili olanı True yapmak. İkincisi ise kullanıcının direkt CheckBox'a tıklamasını yakalamak.

Kod: Tümünü seç

procedure TForm1.ListView1Click(Sender: TObject);
Var
  i : Integer;
begin
  if ListView1.Selected <> nil then begin
    for i := 0 to ListView1.Items.Count - 1
      do ListView1.Items[i].Checked := False;
    ListView1.Selected.Checked := True;
  end;
end;

procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if ListView1.GetHitTestInfoAt(X, Y) = [htOnStateIcon] then // Check Yapılmış
    ListView1.Selected := ListView1.GetItemAt(X,Y); // Zaten seçilince otomatik yukardaki OnClick yordamı tetiklenir.
end;
Resim
Resim ....Resim
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Re: listview1.Checkboxes

Mesaj gönderen abdulkadir »

Tesekkür ederim...

işlem dogru ama söyle bir sorun var

2.item check iken
4.item secilince check işemide o satıra uygulanıyor
checked ve selected bagımsız olmalı

söyel acıklayayım
her satırda rapor adı ve yolu yazılyor
bu raporların 1 tanesi defaulttur oda check edilmiş olandır.

rapor sayfası acılıyor yazdırılacak raporu seciyorum (sorun burda ben yazdırmak için sectigimde check olmasın)
rapor sayfasını acmadan yazdırdıgımda default rapor yazdırılıyor(default işlemi ini olarak yazıp okuyorum burda sorun yok)

umarım yazdıklarım anlasılır olmustur...

Sanırım bu olayı burda cözmemiz lazım
biraz denedim ama henüz olamdı.

Kod: Tümünü seç

 
procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem;
  Change: TItemChange);
begin

end;

procedure TForm1.ListView1Changing(Sender: TObject; Item: TListItem;
  Change: TItemChange; var AllowChange: Boolean);
begin

end;
Saygılar...
Fikirleri Aktar
Kaynakları Dagıt
Ve
Yoldan Çekil
http://www.Leventler.com.tr
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: listview1.Checkboxes

Mesaj gönderen emin_as »

Farklı bir component kullanman sorun olamayacaksa, virtual treeview ya bir gözat derim.

http://www.soft-gems.net/index.php?opti ... &Itemid=33
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Re: listview1.Checkboxes

Mesaj gönderen abdulkadir »

emin_as yazdı: Farklı bir component kullanman sorun olamayacaksa
şimdilik sorun olacak maalesef
Tesekkür ederim...
Fikirleri Aktar
Kaynakları Dagıt
Ve
Yoldan Çekil
http://www.Leventler.com.tr
Cevapla