String Grid İmlec

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

String Grid İmlec

Mesaj gönderen husonet »

Merhaba

Arkadaşlar String Gridde bir hücrede imleci kelimenin sonuna nasıl getirebilirim.

İyi Çalışmalar.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Arkadaşlar bu olayı çözdüm

Grid'in içinde TInplaceEdit diye bir bileşen var. Kullanıcının girdiği değer bu bileşen tarafından alınıyor StringGrid tarafından işleniyor.

Bu bileşen stringrid bileşenini çok kullanışlı hale getirbiliyor. Örneğin StrinGrid bileşeninde hücreleri ReadOnly yapma veya Parasal rakamları girerken basamaklara ayırma gibi.

Hierarchhy' si ise şöyle TCustomEdit - > TCustomMaskEdit -> TInplaceEdit

Bu bileşen gizlide olsa TCustomEdit da var olan herşey TInplaceEdit 'da da olması gerekli ama bu bileşen tam olarak çalışması problemli

bende kodumu TEdit bileşenine göre yorumladım.

Kod: Tümünü seç

        TEdit(StringGrid1.Controls[0]).SelStart := length(stringgrid1.Cells[0, ARow]);
ve imlecin sonunu buldum.

İyi Çalışmalar.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Arkadaşlar bu olayı ben StringGride girdiğim parasal alanları hücreye giriş esnasında basamaklamak için yazmıştım ve neticeye ulaştım programımın bu kısmını sizinle paylaşmak istiyorum. Lütfen görüşlerinizi iletiniz şimdilik eksiği yok gibi gözüküyor. Umarım sizlerinde işini görür.


Kod: Tümünü seç

Function FormatSayi(sayi:string):string;
var s,s1,s2     :string;
    x,i,ns      :integer; 
    nokta_sayisi:real; 
begin 
        s:=sayi; 
        s1:=''; 
        x:=length(s); 
        for i:=x downto 1 do 
        begin 
             insert(copy(s,i,1),s1,x-i+1);
        end; 

        if (x mod 3)=0 then 
                nokta_sayisi:=(x/3-1); 
        if (x mod 3)<>0 then 
        begin 
                nokta_sayisi:=trunc(x/3); 
        end; 
        ns:=strtoint(floattostr(nokta_sayisi)); 

        x:=x+ns; 
        for i:=1 to x do 
        begin 
            if (i Mod 4)=0 then 
                insert('.',s1,i);
        end; 

        x:=length(s1); 
        s2:=''; 
        for i:=x downto 1 do 
        begin 
             insert(copy(s1,i,1),s2,x-i+1); 
        end; 
        result:=s2; 
end;


procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
  ARow: Integer; const Value: String);
var
    i:Integer;
    Fiyat:String;
begin
    if ACol = 0 Then
    Begin
        Fiyat := stringgrid1.Cells[0, ARow];

        for i:=1 to length(stringgrid1.Cells[0, ARow]) do
        begin
            if copy(Fiyat,i,1)='.' then
               delete(Fiyat,i,1);
        end;

        stringgrid1.Cells[0, ARow] := FormatSayi(Fiyat); 
        TEdit(StringGrid1.Controls[0]).SelStart := length(stringgrid1.Cells[0, ARow]);
    End;
end;

Not : Format sayı fonksiyonunu ben yazmadım.

İyi Çalışmalar.
Cevapla