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;
Kod: Tümünü seç
procedure TForm1.DBGrid1Enter(Sender: TObject);
begin
if DBGrid1.SelectedIndex = 0 Then
DBGrid1.Columns[0].field.FocusControl;
end;
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;
QuantumHusoGrid olacak.
Görüşlerinizi ve Eleştirilerinizi yazmayı unutmayın lütfen.