DBGrid ile Parasal alanlara Giriş Esnasında basamaklı girme
husonet05.02.2004 - 04:15:45
Merhaba en sonunda başardım ve sizlerle paylaşmak istedim Delphi'nin Hiyerarşisi mükemmelsin :lol:

DBGrid 0.nci Columns’unda rakam girerken basamaklı girişe izin verir. Alan tipini String olarak tanımlamayı unutmayın. Tabii uğraşırsanız Float tipi veya Currency tipi ile de tanımlayabilirsiniz. Lafı uzatmadan kodu yazıyorum.


Fonksiyonumuz.

function Isle(str: string): Real;
var
x: Integer;
begin
for x := length(str) downto 1 do
if str[x] in ['.',','] then
delete(str, x, 1);
if trim(str) <> '' then
result := StrToFloat(str)
else
result := 0;
end;


DBGrid OnEnter Eventine

procedure TForm1.DBGrid1Enter(Sender: TObject);
begin
if DBGrid1.SelectedIndex = 0 Then
DBGrid1.Columns[0].field.FocusControl;
end;


Ve son olarak geri kalanı DBGrid KeyPress olayı.

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if DBGrid1.SelectedIndex = 0 Then
Begin
Case Key of
'0'..'9':
begin
TInplaceEdit(DBGrid1.Controls[0]).Text := FormatFloat('#,###', Isle(TInplaceEdit(DBGrid1.Controls[0]).Text + Key));
TInplaceEdit(DBGrid1.Controls[0]).SelStart := length(TInplaceEdit(DBGrid1.Controls[0]).Text);
Key := chr(0);
end;
chr(VK_BACK):
begin
if trim(TInplaceEdit(DBGrid1.Controls[0]).Text) <> '' then begin
TInplaceEdit(DBGrid1.Controls[0]).Text := FormatCurr('###,###,###', Isle(copy(TInplaceEdit(DBGrid1.Controls[0]).Text, 1, length(TInplaceEdit(DBGrid1.Controls[0]).Text) - 1)));
TInplaceEdit(DBGrid1.Controls[0]).SelStart := length(TInplaceEdit(DBGrid1.Controls[0]).Text);
Key := chr(0);
end;
end;
chr(VK_RETURN):
Begin
if TInplaceEdit(DBGrid1.Controls[0]).Text <> '' Then
Begin
AdoDataSet1.Edit;
AdoDataSet1.FieldByName('Adet').AsString := TInplaceEdit(DBGrid1.Controls[0]).Text;
// DBGrid1.Fields[0].Text := TInplaceEdit(DBGrid1.Controls[0]).Text;
AdoDataSet1.Post;
TInplaceEdit(DBGrid1.Controls[0]).Text := '';
End;
End
Else
Key := chr(0);
end;
End;
end;


Arkadaşlar Geliştirdikce buraya yazacağım bu arada komponentini yazmaya düşünüyorum.

QuantumHusoGrid olacak. :lol:

Görüşlerinizi ve Eleştirilerinizi yazmayı unutmayın lütfen.
 
husonet05.02.2004 - 13:55:05
5 Şubat 2003 Açılırken Enter Tuşuna basıldığı zaman hata alınıyordu Bug Giderildi.
5 Şubat 2003 Isle fonksiyonu Güncellendi.
5 Şubat 2003 KeyPress Eventi Güncellendi.
 
mussimsek05.02.2004 - 14:06:52
Teşekkürler Hüseyin hocam,

bence düzeltmeleri Edit butonu ile ilk mesajında yaparsan daha iyi olur. Böylelikle yanlışlıkla hatalı kod kullanılmamış olur.

Düzeltmeleri mesaj ekleme şeklinde yazarsın. Güncelleme tarihini de mesaj başlığına yazarsan, yeniliği herkes farkeder.

Kolay gelsin.
 
husonet05.02.2004 - 14:17:11
Hocam beni yönlendirdiğiniz için teşekkür ediyorum düzenlemeleri yapıyorum.

İyi Çalışmalar.
 
NOT : Bu sayfa google'un siteyi indekslemesi içindir. www.delphiturkiye.com/forum/ adresini kullanınız!
1998-2006 www.delphiturkiye.com