Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.07.08;
Скачать: [xml.tar.bz2];

Вниз

Перенос слова в TQRLabel   Найти похожие ветки 

 
a125   (2007-05-06 14:48) [0]

Есть TQRLabel фиксированной ширины и достаточной высоты (несколько строк), wordwrap:=true. Проблема : если попадается слово (строка символов между пробелами) длинее, чем ширина TQRLabel , то выводится только видимая часть слова, а остальная пропадает, поясню примером:
исходная строка : Премия за особоважное задание
выдводится так

премия
за
особоваж
задание

Как сделать, чтобы выводились так:

премия
за
особоваж
ное
задание


 
DimaBr ©   (2007-05-07 12:11) [1]

1. Написать потомок от TQRLabel, который будет это реализовывать. При возникновении трудностей спрашиваем здесь
http://www.delphimaster.ru/cgi-bin/forum.pl?n=12

2. Попытаться переформатировать текст расставив пробелы. Например так

procedure TQuickReport2.QRLabel1Print(sender: TObject; var Value: String);
var i: integer;
   s,s1,s2: string;
   Flag: boolean;
begin
 s := "";
 s1 := "";
 S2 := value;
 while Length(s2)> 0 do begin
   s1 := s1 + s2[1];
   s := s + s2[1];
   delete(s2,1,1);
   with QRLabel1 do
    if Muldiv(Longint(ParentReport.TextWidth(Font, s1)),Zoom,100) > Width then begin
      Flag := true;
      for i := Length(s1) downto 0 do
        if s1[i] = #32 then begin
          s1 := Copy(s1,i+1,Length(s1)-i);
          Flag := false;
          Break;
        end;
      if Flag then begin
        s1 := Copy(s1,Length(s1),1);
        s := copy(s,1,Length(S)-1)+" "+ s1;
      end;
   end;
 end;
 Value := s;
end;


 
DimaBr ©   (2007-05-07 12:11) [2]

1. Написать потомок от TQRLabel, который будет это реализовывать. При возникновении трудностей спрашиваем здесь
http://www.delphimaster.ru/cgi-bin/forum.pl?n=12

2. Попытаться переформатировать текст расставив пробелы. Например так

procedure TQuickReport2.QRLabel1Print(sender: TObject; var Value: String);
var i: integer;
   s,s1,s2: string;
   Flag: boolean;
begin
 s := "";
 s1 := "";
 S2 := value;
 while Length(s2)> 0 do begin
   s1 := s1 + s2[1];
   s := s + s2[1];
   delete(s2,1,1);
   with QRLabel1 do
    if Muldiv(Longint(ParentReport.TextWidth(Font, s1)),Zoom,100) > Width then begin
      Flag := true;
      for i := Length(s1) downto 0 do
        if s1[i] = #32 then begin
          s1 := Copy(s1,i+1,Length(s1)-i);
          Flag := false;
          Break;
        end;
      if Flag then begin
        s1 := Copy(s1,Length(s1),1);
        s := copy(s,1,Length(S)-1)+" "+ s1;
      end;
   end;
 end;
 Value := s;
end;


 
DimaBr ©   (2007-05-07 12:34) [3]

Извиняюсь за второй пост, ещё как вариант, можно заменить Label на RichText



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2007.07.08;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.044 c
2-1181846757
лЕвый поЗер
2007-06-14 22:45
2007.07.08
esc


5-1156231502
nali
2006-08-22 11:25
2007.07.08
Сохранение и загрузка свойства в файл в рантайме


2-1181482114
golik
2007-06-10 17:28
2007.07.08
экспорт в Excel!!!!!!!!!!!!!


3-1175791322
Kley
2007-04-05 20:42
2007.07.08
Фильтрация при открытии формы


15-1181377892
matt
2007-06-09 12:31
2007.07.08
Приблуда для дельфи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский