Listview'e flag yapma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ZER0
Üye
Mesajlar: 24
Kayıt: 09 Tem 2005 10:14
Konum: İst/Maltepe

Listview'e flag yapma

Mesaj gönderen ZER0 »

Merhabalar sorum şu;acaba listview'e aynı outlooktaki gibi flag ekleyebilirmiyiz.Yani seçtiğim bir satırı işaretlemek için aynı checked gibi yapabilirmiyiz.Ve bunu bir çok sütuna farklı resimlerle yapmak istiyorum.Teşekkür ederim.
Gökay Okutucu
Sakarya Bilgisayar Programcılığı Öğrencisi
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Kod: Tümünü seç

procedure TForm1.ListView1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Item: TListItem;
  HitTest: THitTests;
begin
  // Welchem Item gehört die CheckBox
  // Which item belongs to the checkbox
  Item := ListView1.GetItemAt(x, y);

  // Was wurde vom Item genau angeklickt
  // What kind of thing was hit on the item
  HitTest := ListView1.GetHitTestInfoAt(x, y);

  // Falls ein Item angeklickt wurde und davon die Checkbox
  // If an Item was hit and exactly his checkbox
  if (Item <> nil) and (HitTest = [htOnStateIcon]) then
  begin
        Hier das OnCheck behandeln
     Handle OnCheck here        
    Beispiel
     Example
    
      if Item.Checked = False then
      begin
        if (Item.Index = 0) or (ListView1.Items.Item[Item.Index - 1].Checked = True) then
          Item.Checked := True else Item.Checked := False;
      end else
       begin
       if (Item.Index = ListView1.Items.Count - 1) or (ListView1.Items.Item[Item.Index + 1].Checked = False) then Item.Checked := False else
          Item.Checked := True;
     end;
  end;
end;
Bunu bir dene tam emin değilim ama bende başaka biryerden bulmuştum tesadüfen.Kolay gelsin.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
ZER0
Üye
Mesajlar: 24
Kayıt: 09 Tem 2005 10:14
Konum: İst/Maltepe

Mesaj gönderen ZER0 »

Teşekkürederim bi deneyeceğim
Gökay Okutucu
Sakarya Bilgisayar Programcılığı Öğrencisi
ZER0
Üye
Mesajlar: 24
Kayıt: 09 Tem 2005 10:14
Konum: İst/Maltepe

Mesaj gönderen ZER0 »

merhaba denedim fakat başarısız oldum bi yardım edebilirmisiniz bişeyi eksik mi yaptım.Siz bi örnek gönderebilirmisiniz mail adresime
Gökay Okutucu
Sakarya Bilgisayar Programcılığı Öğrencisi
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba...

- TListView'de resimleri kullanmasın biliyorsanız basit bir şekilde halledebilirsin.

- Örneğimizde TListView'de ilgileneceğimiz resim listesi StateImages adına atayacağımız TImageList olacak.

- Forma bir adet TImageList ekle ve buna onay veya bayrak şeklinde bir resim ekle. İlk resim olduğundan sıra numarası 0 olacaktır.

- Yukarda belirttiğim gibi TListView'in StateImages açılır listesini açıp ilk ImageList'ini seç.

- @vedatkaba'nın örneğinden mouse ile üzerine tıklanmış item'i almayı kullanıcaz...

Kod: Tümünü seç

procedure TForm1.ListView1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Item  TListItem;
begin
  Item := ListView1.GetItemAt(x, y);
  If Item.StateIndex = -1 then Item.StateIndex := 0
                          else Item.StateIndex := -1;
end;
- Burada ne yaptık. Item tıklandığında resmi varsa yani 0 numaralı resim varsa -1 yapıp resmi yok ettik. -1 ise yani resim yoksa 0 yapıp seçili izlenimi veren resmi görünür yaptık.

- Bu şekilde örnekler çoğaltılabilir. İlk kerede farklı bir resim, bir sonrakinde farklı ve daha sonrakinde resmi yok eder şekilde zenginleştirebiliriz...

- Şimdi bunları nasıl kullanacağımıza gelelim. Basit bir Item sayısı kadar döngü ve Case bloğu.

- Döngü içerisinde sıradaki Item'in StateIndex'i hangi rakam ise ona göre basit bir case bloğu gerekli işlemei gerçekleştiermeye yetecektir...
Resim
Resim ....Resim
Cevapla