Şimdi Ara

Delphi 7 ile Filtreleme örneği...

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
2.562
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
Öne Çıkar
0 oy
Sayfa: 1
Giriş
Mesaj


  • ADODataset kullanarak yaptığım bir programdan çoklu filtreleme örneği. Örnekteki filtreleme kodu Delphi 2 veya 3 versiyonundaki bir demo programından alınma. Demo programın adı Stock Control veya ona benzeyen bir şey idi. Bu programı 2003 te henüz emekli olmadan BDE bileşenler ile yapmıştım. Şimdi ADO bileşenler ile bir iki ilave ile yeniden yaptım.

     Delphi 7 ile Filtreleme örneği...




    Üstteki videodaki filtrelemeye daha basit bir projedeki örnek ve kodu... Bu formda iki alanda filtreleme var ama gerekli kodu kopyalayarak dilediğiniz kadar alanda filtreleme yaptırabilirsiniz.
    Burada Delphi 7 nin BDE bileşenlerini kullanmışım(2004)

    unit Unit7;

    interface

    uses
    Windows, Messages, Classes, SysUtils, Graphics, Controls, StdCtrls, Forms,
    Dialogs, DBCtrls, DB, ComCtrls, Mask, DBTables, ExtCtrls, Grids, DBGrids,
    ShellApi, Variants, HTTPApp, ActnList, ExtActns, WebDisp, OleCtnrs,
    Buttons, ImgList;

    type
    TfmIntAra = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Label2: TLabel;
    Label1: TLabel;
    EditURLadresi: TDBEdit;
    EditSiteadi: TDBEdit;
    StatusBar1: TStatusBar;
    Label3: TLabel;
    Button1: TButton;
    Edit1: TEdit;
    DataSource: TDataSource;
    GridQuery: TQuery;
    TempQuery: TQuery;
    DropAna: TComboBox;
    DropAlt: TComboBox;
    Label4: TLabel;
    Label5: TLabel;
    BitBtn1: TBitBtn;
    DBNavigator1: TDBNavigator;
    Panel3: TPanel;
    DBGrid1: TDBGrid;
    procedure Button1Click(Sender: TObject);
    procedure DropClick(Sender: TObject);
    procedure EditURLadresiClick(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    private
    procedure PopulateCombos;
    procedure UpdateGridQuery;
    { private declarations }
    public
    procedure ShowBrowser;
    { public declarations }
    end;

    var
    fmIntAra: TfmIntAra;

    implementation

    uses Unit1;

    {$R *.DFM}

    const
    AllStr = 'Hepsi';
    FldAna = 'Siteturu';
    FldAlt = 'Alttur';
    procedure TfmIntAra.PopulateCombos;

    procedure PopulateAnaCombo;
    begin
    DropAna.Items.Clear;
    DropAna.Items.Add(AllStr);
    try
    TempQuery.Close;
    TempQuery.SQL.Clear;
    TempQuery.SQL.Add('Select distinct Siteturu from DBIntAdr');
    TempQuery.Open;
    while not TempQuery.EOF do
    begin
    DropAna.Items.Add(TempQuery.Fields[0].AsString);
    TempQuery.Next;
    end;
    DropAna.ItemIndex := 0;
    except
    on EDatabaseError do
    MessageDlg('Error determining Siteturu categories', mtError, [mbOK], 0);
    end;
    end;

    procedure PopulateAltCombo;
    begin
    DropAlt.Items.Clear;
    DropAlt.Items.Add(AllStr);
    try
    TempQuery.Close;
    TempQuery.SQL.Clear;
    TempQuery.SQL.Add('Select distinct Alttur from DBIntAdr');
    TempQuery.Open;
    while not TempQuery.EOF do
    begin
    DropAlt.Items.Add(TempQuery.Fields[0].AsString);
    TempQuery.Next;
    end;
    DropAlt.ItemIndex := 0;
    except
    on EDatabaseError do
    MessageDlg('Error determining Altcat categories', mtError, [mbOK], 0);
    end;
    end;
    begin
    TempQuery.Close;
    TempQuery.DatabaseName := 'DBIntrehber';
    PopulateAnaCombo;
    PopulateAltCombo;
    end;

    procedure TfmIntAra.UpdateGridQuery;
    var
    WhereUsed: Boolean;
    function SQLPrefix:string;
    begin
    if WhereUsed then
    SQLPrefix := 'and '
    else
    begin
    WhereUsed := true;
    SQLPrefix := 'where '
    end;
    end;
    begin
    Screen.Cursor := crHourGlass;
    WhereUsed := false;
    with GridQuery do
    begin
    Close;
    SQL.Clear;
    SQL.Add('select * from DBIntAdr');
    if DropAna.ItemIndex > 0 then
    SQL.Add(SQLPrefix+FldAna+' ="'+DropAna.Items[DropAna.ItemIndex]+'"');
    TempQuery.Open;
    if DropAlt.ItemIndex > 0 then
    SQL.Add(SQLPrefix+FldAlt+' ="'+DropAlt.Items[DropAlt.ItemIndex]+'"');
    SQL.Add('order by URLAdresi');
    Open;
    end;
    Screen.Cursor := crDefault;
    end;

    procedure TfmIntAra.ShowBrowser;
    begin
    if not Visible then
    begin
    PopulateCombos;
    UpdateGridQuery;
    end;
    Show;
    end;

    procedure TfmIntAra.DropClick(Sender: TObject);
    begin
    UpdateGridQuery;
    StatusBar1.Panels[1].Text:=Format(' %d Kayıt bulundu...',
    [GridQuery.RecordCount]);
    end;

    procedure TfmIntAra.Button1Click(Sender: TObject);
    begin
    if not GridQuery.Locate('Siteadi',Edit1.Text,[loPartialKey,loCaseInsensitive])
    then
    Application.MessageBox('Aradığınız Siteye Ait Kayıt Bulunamadı...',
    'Internet Sitesi Kayıt Arama',mb_OK);
    end;

    procedure TfmIntAra.EditURLadresiClick(Sender: TObject);
    Var St:Array[0..255] of char;
    begin
    ShellExecute(0,'open',StrPCopy(St,EditURLadresi.Text),nil
    ,nil,SW_NORMAL);
    end;

    procedure TfmIntAra.DBGrid1DblClick(Sender: TObject);
    Var St:Array[0..255] of char;
    begin
    ShellExecute(0,'open',StrPCopy(St,EditURLadresi.Text),nil
    ,nil,SW_NORMAL);
    end;

    procedure TfmIntAra.BitBtn1Click(Sender: TObject);
    begin
    Form1.btPrivate.Visible:=False;
    edit1.Text:='';
    close;
    end;

    end.



    < Bu mesaj bu kişi tarafından değiştirildi Guest-9A5184EA8 -- 9 Ocak 2014; 15:57:11 >



    _____________________________




  • Videodaki program oldukça iyiymiş. Onun kodu var mı?
    _____________________________
  • Videodaki programın kodları elinizde var mı? İncelemek istiyorum.
    _____________________________
    İkinci ele param yetmedi, sıfırını aldım.
  • Bu Filtreleme değil. her seçenekte tekrar tekrar sorgu çalıştırılıyor. "Query.Filter()" kullanman gerekirdi. Filter metodu kullandığın zaman her seferinde SQL den veri çekmez. Çekilmiş veri üzerinde Filtre uygular. böylece çok daha hızlı çalışır.
    _____________________________
    Doğruluğu kanıtlanana kadar, sanal_dünyadaki her haber kasıtlı söylenmiş_bir_yalandır
  • Uzun zaman oldu foruma girmeyeli. Bazı arkadaşlar kalıp takip programının kodunu istemişler.
    ne yazık ki o kodlar şimdi bende de yok. O kodu delphi 7 de yazmıştım. 2003 veya 2004 tü sanırım. Sonra 2014 te biraz uğraşıp yeni versiyon yapayım diye düşündüm.
    Delphi XE5 te düzenlerken kod bazı bileşenler çalışmadı başkalarını eklerken kodu bozdum. Sonra tekrar Delphi 7 de derlemek isteyince çalışmadı.
    Ama internet adresi filtrlemenin kodu işinize yarayabilir. filtrelemeyi o programın kodunda da görebilirsiniz.
    Saygılarımla.
    _____________________________
  • Mesajım bulunsun
    _____________________________
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.