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