Şimdi ise sorum/sorun ben bu işlemi tıpkı hesap makinesinde ki gibi giriş anında yapmak istiyorum!
Yani...;
Yazdığım Metod -v1.0
-----------------------------------------------------------------
Kod: Tümünü seç
function NoktaKoy(ParasalAlan:String):string;
var
KS,_Index,Bolum,Sbt,AO:Integer;
begin
KS:=Length(ParasalAlan);
Sbt:=3;
AO:=0;
if (KS <= 3) then exit
Else
begin
for Bolum := 1 to (KS div 3) do
begin
inc(Sbt,AO);
_Index := (KS - Sbt) + 1;
Insert('.',ParasalAlan,_Index);
AO:=3;
if (ParasalAlan[1]='.') then Delete(ParasalAlan,1,1);
result:=ParasalAlan;
end;
end;
end;
-----------------------------------------------------------------
...Buna göre metod u herhangi bir Edit 'in onKeyUp olayında işlettiğimde sonuç anlamsızlaşıyor!
-Nasıl anlamsızlaşıyor ? - Edit1.Text:=NoktaKoy(Edit1.Text); diye kullanınca result değeri Edit 'e eşitlendiği
an imleç başa dönüyor! ve iş arap saçı moduna giriyor, kısaca deniyin görün derim.[belki denemeniz bile gerekmez]
Fakat Edit1'in onKeyUp olayına -> Edit2.Text:=NoktaKoy(Edit1.Text); yazdığımızda birinci alana sayı girilirken ikinci alanda aynı anda bu sayının
hanelere ayrıldığı görülüyor ama istediğim şeyden bir hayli uzak! -Ben bu etkiyi veri girişi yaptığım Edit1 de istiyorum-
NOT: Veri girerken "Aynı an" noktasında metodun bu hali biraz yetersiz kaçıyor! bu anlamda metodu aşağıda ki gibi bir hale soktum!
Yazdığım Metod -v1.1
-----------------------------------------------------------------
Kod: Tümünü seç
procedure NoktaKoy(ParasalAlan:TEdit);
var
KS,_Index,Bolum,Sbt,AO:Integer;
temp:string;
begin
KS:=Length(ParasalAlan.Text);
Sbt:=3;
AO:=0;
temp:=ParasalAlan.Text;
if (KS <= 3) then exit
Else
begin
for Bolum := 1 to (KS div 3) do
begin
inc(Sbt,AO);
_Index := (KS - Sbt) + 1;
Insert('.',temp,_Index);
AO:=3;
ParasalAlan.Text:=temp;
if (ParasalAlan.Text[1]='.') then Delete(temp,1,1);
ParasalAlan.Text:=temp;
end;
end;
end;
işletimi Edit1 'in onKeyUp 'ı --> bu hali 1.0 versyonundan biraz daha sağlıklı çalışıyor gibi.
................
Edit2.Text=Edit1.Text;
NoktaKoy(Edit2);
...............
------------------------------------------------------------------
Kısaca Hesap makinesinde ki gibi giriş anında hanelere bölme olayını bu metodlardan birisiyle
sizce yapabilir miyim ya da ne gibi değişiklikler yapmalıyım?...vs???
Yardımlarınızı bekliyorum teşekkürler ve iyi çalışmalar!
NOT1: kullanılan bileşenler; 2 tane Edit(Edit1,Edit2) alanı isterseniz birde button!
UYARI: metodlarda hanelerine bölme esnasında noktalardan arındırma yapmadım bunun farkındayım ama sorun bundan ziyade
aktif olan edite metodlarla değer atandığında imlecin başa dönmesinden kaynakladığını sanıyorum ve görüşlerinizi buna yoğunlaştırmanızı
diliyorum. Örn: Hesap makinesinde imleç yok.