Merhaba arkadaşlar,
Memoda her satırdaki karakteri sınırlamak bir nevi sağ marj koymak istiyorum. Bunu yapan bileşenler var ama sadece görsel bir sınırlama ben bunu yazıcıya gönderirken de sınırlamak istiyorum.
Satır sonu
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Satır sonu
Bilgi çoğaldıkça krallar ölür
Merhaba,
Biraz geç oldu ama temiz olacak inşallah. Geç oldu diyorum çünkü bir mantık hatasından sonuca ulaşamıyordum. Yaşlılık işte
Sanırım sizin işinizi görecek şey EM_SETMARGINS olacaktır. İlk denemelerimde sağ marj değerini left e eklenecek şekilde zannettiğim için jetonum geç düştü.
Bir memo1 düşünün
şeklinde bir komut gönderirseniz. İşinizi görür.
Ben ilk denediğim zaman right=left+80; gibi bir şey düşündüğüm için farkı göremiyordum.
Halbuki bileşenin width inden verilen çıkarılıyormuş.
Yani yukarıdaki örneğe göre
yazılacak alan=(bileşenin genişliği-sağ marj d.)-(bileşenin lefti+marj lefti)
= (400-300) -(30+50)
=100 -80
=20 piksellik bir yazma alanınız oluyor.
Kolay gelsin.
Biraz geç oldu ama temiz olacak inşallah. Geç oldu diyorum çünkü bir mantık hatasından sonuca ulaşamıyordum. Yaşlılık işte
Sanırım sizin işinizi görecek şey EM_SETMARGINS olacaktır. İlk denemelerimde sağ marj değerini left e eklenecek şekilde zannettiğim için jetonum geç düştü.
Bir memo1 düşünün
yukarıdaki bileşenetop:100,
left:30,
widht:400 olan.
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.perform(EM_SETMARGINS,EC_RIGHTMARGIN,MakeLong(0,300));
Memo1.perform(EM_SETMARGINS,EC_LEFTMARGIN,MakeLong(50,0));
end;
Ben ilk denediğim zaman right=left+80; gibi bir şey düşündüğüm için farkı göremiyordum.
Halbuki bileşenin width inden verilen çıkarılıyormuş.
Yani yukarıdaki örneğe göre
yazılacak alan=(bileşenin genişliği-sağ marj d.)-(bileşenin lefti+marj lefti)
= (400-300) -(30+50)
=100 -80
=20 piksellik bir yazma alanınız oluyor.
Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Logo Go özel eğitim, web tasarım, teknik servis
sayın ofenX,
Çok teşekkür ederim. Kesin olmamakla birlikte sorunu çözmedi bu.
Memoda durum doğru gözüküyor yani diyelim her satır 50 char ile sınırlandırılabiliyor ama memodaki metni not defterine ya da word e yapıştırdığımızda marj filan kalmıyor. Yazıcıda henüz denemdim ama sanırım aynı sonuç çıkacak. Bu şekliyle belki satır sonlu metin şeklinde kaydedersek sonuç çıkabilir.
Çok teşekkür ederim. Kesin olmamakla birlikte sorunu çözmedi bu.
Memoda durum doğru gözüküyor yani diyelim her satır 50 char ile sınırlandırılabiliyor ama memodaki metni not defterine ya da word e yapıştırdığımızda marj filan kalmıyor. Yazıcıda henüz denemdim ama sanırım aynı sonuç çıkacak. Bu şekliyle belki satır sonlu metin şeklinde kaydedersek sonuç çıkabilir.
Bilgi çoğaldıkça krallar ölür
Merhaba,
O zaman siz de mesela memo1 in onexit olayına aşağıdaki gibi bir kodu kullanabilirsiniz.
yalnız yukarıdaki lines.count-1 gibi kullanmayın. ya yukarıdaki gibi kullanırsınız ya da lines.count şeklinde kullanırsınız.
Ayrıca şunu da uyarıda bulunayım. Memodaki bilgileri düzeltmeniz halinde enter tuşunun yeri değişebileceğinden hatalı sonuçlar alabilirsiniz.
O yüzden bütün enter ve line feedleri silip yukarıdakini uygularsınız.
Kolay gelsin.
O zaman siz de mesela memo1 in onexit olayına aşağıdaki gibi bir kodu kullanabilirsiniz.
Kod: Tümünü seç
procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to memo1.lines.Count-2 do
begin
memo1.Lines[i]:=memo1.Lines[i]+#13+#10;
end;
end;
Ayrıca şunu da uyarıda bulunayım. Memodaki bilgileri düzeltmeniz halinde enter tuşunun yeri değişebileceğinden hatalı sonuçlar alabilirsiniz.
O yüzden bütün enter ve line feedleri silip yukarıdakini uygularsınız.
Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Logo Go özel eğitim, web tasarım, teknik servis