DBGrid ile Parasal alanlara Giriş Esnasında basamaklı girme

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

DBGrid ile Parasal alanlara Giriş Esnasında basamaklı girme

Mesaj gönderen husonet »

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.

Kod: Tümünü seç

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

Kod: Tümünü seç

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ı.

Kod: Tümünü seç

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.
En son husonet tarafından 05 Şub 2004 08:36 tarihinde düzenlendi, toplamda 2 kere düzenlendi.

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

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.
En son husonet tarafından 05 Şub 2004 02:22 tarihinde düzenlendi, toplamda 1 kere düzenlendi.

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7586
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

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.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Hocam beni yönlendirdiğiniz için teşekkür ediyorum düzenlemeleri yapıyorum.

İyi Çalışmalar.

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Cevapla