Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Listview içinde arada
#1
Selam, 

Databasedeki verileri listviewe listeliyorum, daha sonra listviewe yeni kayıt veya güncelleme yaptıktan sonra tekrar listviewdeki verileri databaseye kaydediyorum sıkıntısız. 

Fakat databaseye kayıt yapmadan önce listviewdeki kayıtlar içinde arama yapmak istediğimde listviewden dayabaseye kaydetmemişsem, kayıtlar arama sırasında gidiyor bu kayıtların tekrar gelmesini için nasıl bir yol izlemeliyim?

    

   Close;
    SQL.Clear;
    SQL.Add('Select * From URUN');
    SQL.Add('Where URUNADI Like ' + QuotedStr('%' + Ara.Text + '%'));
    Prepared := True;
    Open;
Items.Clear;
    try
      Items.BeginUpdate;
      while Not Eof do
      begin
        List := Items.Add;
        List.Caption := IntToStr(FieldByName('ID').AsInteger);
        List.SubItems.Add(FieldByName('TARIH').AsString);
        List.SubItems.Add(FieldByName('SIRANO').AsString);
        List.SubItems.Add(FieldByName('URUNADI').AsString);
        Next;
      end;
    finally
      Items.EndUpdate;
Cevapla
#2
Merhaba,
Kayıt arama işlemi için sorun bildirmişsiniz, fakat kayıtları ListView'e aktarma kodunuzu paylaşmışsınız.
Sorunun ne olduğunu anlamak için kayıt arama metodunuzu da paylaşabilirseniz, yardımcı olmaya çalışalım.
Cevapla
#3
Ve işte o an
http://www.delphican.com/class-helper-il...iew+helper
WWW
Cevapla
#4
(05-12-2017, Saat: 13:55)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
Kayıt arama işlemi için sorun bildirmişsiniz, fakat kayıtları ListView'e aktarma kodunuzu paylaşmışsınız.
Sorunun ne olduğunu anlamak için kayıt arama metodunuzu da paylaşabilirseniz, yardımcı olmaya çalışalım.

Sanırım yanlış anlaşılma oldu, EditChange aranan bir ürün varsa direk olarak listviewde listeliyorum.
Buraya kadar sorun yok, sorun edit yazılan ürün databasede varsa veya yoksa listvievdeki kayıtlar siliniyor. benim yapmak istediğim şey ise editden çıkıldığı anda databaseye kayıt yapılmamış olsa bile listviewdeki önceki kayıtların eskisi gibi listelenmesini istiyorum. 

Örnek: mobil uygulamalardaki gibi, mobilde listview Search özelliği var bu özelliğin aynısını VCLde yapmak istiyorum.

procedure TForm2.SearchEditChange(Sender: TObject);
begin
  With UQuery, LList do
  begin
Close;
    SQL.Clear;
    SQL.Add('Select * From URUN');
    SQL.Add('Where URUNADI Like ' + QuotedStr('%' + Ara.Text + '%'));
    Prepared := True;
    Open;
Items.Clear;
    try
      Items.BeginUpdate;
      while Not Eof do
      begin
        List := Items.Add;
        List.Caption := IntToStr(FieldByName('ID').AsInteger);
        List.SubItems.Add(FieldByName('TARIH').AsString);
        List.SubItems.Add(FieldByName('SIRANO').AsString);
        List.SubItems.Add(FieldByName('URUNADI').AsString);
        Next;
      end;
    finally
      Items.EndUpdate;
   end;
Cevapla
#5
Yine anlayamadım. Smile
Projenize eklemiş olduğunuz Search mantığını kavrayamadım. 
Mobil Platform yapısındaki Search işlemi Filter ile yapılmıştır. Yani veri tabanından bağımsız bir bileşendir. Buradaki mantığı anlayabilme adına; ListView'i TMemo gibi düşünebilirsiniz.
Yazmış olduğunuz tüm değerler geçici veya lokal bellektedir. Taki siz bu değerleri veri tabanına Post edene kadar. 
Uygulamanızda ListView üzerinde yer alan tüm satır ve sütunları içeren bir Filitreleme algoritması kurarak, yapabilirsiniz. 
Listview üzerindeki herhangi bir değişikliği de belirleyeceğiniz bir anda senkronize edebilirsiniz. 

FMX Search metodu (FMX.SearchBox): 
{ TSearchBoxModel }

procedure TSearchBoxModel.DoChangeTracking;
var
 Lower: string;
begin
 inherited;
 Lower := Text.Trim.ToLower;
 if SearchResponder <> nil then
   SearchResponder.SetFilterPredicate(function (X: string): Boolean
     begin
       Result := True;
       if Assigned(OnFilter) then
         OnFilter(Owner, Text, X, Result)
       else
         Result := Lower.IsEmpty or X.ToLower.Contains(Lower);
     end);
end;

FMX.ListView'de kullanımı da aşağıdaki gibidir.
procedure TListViewBase.SetFilterPredicate(const Predicate: TPredicate<string>);
var
 Filterable: IListViewFilterable;
begin
 if Supports(Adapter, IListViewFilterable, Filterable) then
   Filterable.Filter := Predicate;
end;
Cevapla
#6
Selam;

