richedit sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sr1111
Üye
Mesajlar: 220
Kayıt: 06 Mar 2008 01:59

richedit sorunu

Mesaj gönderen sr1111 »

For x := 1 to richedit1.CaretPos.x+1 do
If (richedit1.Text[x] <> #13) and (richedit1.Text[x] <> #10) and
(richedit1.Text[x] <> ' ') then Characters := Characters + 1 ;
Label11.Caption := InttoStr(Characters);


bu şekilde richeditte bulundugum imlecin konumundan yukarsina kadar olan kısmın karakter adedini aliyorum.
fakat enterlayıp 2, 3, satira gecince enterlanınca 1 den başlıyor karakterler gene.
enterlansada toplam kac karakter oldugunu bularak nasil döngü kurarim.
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: richedit sorunu

Mesaj gönderen SimaWB »

Cursor'un bulunduğu satırı Richedit1.ActiveLineNo ile bulabilirsin. Dolayısıyla ilk döngünü 0'dan ActiveLineNo'ya kadar yaparsın. Sonra her satıra RichEdit1.Lines[index] şeklinde ulaşabilirsin.
There's no place like 127.0.0.1
sr1111
Üye
Mesajlar: 220
Kayıt: 06 Mar 2008 01:59

Re: richedit sorunu

Mesaj gönderen sr1111 »

tesekkur ederim simaWb de Richedit1.ActiveLineNo diye bir parametre yok richeditte.
bulundugu satiri bu sekilde bulabiliyorum.
Label12.Caption := InttoStr(richedit1.CaretPos.y+1);

fakat dediğim gibi
richeditin richedit1SelectionChange asagidakini gibi döngü kurmazssam calismiyor imlec hareket edince.
kurdugum döngüde sadece bulundugu satirin toplamini veriyor.
For j := 1 to richedit1.CaretPos.x+1 do
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: richedit sorunu

Mesaj gönderen SimaWB »

RichEdit'te ActiveLineNo özelliği var ama hangi Delphi versiyonunu kullandığınıza bağlı. Delphi 2010 ve sonrasında var, öncesini bilmiyorum. Bu özelliğin olmadığı versiyonlar için:

Kod: Tümünü seç

function GetActiveLineNo(RE: TRichEdit): integer;
begin
  Result := SendMessage(RE.Handle, EM_LINEFROMCHAR, -1, 0);
end;
kullanılabilir.
There's no place like 127.0.0.1
Cevapla