Merhabalar,
Fatura Programında Dbgrid üzerinde Fatura maddelerinin StokaAdı alanını DBLookupComboBox1 kullanarak Stok Kartı dosyasından çekiyorum. Fakat DBLookupComboBox1 readonly gibi çalışıyor. Yani metin kutusu kısmına yazı yazarak yazdığım karakter sayısı kadar olan alanların gelmesini istiyorum. Yani ENGİNAR arayacaksam, E harfine basınca ELMA, N harfine basınca NAR geliyor.
Bu işlemi cxGridde otomatik yapıyordum ama ben istiyorum ki Delphinin standart compenentleri ile yapmak. Varmıdır acaba çözümü.
İyi geceler.
DBLookupComboBox da Arama yapmak
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: DBLookupComboBox da Arama yapmak
Merhaba,
Bildiğim kadarıyla Delphi standart bileşenleri ile bunu yapmak mümkün değil. Ancak, alternatif bir yönetm olarak;
- Edit alanı
- Yanında bir buton
- Buton tıklandığı zaman filtrelenmiş kayıtları gösteren bir form
şeklinde istediğinizi elde etmeniz mümkün olabilir.
Bildiğim kadarıyla Delphi standart bileşenleri ile bunu yapmak mümkün değil. Ancak, alternatif bir yönetm olarak;
- Edit alanı
- Yanında bir buton
- Buton tıklandığı zaman filtrelenmiş kayıtları gösteren bir form
şeklinde istediğinizi elde etmeniz mümkün olabilir.
Re: DBLookupComboBox da Arama yapmak
Merhaba, zamanında combobox içerisinde yazmaya başladığım herhangi bir kelimeyi veritabanının belli bir alanında arama yapamak için kullandığım bir kodu paylaşmak isterim. Aşağıdaki kodun çalış hali ekli dosyada. http://s3.dosya.tc/server11/tfljfu/COMB ... K.rar.html
İşinizi görür mü bilmiyorum denersiniz..
İşinizi görür mü bilmiyorum denersiniz..
Kod: Tümünü seç
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
ComboBox1: TComboBox;
DBGrid1: TDBGrid;
Table1: TTable;
DataSource1: TDataSource;
Table1Kodu: TAutoIncField;
Table1Ozelkod1: TStringField;
Button1: TButton;
Button2: TButton;
function EXEKLASOR: string;
procedure COMBO_ARA(DATA, ALAN, ARANAN: STRING; BULUNACAK_ALANLAR: array of STRING; DOLDURULACAK_NESNELER: array of TObject);
procedure COMBO_DOLDUR(DATA, ALAN, SECILEN_KAYIT: STRING; ISLEM_GOREN_COMBO: TObject);
procedure Button1Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.EXEKLASOR: string;
begin
Result := ExtractFilePath(Application.ExeName);
if Result[Length(Result)] <> '\' then
Result := Result + '\';
end;
procedure TForm1.COMBO_DOLDUR(DATA, ALAN, SECILEN_KAYIT:STRING; ISLEM_GOREN_COMBO:TObject);
VAR
X:INTEGER;
Sorgu:TQuery;
begin
Sorgu:=TQuery.Create(Self);
Sorgu.DatabaseName:=Form1.EXEKLASOR+'DATA';
WITH SORGU DO BEGIN
SQL.Clear;
SQL.Add('Select '+ALAN+' FROM '+DATA);
SQL.Add('ORDER BY '+ALAN);
OPEN;
FieldDefs.Update;
END;
(ISLEM_GOREN_COMBO AS TComboBox).Items.Clear;
FOR X:=0 TO Sorgu.RecordCount-1 DO BEGIN
(ISLEM_GOREN_COMBO AS TComboBox).Items.Add(Sorgu.FieldByName(ALAN).AsString);
IF SECILEN_KAYIT=Sorgu.FieldByName(ALAN).AsString THEN (ISLEM_GOREN_COMBO AS TComboBox).ItemIndex:=X;
Sorgu.Next;
END;
Sorgu.Close;
Sorgu.Free;
end;
procedure TForm1.COMBO_ARA(DATA, ALAN, ARANAN:STRING; BULUNACAK_ALANLAR :ARRAY OF STRING ; DOLDURULACAK_NESNELER :ARRAY OF TObject);
VAR
X:INTEGER;
Sorgu:TQuery;
SEL:STRING;
begin
IF LENGTH(BULUNACAK_ALANLAR)>0 THEN BEGIN //1NCİ İF
Sorgu:=TQuery.Create(Self);
Sorgu.DatabaseName:=EXEKLASOR+'DATA';
WITH SORGU DO BEGIN //WHİTH
SQL.Clear;
SEL:='Select ';
FOR X:=0 TO LENGTH(BULUNACAK_ALANLAR)-1 DO BEGIN //1NCİ FOR
SEL:=SEL + BULUNACAK_ALANLAR[X];
IF X< LENGTH(BULUNACAK_ALANLAR)-1 THEN SEL :=SEL + ',';
END; ///1NCİ FOR ENDİ
SQL.Add(SEL+' FROM '+DATA);
SQL.Add('Where '+ALAN+' = '+QuotedStr(ARANAN));
OPEN;
FieldDefs.Update;
END;//WHİTE ENDİ
IF ARANAN = Table1Ozelkod1.AsString THEN BEGIN /////BURADA EĞER DATADA ARANAN VARSA DOLDUR DİYORUM YOKSA KALDI YERDEN DEVAM
FOR X:=0 TO LENGTH(BULUNACAK_ALANLAR)-1 DO BEGIN //İKİNCİ FOR
IF DOLDURULACAK_NESNELER[X].ClassName='TComboBox' then begin ///IKINCI IF
if Sorgu.FieldByName(BULUNACAK_ALANLAR[x]).DataType=ftString then (DOLDURULACAK_NESNELER[X] as TComboBox).Text:=Sorgu.FieldByName(BULUNACAK_ALANLAR[x]).AsString;
if Sorgu.FieldByName(BULUNACAK_ALANLAR[x]).DataType=ftInteger then (DOLDURULACAK_NESNELER[X] as TComboBox).ItemIndex:=Sorgu.FieldByName(BULUNACAK_ALANLAR[x]).AsInteger;
END; ///IKINCI IF ENDİ
END; ///IKINCI FOR ENDİ
END;
Sorgu.Close;
Sorgu.Free;
END; //1NCİ İF ENDİ
END; //ANA END;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Table1.Locate('Ozelkod1',Form1.ComboBox1.Text,[loCaseInsensitive]);
if Form1.Table1Ozelkod1.AsString<>Form1.ComboBox1.Text then begin
Table1.Append;
Table1Ozelkod1.AsString:=ComboBox1.Text;
Table1.Refresh;
end else ShowMessage('bu kayıt daha önce girilmiş');
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
COMBO_ARA('ornek','Ozelkod1',ComboBox1.Text,['Ozelkod1'],[ComboBox1]);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Table1.DatabaseName:=EXEKLASOR+'DATA';
Table1.Active:=TRUE;
COMBO_DOLDUR('ornek','Ozelkod1','',Form1.ComboBox1);
end;
end.
- adelphiforumz
- Üye
- Mesajlar: 602
- Kayıt: 01 Nis 2008 05:38
- Konum: İstanbul
Re: DBLookupComboBox da Arama yapmak
Bildiğim kadarı ile bunun için özel bişey yapmanıza gerek yok
tek yapmanız gereken combobox içerisine gelen veriyi sql cümlesinde order by ile getirmek
ve combobox üzerine tıkladıktan sonra 1 saniyeden daha kısa aralıklarda yeni bir harfe basarak aradığın şeyi yazmak
eğer 1 saniyeden fazla beklersen sonrasındaki ilk bastığın karaktere göre yeniden arama başlar
tek yapmanız gereken combobox içerisine gelen veriyi sql cümlesinde order by ile getirmek
ve combobox üzerine tıkladıktan sonra 1 saniyeden daha kısa aralıklarda yeni bir harfe basarak aradığın şeyi yazmak
eğer 1 saniyeden fazla beklersen sonrasındaki ilk bastığın karaktere göre yeniden arama başlar
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana