Listview daha fazla text alanı oluşturma

FireMonkey ve Mobil uygulama (iOS, Android, Windows Phone) ile ilgili sorularınızı bu foruma sorabilirsiniz.
Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 588
Kayıt: 20 Eki 2006 10:37
Konum: Erzurum
İletişim:

Re: Listview daha fazla text alanı oluşturma

Mesaj gönderen fesiharslan » 25 May 2016 03:28

Merhaba;

GlyphButton kullanarak CheckBox yapmak için;
1- Öncelikle yeni bir proje oluşturalım.
2- Forma bir adet ListView yerleştirelim.
3- Structure penceresinde ListView>ItemAppearance>Item'ı seçip Object Inspector'dan Appearance özelliğini DynamicAppearance seçelim.
Böylece bir adet TTextObjectAppearance oluşacaktır.
4- Yine Structure penceresinde ListView>ItemAppearance>Item'ı seçili iken Object Inspector'da en altta yer alan artı (+) sembölünün yanındaki Add new... seçeneğini TGlyphButtonObjectAppearance ile değiştirelim. Böylece TListItemGlyphButton tipinde yeni bir alt Item oluşacaktır.

Resim

5- Oluşturduğumuz Item elemanlarını düzenlemek için Form üzerindeki ListView'e sağ tıklayıp "Toggle DesignMode" menüsünü seçelim.

Resim

Tasarım işi tamamlanmış oldu.
Kod kısımlarını ise aşağıdaki linkten paylaşıyorum.
Proje Linki: https://mega.nz/#!yYUSwAjL!I-QtkzwZj2RZ ... YD-F5Ohijs

Ekran görüntüsü:
Resim

İyi çalışmalar...

Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 02:52

Re: Listview daha fazla text alanı oluşturma

Mesaj gönderen brs » 26 May 2016 12:44

Efsanesiniz Fesiharslan üstadım...
En son brs tarafından 29 May 2016 09:59 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...

Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 588
Kayıt: 20 Eki 2006 10:37
Konum: Erzurum
İletişim:

Re: Listview daha fazla text alanı oluşturma

Mesaj gönderen fesiharslan » 26 May 2016 02:10

brs yazdı:Efsanesiniz Efsiharslan üstadım...
Estağfurullah,
Yeni teknoloji işte, ayak uydurmaya çalışıyoruz.
İyi çalışmalar...

Kullanıcı avatarı
Dostk
Üye
Mesajlar: 144
Kayıt: 22 Ağu 2015 11:21

Re: Listview daha fazla text alanı oluşturma

Mesaj gönderen Dostk » 30 May 2016 08:41

Selamlar;

Andoridle çok fazla sıkıntı yaşıyorum; Listviewde oluşturulan kayıtları bir buton yardımıyla tümünü seçtirmek istiyorum, bunu klasik yolla yapılıyor. Fakat özel olarak oluşturulan "ItemEdit" üzerinden GlyphButton ları bir türlü tümünü seçtirme işlemini başaramadım; bu sorunu nasıl çöze yaptırabilirim...

Kod: Tümünü seç

procedure TForm3.BtnTumuClick(Sender: TObject);
begin
  ListView.BeginUpdate;
  try
    begin
      if BtnTumu.Tag = 0 then
      begin
        for I := 0 to ListView.Items.Count - 1 do
          ListView.Items[I].Checked := True;
        BtnTumu.Tag := 1;
      end
      else
      begin
        for I := 0 to ListView.Items.Count - 1 do
          ListView.Items[I].Checked := False;
        BtnTumu.Tag := 0;
      end;
    end;
  finally
    ListView.EndUpdate;
  end;
end;

Kod: Tümünü seç

var
  Button: TListItemGlyphButton;
begin
  if (AObject is TListItemGlyphButton) then
  begin
    Button := TListItemGlyphButton(AObject);
    Button.Checked := Not Button.Checked;
  end;
end

Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 588
Kayıt: 20 Eki 2006 10:37
Konum: Erzurum
İletişim:

Re: Listview daha fazla text alanı oluşturma

Mesaj gönderen fesiharslan » 30 May 2016 09:08

Dostk yazdı:Selamlar;

