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
Sad Tabsheet içinde Form Create, Close olayları YILDIRIMBEY 0 249 24-08-2023, Saat: 17:26
Son Yorum: YILDIRIMBEY
  Thread içinde CoInitialize(nil) ve CoUninitialize serdar 6 1.067 22-08-2023, Saat: 09:50
Son Yorum: yhackup
  RESTRequest Nesnesinde Body içinde JSON Gönderme Hk. pro_imaj 2 595 04-06-2023, Saat: 00:47
Son Yorum: pro_imaj
  Delphi 'de exe içinde ki database ip tespit etme delphiX14 6 1.988 29-08-2022, Saat: 13:09
Son Yorum: tuna
  Sipariş sistemi içinde kullanılacak küçük bir tavsiye Bay_Y 3 1.085 08-10-2021, Saat: 09:41
Son Yorum: Bay_Y



Konuyu Okuyanlar: 1 Ziyaretçi