DonanımHaber Mini sürüm 2 Ocak 2026 tarihi itibariyle kullanımdan kalkacaktır. Bunun yerine daha hızlı bir deneyim için DH Android veya DH iOS uygulamalarını kullanabilirsiniz.
Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
5
Cevap
2562
Tıklama
0
Öne Çıkarma
Delphi 7 ile Filtreleme örneği...
G
12 yıl (874 mesaj)
Yüzbaşı
Konu Sahibi

Videoyu izlemek için tıklayınız

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.

< Resime gitmek için tıklayın >




Ü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 >

E
11 yıl (57 mesaj)
Çavuş

Videodaki program oldukça iyiymiş. Onun kodu var mı?



C
11 yıl (4351 mesaj)
Yarbay

Videodaki programın kodları elinizde var mı? İncelemek istiyorum.




Bu mesajda bahsedilenler: @Abincomartinez
C
11 yıl (6308 mesaj)
Yarbay

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.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Abincomartinez
G
11 yıl (874 mesaj)
Yüzbaşı
Konu Sahibi

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.



1
8 yıl (23 mesaj)
Onbaşı

Mesajım bulunsun



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.