Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Edit otomatik tamamlama
#1
Merhaba;


Yaklaşık 10 tedit kullanıyorum edit içine tarih girince otomatik olarak (.) eklenmesini istiyorum.
İşlemi function kullanarak çözmek istiyorum, Fakat (.) hep en sonda kalıyor Örnek: 02 yazdığımda noktayı koyuyor fakat edite tekrar sayı girdiğimde nokta yine sonda kalıyor. bu durumu nasıl çözerim?



procedure TForm1.EditTarihChangeTracking(Sender: TObject);
begin
  if EditTarih.Text.Length > 0 then
    EditTarih.Text := TarihCreate(EditTarih.Text);
end;


function TForm1.TarihCreate(TarihString: String): String;
var
  Test: String;
begin
  Result := TarihString;
  I := Result.Length;
  begin
    if I = 2 then
    begin
      Test := Result;
      Result := '';
      Result := Test + ':';
    end;
  end;
end;
Cevapla
#2
(13-04-2019, Saat: 19:10)ahmetb Adlı Kullanıcıdan Alıntı: Merhaba;


Yaklaşık 10 tedit kullanıyorum edit içine tarih girince otomatik olarak (.) eklenmesini istiyorum.
İşlemi function kullanarak çözmek istiyorum, Fakat (.) hep en sonda kalıyor Örnek: 02 yazdığımda noktayı koyuyor fakat edite tekrar sayı girdiğimde nokta yine sonda kalıyor. bu durumu nasıl çözerim?



procedure TForm1.EditTarihChangeTracking(Sender: TObject);
begin
  if EditTarih.Text.Length > 0 then
    EditTarih.Text := TarihCreate(EditTarih.Text);
end;


function TForm1.TarihCreate(TarihString: String): String;
var
  Test: String;
begin
  Result := TarihString;
  I := Result.Length;
  begin
    if I = 2 then
    begin
      Test := Result;
      Result := '';
      Result := Test + ':';
    end;
  end;
end;

neden DateEdit kullanmıyorsunuz?
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#3
Görsellikten dolayı DateEdit tercih etmiyorum.
Cevapla
#4
Buyrun size bir DateEdit..


procedure TForm1.Edit1Enter(Sender: TObject);
begin
 Edit1.Clear;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if not(CharInSet(Key, ['0' .. '9', #8, #13])) then
 begin
   Key := #0;
   Beep;
 end;
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
 Edit1.MaxLength:=10; //Bunu formdan yaparsanız daha mantıklı..
 if length(Edit1.text) = 2 then
 begin
   Edit1.text := Edit1.text + '.';
   Edit1.SelStart := 3;
   Edit1.SelLength := 0;
 end;
 if length(Edit1.text) = 5 then
 begin
   Edit1.text := Edit1.text + '.';
   Edit1.SelStart := 6;
   Edit1.SelLength := 0;
 end;
end;
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#5
(14-04-2019, Saat: 18:05)mcuyan Adlı Kullanıcıdan Alıntı: Buyrun size bir DateEdit..


procedure TForm1.Edit1Enter(Sender: TObject);
begin
 Edit1.Clear;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if not(CharInSet(Key, ['0' .. '9', #8, #13])) then
 begin
   Key := #0;
   Beep;
 end;
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
 Edit1.MaxLength:=10; //Bunu formdan yaparsanız daha mantıklı..
 if length(Edit1.text) = 2 then
 begin
   Edit1.text := Edit1.text + '.';
   Edit1.SelStart := 3;
   Edit1.SelLength := 0;
 end;
 if length(Edit1.text) = 5 then
 begin
   Edit1.text := Edit1.text + '.';
   Edit1.SelStart := 6;
   Edit1.SelLength := 0;
 end;
end;

Teşekkür ederim.
Cevapla
#6
(14-04-2019, Saat: 18:05)mcuyan Adlı Kullanıcıdan Alıntı: Buyrun size bir DateEdit..


procedure TForm1.Edit1Enter(Sender: TObject);
begin
 Edit1.Clear;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if not(CharInSet(Key, ['0' .. '9', #8, #13])) then
 begin
   Key := #0;
   Beep;
 end;
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
 Edit1.MaxLength:=10; //Bunu formdan yaparsanız daha mantıklı..
 if length(Edit1.text) = 2 then
 begin
   Edit1.text := Edit1.text + '.';
   Edit1.SelStart := 3;
   Edit1.SelLength := 0;
 end;
 if length(Edit1.text) = 5 then
 begin
   Edit1.text := Edit1.text + '.';
   Edit1.SelStart := 6;
   Edit1.SelLength := 0;
 end;
end;

Bu işlemi parasal alan için nasıl uyarlayabiliriz.
Cevapla
#7
MaskEdit için tarih alanlarında aşağıdaki kodu kullanıyorum.


//Uses DateUtils

procedure TForm1.MaskEdit1Change(Sender: TObject);
begin
 if ((Sender as TMaskEdit).Text= '  .  .    ') or
    ((Sender as TMaskEdit).Text='') then
    (Sender as TMaskEdit).EditMask := ''
 else
   (Sender as TMaskEdit).EditMask := '99.99.9999' ;
end;

procedure TForm1.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
begin
 if not (Key in ['0'..'9', #8]) then
   Key := #0;
end;

procedure TForm1.MaskEdit1Exit(Sender: TObject);
begin
  if MaskEdit1.Text <> '' then
  begin
     if Not IsValidDate (StrToIntDef(Copy(MaskEdit1.Text,7,4) , 0),
                         StrToIntDef(Copy(MaskEdit1.Text,4,2) , 0),
                         StrToIntDef(Copy(MaskEdit1.Text,1,2) , 0)) then
     begin
       ShowMessage('Bir hata oluştu. Girilen tarih geçersiz.');
       MaskEdit1.SetFocus ;
     end ;
  end ;

end;


Ve yine MaskEdit için parasal alanlarda aşağıdaki kodu kullanıyorum.

procedure TForm1.MaskEdit2Exit(Sender: TObject);
begin
 try
   if TMaskEdit(sender).Text = '' then
     TMaskEdit(sender).Text := '0,00'
   else
     TMaskEdit(sender).Text := formatFloat('#0.00', strToFloatdef(TMaskEdit(sender).Text,0))  ;
 except
   ShowMessage('Alan için format uygun değil.');
   TMaskEdit(sender).SetFocus ;
 end;
end;

procedure TForm1.MaskEdit2KeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9', ',', #8]) then
    Key := #0;
  if (AnsiPos(',',TEdit(sender).Text) <> 0) and (key = ',') then
    key := #0;
end;
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  whatsapp otomatik mesaj gönderme kornakamil 20 10.693 16-08-2023, Saat: 18:35
Son Yorum: enigma
  Delphi Edit OnKeyDown Enter Olayı Hk sadoal351 5 2.562 07-11-2022, Saat: 15:53
Son Yorum: mcuyan
  Listview Item -> dynamic appearance edit alanı ekleme vedat33 0 897 19-09-2022, Saat: 10:55
Son Yorum: vedat33
  Edit e yazamıyorum hakankvk 4 1.791 24-08-2022, Saat: 22:42
Son Yorum: hakankvk
  FGX Delphi 10.4.1 Edit Repack atilim07 9 5.648 12-05-2022, Saat: 08:29
Son Yorum: narkotik



Konuyu Okuyanlar: 1 Ziyaretçi