dbgrid ile ilgili

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
secret_boy
Üye
Mesajlar: 151
Kayıt: 17 Kas 2005 04:46

dbgrid ile ilgili

Mesaj gönderen secret_boy »

merhaba arkadaslar öncelikle herkese iyi calısmalar diliyorum.programımda dbgrid kullandım arama yaptırıyorum ama verilerin hepsi buyuk girildi. küçük yazdıgımız zaman arama bi işe yaramıyor.bunu nasıl halledebilirim.özellikle büyük (İ) harfi problem oluyor.

denedigim yollar:

1)- Editin charcase özelligini ecUppercase yaptım ama büyük (İ) harfini (I) olarak gördüğü için problem oluyor.

2)- asagıdaki kodu kullandım ama yine i harfi (İ) oldugu için problem oldu

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
table1.FilterOptions:=[foCaseInsensitive];
Table1.Filter:='DOSYANO='+edit1.text; 
Table1.Filtered:=true; 
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
table1.FilterOptions:=[foCaseInsensitive]; 
Table1.Filter:='Adi='+QuotedStr(edit1.text+'*');
Table1.Filtered:=true; 
end;
3)- aşagıdaki kodu kullandım bu defada caps lock u actıgım zaman küçük yazıyor.

Kod: Tümünü seç

procedure TMyForm.Button1Click(Sender: TObject);
Var
  KeyState : TKeyboardState;
begin
  GetKeyboardState(KeyState);
  if (KeyState[VK_CAPITAL] = 0) then
      KeyState[VK_CAPITAL] := 1
  else
      KeyState[VK_CAPITAL] := 0;
  SetKeyboardState(KeyState);
end;
bunu nasıl halledebilirim. yardımlarınız için tesekkurler herkese iyi calısmalar.
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

s.a

Kod: Tümünü seç


ara := anamenu.s_karti.Locate('S_kodu', RzDBgrid1.Fields[1].text, [locaseinsensitive]);
böyle bir kullanım demermsin
secret_boy
Üye
Mesajlar: 151
Kayıt: 17 Kas 2005 04:46

Mesaj gönderen secret_boy »

ilgin için tesekkurler ama olmadı .yinede tesekkur ederim
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
formun key presinde küçük i harfine basılmışsa onu büyük İ harfine çevir. aynı şey ı harfi içinde geçerli.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
secret_boy
Üye
Mesajlar: 151
Kayıt: 17 Kas 2005 04:46

Mesaj gönderen secret_boy »

aslangeri yazdı:s.a.
formun key presinde küçük i harfine basılmışsa onu büyük İ harfine çevir. aynı şey ı harfi içinde geçerli.
kolay gelsin.
tamam ama onu nasıl yapacam :(
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Mesaj gönderen akdatilla »

merhaba.
Senin istediğin gibi birşey yapmaya çalıştım. Ancak tam olarak yapamadım.
İstersen aşağıdaki tekniği bir dene. Üzerinde biraz daha çalışırsan daha iyi olabilir.
Gerçi çok uzun bir kod. Ama işine yarayabilir.

function ASCUpperCase(str:string):string;
Var
s:String;
j,k:integer;
b:byte;
ftrk:boolean;
const
htrkchars=6;
trklochars:Array[0..htrkchars] of char=('ğ','ü','ş','i','ı','ö','ç');
trkhichars:Array[0..htrkchars] of char=('Ğ','Ü','Ş','İ','I','Ö','Ç');
Begin
s:=str;
for j:=1 to length(str) do
begin
ftrk:=false;
for k:=0 to htrkchars do
if str[j]=trklochars[k] then
Begin
s[j]:=trkhichars[k];
ftrk:=true;
break;
end;
if not ftrk and (s[j] in ['a'..'z']) then s[j]:=chr(ord(str[j]) and $5F);
end;
result:=s;
end;

function ASCLowerCase(str:string):string;
Var
s:String;
j,k:integer;
b:byte;
ftrk:boolean;
const
htrkchars=6;
trklochars:Array[0..htrkchars] of char=('ğ','ü','ş','i','ı','ö','ç');
trkhichars:Array[0..htrkchars] of char=('Ğ','Ü','Ş','İ','I','Ö','Ç');
Begin
s:=str;
for j:=1 to length(str) do
begin
ftrk:=false;
for k:=0 to htrkchars do
if str[j]=trkhichars[k] then
Begin
s[j]:=trklochars[k];
ftrk:=true;
break;
end;
if not ftrk and (s[j] in ['A'..'Z']) then s[j]:=chr(ord(str[j]) or $20);
end;
result:=s;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
s:String;
begin
s:='(ADI>='#39+ASCUpperCase(Edit1.Text)+#39+
' AND ADI<='#39+Edit1.Text+'ş'#39+') OR ('+
'ADI>='#39+ASCLowerCase(Edit1.Text)+#39+
' AND ADI<='#39+ASCLowerCase(Edit1.Text)+'ş'#39+')';
Table1.Filtered:=false;
Table1.Filter:=s;
if Edit1.Text<>'' then
Table1.Filtered:=true;
end;
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Mesaj gönderen Lost Soul »

Karakteri türkçe yapan fonksiyon

Kod: Tümünü seç

function ChEng (ch : char) : char;
begin

if (ch = 'Ğ') or (ch = 'ğ') then begin result:='G';exit;end;
if (ch = 'Ü') or (ch = 'ü') then begin result:='U';exit;end;
if (ch = 'Ş') or (ch = 'ş') then begin result:='S';exit;end;
if (ch = 'İ') or (ch = 'ı') then begin result:='I';exit;end;
if (ch = 'Ö') or (ch = 'ö') then begin result:='O';exit;end;
if (ch = 'Ç') or (ch = 'ç') then begin result:='C';exit;end;
if (ch = 'i') then begin result:='I';exit;end;
result:=ch;
end;
array ile de yapılırdı da uğraaşamadım şimdi :D bu çok eskiden yaptığım bi programdan kalma


Kulllanımı :
eğer sadece bi alanda türkçe karakter istemiyorsanız o nesnenin keypress olayına eğr heryerde olmasını istiyorsanız
Formun kyepreview özeliğini true yapıp formkeypress olayına

Kod: Tümünü seç


procedure TMAIN.FormKeyPress(Sender: TObject; var Key: Char);
begin
key:=cheng(key);
end;

bu fonksionu büyük harf kipi kullanan bir program için yapmıştım eğer küçük harf de olmasını istiyorsan fonksiyonu biraz değiştirmeniz gerekecek.
kolay gelsin
Cevapla