Satır sonu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
futbolcu
Üye
Mesajlar: 129
Kayıt: 02 Tem 2003 07:33
Konum: Ankara

Satır sonu

Mesaj gönderen futbolcu » 28 Mar 2006 10:28

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

Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 12:48
Konum: İstanbul

Mesaj gönderen rsimsek » 29 Mar 2006 08:44

Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!

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

Mesaj gönderen futbolcu » 29 Mar 2006 12:10

rsimsek hocam
o kod işimi görmüyor. Görünürde alt satıra geçiyor ama yazıldığında yine sınırlama yok.
Bilgi çoğaldıkça krallar ölür

Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 09:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX » 29 Mar 2006 05:36

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 :oops:
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ü. :lol:
Bir memo1 düşünün
top:100,
left:30,
widht:400 olan.
yukarıdaki bileşene

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;


ş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.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis

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

Mesaj gönderen futbolcu » 29 Mar 2006 06:50

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

Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 09:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX » 30 Mar 2006 10:31

Merhaba,
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;
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.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis

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

Mesaj gönderen futbolcu » 30 Mar 2006 10:42

Çok teşekkür ederim. Son Gönderdiğiniz kod işimi gördü.
İyi çalışmalar.
Bilgi çoğaldıkça krallar ölür

Cevapla