memoda karakter sayısını kontrol etme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
memoda karakter sayısını kontrol etme
merhaba arkadaşlar
memoda hersatırın karakter saysını kontrol etmek istiyorum mesela satırdaki karakterler 50 yi gçmeyecek 50 olunca bir alt satıra otomatik geçecek.
herkese iyi çalışmalar...
memoda hersatırın karakter saysını kontrol etmek istiyorum mesela satırdaki karakterler 50 yi gçmeyecek 50 olunca bir alt satıra otomatik geçecek.
herkese iyi çalışmalar...
memo nun OnKeyDown event' ına aşağıdaki kodu yazarsan olur.
kolay gelsin.
Kod: Tümünü seç
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
LNum, CNum: longint;
begin
LNum:= Memo1.Perform(EM_LINEFROMCHAR, Memo1.SelStart, 0);
CNum:= Memo1.Perform(EM_LINEINDEX, LNum, 0);
// Label1.Caption := 'X: '+ IntToStr(LNum + 1);
// Label2.Caption := 'Y:' + IntToStr((Memo1.SelStart - CNum) + 1);
if (Key >= 32) and (Key <= 127)
and (length(Memo1.Lines[LNum]) > 50) then
Memo1.Lines[LNum] := Memo1.Lines[LNum] + #13 + #10;
end;
Kod: Tümünü seç
LineLength := SendMessage(Memo1.Handle, EM_LineLength, CPos, 0);
İyi çalışmalar
Mehmet
Sayın rsimsek hocam,
Sizden kopya çekerek kodu şu hale getirdim:
procedure
TForm1.richedit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
LNum: longint;
i:integer;
begin
LNum:= richedit1.Perform(EM_LINEFROMCHAR, richedit1.SelStart, 0);
for i:= 0 to Lnum do
if (Key >= 32) and (Key <= 127)
and (length(richedit1.Lines[LNum]) > 20) then
richedit1.Lines[LNum] := richedit1.Lines[LNum] + #13 + #10;
end;
Girilen tüm satırlardaki karakter sayısını sınırladım
Ancak satır sonlarındaki kelimeler bölünüyor. Bunu nasıl halledebilirim?
//"ahmet bu gün çok neşelid
//ir"
yerine // "ahmet bu gün çok neşelidir" olmalı ama nasıl?
Sizden kopya çekerek kodu şu hale getirdim:
procedure
TForm1.richedit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
LNum: longint;
i:integer;
begin
LNum:= richedit1.Perform(EM_LINEFROMCHAR, richedit1.SelStart, 0);
for i:= 0 to Lnum do
if (Key >= 32) and (Key <= 127)
and (length(richedit1.Lines[LNum]) > 20) then
richedit1.Lines[LNum] := richedit1.Lines[LNum] + #13 + #10;
end;
Girilen tüm satırlardaki karakter sayısını sınırladım

Ancak satır sonlarındaki kelimeler bölünüyor. Bunu nasıl halledebilirim?
//"ahmet bu gün çok neşelid
//ir"
yerine // "ahmet bu gün çok neşelidir" olmalı ama nasıl?
Bilgi çoğaldıkça krallar ölür
Merhaba,
Bilmem ne düşünürsünüz ama ben genelde bu tür durumlarla karşılaştığımda en basit olan yöntemi uygulyorum
Yani Memo Field'ın ekranda görünen size'ını 50 Chr alacak kadar geniş tutup (dikkat fieldın kapasitesini değil), WordWrap'ini True yapıp, Font'unu da Courier New yapıp (50 chr büyüklüğünde sığabilecek size'da) olayı tamamen sabitliyorum
Sonra satır 50'yi geçti mi, worddwrap yaptım mı gibi olaylardan kurtuluyorum. Dezavantajı ise, aslında Memofield'da herhangi bir gerçek satır açılmadan (yani kullanıcı Enter tuşuna basmadıysa) satırın uzayıp gitmesi
Bunu da gösterim yaptığım yerde hep aynı mantığı kullanarak aşıyorum...
Biraz kolaya kaçmak oluyor ama amaç iş görülsün
Kolay Gelsin.
Bilmem ne düşünürsünüz ama ben genelde bu tür durumlarla karşılaştığımda en basit olan yöntemi uygulyorum

Yani Memo Field'ın ekranda görünen size'ını 50 Chr alacak kadar geniş tutup (dikkat fieldın kapasitesini değil), WordWrap'ini True yapıp, Font'unu da Courier New yapıp (50 chr büyüklüğünde sığabilecek size'da) olayı tamamen sabitliyorum

Sonra satır 50'yi geçti mi, worddwrap yaptım mı gibi olaylardan kurtuluyorum. Dezavantajı ise, aslında Memofield'da herhangi bir gerçek satır açılmadan (yani kullanıcı Enter tuşuna basmadıysa) satırın uzayıp gitmesi

Bunu da gösterim yaptığım yerde hep aynı mantığı kullanarak aşıyorum...
Biraz kolaya kaçmak oluyor ama amaç iş görülsün

Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Ya arkadaşlar, buna yanıt verecek biri yok mu? Olay şu:
Satırdaki karakterlerin sayısı kontrol edilecek. Bu olay kullanıcı bazlı değil
çağırdığınız metin belgesi 0-50 karakter olacak ve eğer kelime sığmıyorsa
bir alt satıra gelecek. Yukarıda ben bir kod yazdım bu kodun sağlamadığı bir şey var; onu da belirttim.
Lütfen bu konu hakkında bilgisi olan bunu esirgemesin.
saygılarımla
Satırdaki karakterlerin sayısı kontrol edilecek. Bu olay kullanıcı bazlı değil
çağırdığınız metin belgesi 0-50 karakter olacak ve eğer kelime sığmıyorsa
bir alt satıra gelecek. Yukarıda ben bir kod yazdım bu kodun sağlamadığı bir şey var; onu da belirttim.
Lütfen bu konu hakkında bilgisi olan bunu esirgemesin.
saygılarımla
Bilgi çoğaldıkça krallar ölür