Aşağıdaki şekilde listviewe ürünleri ekliyorum. Ürünler Listeleniyor hiçbir sıkıntı yok. 
Listview'in SearchVisible  özelliğini True yaptım. Burada arama yapmaya çalışıyorum. Ama Listview'in arama mantığını  anlayamadım. Neye göre arıyor listede? 
%Kelime% şeklinde mi?
Yoksa edit.text='kelime' şeklinde mi?

Saygılarımla;

procedure datayaekle( ListView:TListView);
Procedure ObjectOlustur( AItem:TListViewItem; LItem: TListItemText; strRefKod, strText:String; iOffsetX, iOffsetY, iWidth,iHeight, iFontSize:Integer; iFontColor: LongInt );
begin
   LItem                := TListItemText.Create(AItem);
   LItem.Name           := strRefKod;
   LItem.Font.Size      := iFontSize;
   LItem.TextColor      := iFontColor;
   LItem.Align          := TListItemAlign.Leading; // En Sol
   LItem.VertAlign      := TListItemAlign.Leading; // En Üst
   LItem.PlaceOffset.X  := iOffsetX;
   LItem.PlaceOffset.Y  := iOffsetY;
   LItem.TextAlign      := TTextAlign.Leading;
   LItem.Trimming       := TTextTrimming.ttCharacter;
   LItem.IsDetailText   := False;
   LItem.Width          := iWidth;
   LItem.Height         := iHeight;
   LItem.Text           := strText;
end;
Var
 litem   : TListViewItem;
 LData : Array[1..18] of TListItemText;
 LLabel: Array[1..18] of TListItemText;
begin
   if kod <> '' then
   begin
     litem := ListView.Items.Add;
     litem.Height := 132;
     litem.Text   := '';

     // Başlıklar
     // -----------------------------------------------------------------------------
       ObjectOlustur( LItem, LLabel[1], 'Bas1', 'Urun Kodu: ', 4, 10, 500, 20, 10, TAlphaColorRec.Maroon );
       ObjectOlustur( LItem, LLabel[2], 'Bas2', 'Urun Adı :',  4, 20, 500, 20, 10, TAlphaColorRec.Maroon );
       ObjectOlustur( LItem, LLabel[3], 'Bas3', 'Alt Yazı : ', 4, 30, 500, 20, 10, TAlphaColorRec.Maroon );
       ObjectOlustur( LItem, LLabel[4], 'Bas4', 'Fiyatı   : ', 4, 40, 500, 20, 10, TAlphaColorRec.Maroon );
       ObjectOlustur( LItem, LLabel[5], 'Bas5', 'S.Durumu : ', 4, 50, 500, 20, 10, TAlphaColorRec.Maroon );
       ObjectOlustur( LItem, LLabel[6], 'Bas6', 'Onay     : ', 4, 60, 500, 20, 10, TAlphaColorRec.Maroon );
       ObjectOlustur( LItem, LLabel[7], 'Bas7', 'Döviz F. : ', 4, 70, 500, 20, 10, TAlphaColorRec.Maroon );
       ObjectOlustur( LItem, LLabel[8], 'Bas8', 'Para B.  : ', 4, 80, 500, 20, 10, TAlphaColorRec.Maroon );
       ObjectOlustur( LItem, LLabel[9], 'Bas9', 'Gör Fiy  : ', 4, 90, 500, 20, 10, TAlphaColorRec.Maroon );

     // Veri Alanları
     // -----------------------------------------------------------------------------
       ObjectOlustur( LItem, LData[1], 'Data1', kod,       53,  10, 150, 20, 10, TAlphaColorRec.Black );
       ObjectOlustur( LItem, LData[2], 'Data2', title,     53,  20, 150, 20, 10, TAlphaColorRec.Black );
       ObjectOlustur( LItem, LData[3], 'Data3', subtitle,  53,  30, 150, 20, 10, TAlphaColorRec.Black );
       ObjectOlustur( LItem, LData[4], 'Data4', price,     53,  40, 150, 20, 10, TAlphaColorRec.Black );
       ObjectOlustur( LItem, LData[5], 'Data5', status,    53,  50, 150, 20, 10, TAlphaColorRec.Black );
       ObjectOlustur( LItem, LData[6], 'Data6', approval,  53,  60, 150, 20, 10, TAlphaColorRec.Black );
       ObjectOlustur( LItem, LData[7], 'Data7', curamount,  53,  70, 150, 20, 10, TAlphaColorRec.Black );
       ObjectOlustur( LItem, LData[8], 'Data8', curtype,    53,  80, 150, 20, 10, TAlphaColorRec.Black );
       ObjectOlustur( LItem, LData[7], 'Data7', displayprice,  53,  90, 150, 20, 10, TAlphaColorRec.Black );
    end;
end;
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Ana Form içinde açılır kapanır form akuyumcu63 3 479 20-01-2021, Saat: 11:35
Son Yorum: mrmarman
  Form içinde Generics Sınıfı Nasıl Kullanırım 3ddark 3 1.105 21-08-2020, Saat: 15:12
Son Yorum: ismailkocacan
  Uygulama içinde FB DB bakımı mcuyan 3 930 14-08-2020, Saat: 20:11
Son Yorum: mcuyan
  Firebird - İçinde veri olan bir alanın tipini değiştirme habikus 3 1.342 07-06-2020, Saat: 23:32
Son Yorum: habikus
  Harf ve sayıları içinde farklı karakterleri ayıklama BGNew 7 2.645 23-12-2019, Saat: 23:48
Son Yorum: enigma



Konuyu Okuyanlar: 1 Ziyaretçi