Label etiketi problemi.

Delphi .net ve .net ile ilgili konuları buraya yazabilirsiniz.
Cevapla
Kullanıcı avatarı
dameon
Üye
Mesajlar: 37
Kayıt: 04 Kas 2005 07:54

Label etiketi problemi.

Mesaj gönderen dameon »

Bir ziyaretçi defteri yazıyorum Delphi.Net ile.Kullanıcıdan verileri 4 adet textbox ile alıyorum , ilk 3 tanesi singleline textbox , 4. olanı ise multiline textbox.İlk 3 tanesi ile adsoyad, mail , konu başlığı , sonuncu textbox ile ise mesaj'ı alıyorum ve veritabanına (oledbconnection kullanarak) başarıyla kaydediyorum.Sonra mesajları göstermek için veritabanından verileri sorunsuz alıyorum ve label etiketinin içine atıyorum.

Fakat eğer girilen mesaj uzun ise (mesela 100 karakterden fazla) internet explorer alt tarafta yatay kaydırma çubukları çıkartıyor ve mesaj sağa doğru uzayıp gidiyor.Label etiketinin eski delphi win32'de olduğu gibi wrap özelliği yok.Ben de her 80 karakterde bir "enter" koyuyorum kodların arasına ama bazen kelimenin tam olmayacak yerinden kesiyor.Ben kelime kelime kessin istiyorum.Mesela şöle yapıyor : Arkadaşım kelimesini "A" yazıp alt satıra geçiyor ve "rkadaşım" diyerek devam ediyor , bu da çirkin bir görüntü oluşturuyor.

Tam olarak bu kıstaslarıda ele alabilecek bir yöntem yada kod varmıdır ?
Mesela şimdi bu mesajı yazdığım textbox çok güzel yapıyor , kelimeleri bölmeden alt satıra alıyor.Şimdiden teşekkür ederim..
mbt
Üye
Mesajlar: 165
Kayıt: 27 Şub 2004 01:23

Mesaj gönderen mbt »

Bu label etiketi içinde html takıları kullanabiliyorsun. Böyle hallet.
Mesela
Label1.text:='A<br>rkadaşım<p>Satır başı.';
Kullanıcı avatarı
dameon
Üye
Mesajlar: 37
Kayıt: 04 Kas 2005 07:54

Mesaj gönderen dameon »

Arkadaşlar , yabancı sitenin birinde VB.NET ile verilmiş bir örnek buldum , hiç VB bilmememe ve sevmiyor olmama rağmen bunu delphi karşılığına çevirdim ve çok güzel çalıştı.Sizlerle de paylaşmak istedim.


Tanımlamalar

Kod: Tümünü seç

var
son_bosluk,deger1,deger2,deger3:integer;
sonuc,giris_str,ara_deger:string;
vbCRLF:string;
Program Bloğu

Kod: Tümünü seç

vbCRLF:=chr(13)+chr(10);
giris_str:=herhangi bir yerden getirilen string;

ara_deger:='';
deger1 := 1;
deger2 := giris_str.length;
deger3 := 1;

While (deger1 < deger2) do begin

If  copy(giris_str, deger1, 1) = ' ' Then begin
son_bosluk := deger1;
end;

//Burada 80 değerini kullandım , yani her satırda max. karakter , siz 
//istediğimiz bir rakam ile değiştirebilirsiniz.
If  (deger1 = deger3 + 80)  Then begin
  ara_deger := ara_deger + Trim(copy(giris_str, deger3,son_bosluk - deger3 + 1)) + vbCrLf;
 deger3 := son_bosluk + 1;
  While copy(giris_str, deger3, 1) = ' ' do begin
  deger3 := deger3 + 1;
  end;
  End;
deger1 := deger1 + 1;
  End;

ara_deger := ara_deger + Trim(copy(giris_str,deger3)) + vbCrLf;

          sonuc:='<font face="tahoma" size="2"        color=lime>' + ara_deger + '</font><p><hr>';

         label1.Text:=label1.text+sonuc;
end;
Cevapla