Andoridle çok fazla sıkıntı yaşıyorum; Listviewde oluşturulan kayıtları bir buton yardımıyla tümünü seçtirmek istiyorum, bunu klasik yolla yapılıyor. Fakat özel olarak oluşturulan "ItemEdit" üzerinden GlyphButton ları bir türlü tümünü seçtirme işlemini başaramadım; bu sorunu nasıl çöze yaptırabilirim...
Tekrar Merhaba,
ListView'in, FindDrawable yöntemi ile TListItemDrawable tipini bulunup, TListItemGlyphButton tipine dönüştürülmesi ile GlyphButton'un tüm özellikleri kullanılabilir.

Aşağıdaki kod yapısı ile ListView'deki tüm Item'ların (GlyphButton tipindeki CheckBox'ların) Checked özelliği True yapılabilir.

Kod: Tümünü seç

procedure TForm1.SpeedButton2Click(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to ListView1.Items.Count - 1 do
  begin
    with ListView1.Items[i].Objects.FindDrawable('GlyphButton2')
      as TListItemGlyphButton do
    begin
      Checked := True;
      {
        if Checked then
        ShowMessage((I + 1).ToString() + '. Kayıt Seçili');
      }
    end;
  end;
end;
Not: Kod içerisinde yazdığım GlyphButton2 Structure penceresinde ListView1 > ItemAppearance > Item altındaki GlyphButton adıdır.

İyi çalışmalar...

Kullanıcı avatarı
Dostk
Üye
Mesajlar: 144
Kayıt: 22 Ağu 2015 11:21

Re: Listview daha fazla text alanı oluşturma

Mesaj gönderen Dostk » 31 May 2016 08:37

Teşekkür ederim, Allah razı olsun...

Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 10:10

Re: Listview daha fazla text alanı oluşturma

Mesaj gönderen Serhat » 31 May 2016 09:25

Merhaba;

Telefon üzerinden deneme yaptım, ancak sıkıntı gördüm.

Telefon ekranından tıklama ile tek tek kayıt seçildiğinde checked gerçekleşiyor ve seçilen kayıtla ilgili işlemler yapılabiliyor;
Fakat tüm kayıtları bir buton ile seçildiğinde (for I in ListView1.Items.CheckedIndexes(True) do) döngüsü checked'i seçilmiş olarak algılamıyor bu durum nasıl çözülebilir?

Tümünü seç:

Kod: Tümünü seç

procedure TForm1.BtnTumuClick(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to ListView.Items.Count - 1 do
  begin
    with ListView.Items[I].Objects.FindDrawable('GlyphButton')
      as TListItemGlyphButton do
    begin
      if Checked then
      begin
        Checked := False;
      end
      else
      begin
        Checked := True;
      end;
      {
        if Checked then
        ShowMessage((I + 1).ToString() + '. Kayıt Seçili');
      }
    end;
  end;
end;
Telefon üzerinden seçtirme:

Kod: Tümünü seç

procedure TForm1.ListViewButtonClick(const Sender: TObject;
  const AItem: TListItem; const AObject: TListItemSimpleControl);
var
  Button: TListItemGlyphButton;
begin
  if (AObject is TListItemGlyphButton) then
  begin
    Button := TListItemGlyphButton(AObject);
    Button.Checked := Not Button.Checked;
  end;
end;

Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 588
Kayıt: 20 Eki 2006 10:37
Konum: Erzurum
İletişim:

Re: Listview daha fazla text alanı oluşturma

Mesaj gönderen fesiharslan » 31 May 2016 11:18

Merhaba;
Tekrar bir örnekle cevap vermek istiyorum.
Örnekte ListView EditMode ve GlyphButton Checked modu ayrı ayrı test edilmiştir.
Ayrı butonlarda tüm Item'lar checked durumuna alınmış ve yine ayrı bir butonda Checked durumları Memo'da gösterilmiştir.

Ekran Görüntüsü:
Resim

Uygulama Linki:
https://mega.nz/#!HcUFHI5J!_bHJO3ArtvhM ... JwROJn8pE0

Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 10:10

Re: Listview daha fazla text alanı oluşturma

Mesaj gönderen Serhat » 31 May 2016 05:17

Selamlar;

Oluşturulan GlyphButton butondan checkbox değerini nasıl alabilirim bu yöntem ile (ListView1.Items.Data['GlyphButton'].???? ) bir çok metot denedim olmadı.

Kod: Tümünü seç

procedure TForm1.UserDeleteClick(Sender: TObject); // Delete onay
var
I: Integer;
begin
  for I := 0 to ListView1.Items.Count - 1 do
  begin
    showmessage(ListView1.Items[I].Data['GlyphButton'].AsString);
  end;

Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 588
Kayıt: 20 Eki 2006 10:37
Konum: Erzurum
İletişim:

Re: Listview daha fazla text alanı oluşturma

Mesaj gönderen fesiharslan » 31 May 2016 08:03

Serhat yazdı:Selamlar;

Oluşturulan GlyphButton butondan checkbox değerini nasıl alabilirim bu yöntem ile (ListView1.Items.Data['GlyphButton'].???? ) bir çok metot denedim olmadı.

Kod: Tümünü seç

procedure TForm1.UserDeleteClick(Sender: TObject); // Delete onay
var
I: Integer;
begin
  for I := 0 to ListView1.Items.Count - 1 do
  begin
    showmessage(ListView1.Items[I].Data['GlyphButton'].AsString);
  end;
Merhaba;
Aşağıdaki şekilde yapabilirsiniz.

Kod: Tümünü seç

procedure TForm1.UserDeleteClick(Sender: TObject); // Delete onay
var
  I: Integer;
  Buton:TListItemGlyphButton;
begin
  for I := 0 to ListView1.Items.Count - 1 do
  begin
      Buton:=ListView.Items[I].Objects.FindDrawable('GlyphButton')
      as TListItemGlyphButton;
      if Buton.Checked then {seçili ise}
      ShowMessage('Listedeki '+i.ToString+'. kayıt seçilidir');
  end;
end;   
İyi çalışmalar...

Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 10:10

Re: Listview daha fazla text alanı oluşturma

Mesaj gönderen Serhat » 05 Haz 2016 01:41

Teşekkür ederim, İyi çalışmalar...

jakarta2
Üye
Mesajlar: 69
Kayıt: 20 Nis 2015 05:51
İletişim:

Re: Listview daha fazla text alanı oluşturma

Mesaj gönderen jakarta2 » 10 Tem 2016 11:28

Designmode ve DynamicAppearance çıkmıyor bu nedenle daha fazla text alanı oluşturamıyorum, görsel olarakta ayarlarını yapamıyorum. Nedeni ne olabilir?

Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 588
Kayıt: 20 Eki 2006 10:37
Konum: Erzurum
İletişim:

Re: Listview daha fazla text alanı oluşturma

Mesaj gönderen fesiharslan » 11 Tem 2016 06:52

Merhaba;
Belirttiğiniz Toggle DesignMode ve DynamicAppearance özellikleri Delphi 10.1 Berlin sürümü ile birlikte gelen yeniliklerdir.

hassur
Üye
Mesajlar: 30
Kayıt: 27 Şub 2015 10:17

Re: Listview daha fazla text alanı oluşturma

Mesaj gönderen hassur » 13 Eki 2016 11:37

çalışma anında listview kayıt eklerken yada ekledikten sonra koşula bağlı olarak ilgili kaydı yada text nesnesini nasıl renklendirebiliriz

mndoza
Üye
Mesajlar: 4
Kayıt: 29 Tem 2010 08:23

Re: Listview daha fazla text alanı oluşturma

Mesaj gönderen mndoza » 13 Eki 2016 03:16

hassur yazdı:çalışma anında listview kayıt eklerken yada ekledikten sonra koşula bağlı olarak ilgili kaydı yada text nesnesini nasıl renklendirebiliriz

bu konuda yardım edebilecek varmı.
liste view i ttextobjectappearance gibi text nesneleri ile tasarladığımız düşünürsek (Text1, Text2, Text3 şeklinde) listview i doldurma esasında if < 5 ten küçükse Text2 Kırmızı Text3 Bold gibi nasıl yaparız. Hatta if xyzdata value su <> 0 gibiyse Text3 visible true yada false olma durumu nasıl yapılır.

Servisten gelen datayı bir prosedür yardımı ile listeye dolduruyorum.
Veri dolarken atamaları alttaki örnek gibi yapıyorum ama dizayn tarafınıda iflerle ne yaptıysam manipule edemedim.

Kod: Tümünü seç

AItem.Data['Text1']  := db_degeri_1;
AItem.Data['Text2']  := 'elle_yazdim';
AItem.Data['Text3']  := db_degeri_2 + ' ' + db_degeri_3;

Visible font gibi durumlar nasıl handle edilir. Bilen varsa yardımcı olabilirmi teşekkürler.

Cevapla