buradaki 1'i sağa hizalamak istediğimde satır komple sağa düşüyor.
araya boşluk karakteri atsam her karakterin genişliği farklı olduğu için istediğim gibi durmuygor.
bu problemi nasıl aşabileceğimi bilen arkadaşların yardımını bekliyorum
mantık olarak 1 gelecek satıra soldan itibaren en yüksek diyelim 4 basamaklı bir sayı gelecekse #32+#32+#32+'1' şeklinde
2 basamaklı için #32+#32+'10'
3 basamaklı için #32+'100'
4 basamaklı için '1000'
gibi bir kontrol mümkün gözüküyor. sanırım belli peryodlarla satır sonlarına eklenecek sayfa numarası benzeri bişey söz konusu düşündüğünüz.
procedure TForm1.Memo1Click(Sender: TObject);
var
satir:integer;
begin
with (Sender as Tmemo) do
begin
satir:= Perform(EM_LINEFROMCHAR,SelStart,0);
SelStart := Perform(EM_LINEINDEX, satir, 0);
SelLength:=Length(Lines[satir]);
label1.caption:=inttostr(memo1.SelLength);
end;
end;
gibi..
Burada diyelim her 10 satırda bir döngüyle diyelim 1. satırın 35. karakterinden başlayarak:
0 ile 9 arası 2 boşluk + '1' // 1-9
10 ile 99 arası 1 boşluk +'1' // 10-99
100 ile 999 arası '1'
- Sorunun çözümü için kendine sorman gereken asıl soru şudur...
- TRichEdit üzerinden giriş yapmayı düşünüyor musun ? Yoksa sadece sonuçları yansıtacağın ve/veya başka bir ortama ya da veritabanına aktaracağın raporlama kısmı mı olacak..
- Sadece raporlama ortamı olarak düşünüyorsan @futbolcu'nun güzel çözümünü değerlendir ve yaşadığın zaman kaybına son ver... Rakamlar için Font tipini Courier vb. sabit genişlikli bi font seçersen boşluklar işini fazlasıyla görecektir...
- Eğer direkt TRichedit üzerinden elle giriş yapılıyor ve girerken bu rakamlar sağa yanaşsın diyorsan başka bir 3 ncü parti bileşene başvur.
- Rx serisinin RichEdit'inin bunu yaptığı yönünde yazılara rastladım ama deneyimim olmadı...