UPPERCASE DELPHI VE FIREBIRD

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
savasgti
Üye
Mesajlar: 103
Kayıt: 07 Eki 2008 06:13

UPPERCASE DELPHI VE FIREBIRD

Mesaj gönderen savasgti »

Herkese iyi geceler. Veri tabanında vachar tipindeki field charset = win1254 collate = pxw_turk olan bi field ım var. Bu field a bağlı cxdbtextedit var. editin charcase i ise ecUpperCase veri girilirken capslock kapalı ise ı harfine bastığımda küçük ı yazıyor i harfine bastığımda ise büyük I yazıyor. bu sorunu nasıl çözebilirim şimdididen teşekkürler.
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Re: UPPERCASE DELPHI VE FIREBIRD

Mesaj gönderen akdatilla »

merhaba
örnek olarak bir edit kutusunun on keypress olayı aşağıdaki gibi yapılınca "ı" harfine basıldığında "I" şekliinde kutuya yazılıyor.

Kod: Tümünü seç

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
     if Key='ı' then Key:='I';

end;
savasgti
Üye
Mesajlar: 103
Kayıt: 07 Eki 2008 06:13

Re: UPPERCASE DELPHI VE FIREBIRD

Mesaj gönderen savasgti »

akdatilla üstat cevabınız için çoook teşekkür ederim fakat bunu bi çoook forma uygulamak gerekiyor daha etkin bi çözüm yolu bulursam daha iyi olcak. mesela program başlat başlamaz capslock ı kodla açmayı düşündüm fakat oda tam çözüm değil bence.
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: UPPERCASE DELPHI VE FIREBIRD

Mesaj gönderen csunguray »

akdatilla yazdı:merhaba
örnek olarak bir edit kutusunun on keypress olayı aşağıdaki gibi yapılınca "ı" harfine basıldığında "I" şekliinde kutuya yazılıyor.

Kod: Tümünü seç

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
     if Key='ı' then Key:='I';

end;
Bir programcı olarak sorunu maskelemek yerine sorunun kaynağını merak etmiyor musunuz?
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
savasgti
Üye
Mesajlar: 103
Kayıt: 07 Eki 2008 06:13

Re: UPPERCASE DELPHI VE FIREBIRD

Mesaj gönderen savasgti »

tabiki sorunun kaynağına inmek istiyorum o nedenle

Kod: Tümünü seç

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
     if Key='ı' then Key:='I';

end;
kodunu uygun bulmuyorum. Tamam buda bi çözüm yolu uzun da olsa ama dediğiniz gibi sorunun asıl nedeni ve asıl çözüm yolunu arıyorum.
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: UPPERCASE DELPHI VE FIREBIRD

Mesaj gönderen esistem »

Merhaba bu sorun bende de vardı bende şöyle bir çözüm üretmiştim.

Kod: Tümünü seç

procedure SetVKeyState(vkey: Byte; down: Boolean);
// This is a routine to help doing a key change
var
  keys: TKeyboardState;

begin
  GetKeyboardState(keys);
  if Down then
    keys[vkey] := keys[vkey] or $80
  else
    keys[vkey] := keys[vkey] and $7F;
  SetKeyboardState(keys);
end;
ana forma bir ApplicationEvents nesnesi koyup, OnMessage olayına

Kod: Tümünü seç

 if (Msg.message =WM_KEYDOWN) then begin
SetvKeyState(VK_CAPITAL, (Msg.Message = WM_KEYDOWN));
                                   end;
yazmanız yeterli oluyor, tabi bu tüm projede basılan key leri upper olarak veriyor.
yalnız capslock tuşuna hızlıca 2 kez basıp aç/kapa yaparsanız kod yanlış çalışır dikkat etmek lazım.
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Re: UPPERCASE DELPHI VE FIREBIRD

Mesaj gönderen akdatilla »

csunguray yazdı:
akdatilla yazdı:merhaba
örnek olarak bir edit kutusunun on keypress olayı aşağıdaki gibi yapılınca "ı" harfine basıldığında "I" şekliinde kutuya yazılıyor.

Kod: Tümünü seç

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
     if Key='ı' then Key:='I';

end;
Bir programcı olarak sorunu maskelemek yerine sorunun kaynağını merak etmiyor musunuz?
Aslında sorunun kaynağı benim için dert değil, sadece basit bir çözüm yolu göstermek istedim. Vermiş olduğum örnek kullanılarak edit bileşenine biraz çalışma ile monte edilebilir.
Ancak bunu anlatmayı o kadar kolay bulmuyorum, fazla vaktim de yok.
savasgti
Üye
Mesajlar: 103
Kayıt: 07 Eki 2008 06:13

Re: UPPERCASE DELPHI VE FIREBIRD

Mesaj gönderen savasgti »

abiler yokmu bi çözüm yolu.
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Re: UPPERCASE DELPHI VE FIREBIRD

Mesaj gönderen akdatilla »

merhaba
cxTextEdit.pas dosyasında DoEditKeyPress prosedürü var.
o prosedürün içerisinde

Kod: Tümünü seç

inherited DoEditKeyPress(Key);
satırının altına

Kod: Tümünü seç

  if Properties.CharCase=ecUpperCase then
  begin
        if Key='ı' then Key:='I';
  end;
şeklinde kodları yerleştirirsen sorunun çözülür sanıyorum.
Cevapla