richedit metin hizalama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
DeXter
Üye
Mesajlar: 13
Kayıt: 22 Eki 2005 12:43

richedit metin hizalama

Mesaj gönderen DeXter » 24 Ara 2005 10:48

Merhaba,
Richedit içinde bir kaç karakteri sağa hizalamak istiyorum, ama ya paragraf yada satır komple hizalanıyor.
örneğin

Kod: Tümünü seç

aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaa                  1
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 :(

Kullanıcı avatarı
futbolcu
Üye
Mesajlar: 129
Kayıt: 02 Tem 2003 07:33
Konum: Ankara

Mesaj gönderen futbolcu » 24 Ara 2005 08:17

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.
Bilgi çoğaldıkça krallar ölür

DeXter
Üye
Mesajlar: 13
Kayıt: 22 Eki 2005 12:43

Mesaj gönderen DeXter » 24 Ara 2005 08:38

boşluk tuşu maalesef dengeyi sağlamıyor

Kullanıcı avatarı
futbolcu
Üye
Mesajlar: 129
Kayıt: 02 Tem 2003 07:33
Konum: Ankara

Mesaj gönderen futbolcu » 24 Ara 2005 09:57

Aslında benim dmek istediğim şöyle birşey: aktif satırı kontol eden kodlar var:

Kod: Tümünü seç

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'
Bilgi çoğaldıkça krallar ölür

Kullanıcı avatarı
futbolcu
Üye
Mesajlar: 129
Kayıt: 02 Tem 2003 07:33
Konum: Ankara

Mesaj gönderen futbolcu » 24 Ara 2005 10:02

yine delphiturk kodbanktan:
memoda aktif sütun ve satır karakter sayısını bulur

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
   Lpos,Cpos,LineLength:integer;
begin
     Lpos := SendMessage(memo1.Handle,EM_LINEFROMCHAR,Memo1.SelStart,0);
     Cpos := SendMessage(memo1.Handle,EM_LINEINDEX,Lpos,0);
     LineLength := SendMessage(memo1.handle, EM_LINELENGTH, Cpos, 0);
     CPos := Memo1.SelStart-CPos;

     Label1.Caption:='Aktif Satır no: '+IntToStr(Lpos);
     Label2.Caption:='Aktif Sütun no: '+IntToStr(Cpos);
     Label3.Caption:='Karakter sayısı: '+IntToStr(LineLength);
end;
Bilgi çoğaldıkça krallar ölür

DeXter
Üye
Mesajlar: 13
Kayıt: 22 Eki 2005 12:43

Mesaj gönderen DeXter » 25 Ara 2005 09:16

derdim satırı, sütunu bulmak değil onları biliyoum. ama bu iş boşluklarla olmazzzzzzzzzzzzz :?

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4731
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Mesaj gönderen mrmarman » 25 Ara 2005 02:18

@DeXter

- 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ı...
Resim Resim

Cevapla