Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.08;
Скачать: CL | DM;

Вниз

Перенос слова в 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
15-1181383082
Dmitry_177
2007-06-09 13:58
2007.07.08
Просмотр тела функции в Visual Studio


1-1178626483
nali
2007-05-08 16:14
2007.07.08
Освобождение ресурсов потока


15-1180984871
Ш-К
2007-06-04 23:21
2007.07.08
Где взять файл курсора?


11-1164473294
vampir_infernal
2006-11-25 19:48
2007.07.08
Что плохого в unicode-совместимом коде?


11-1164864154
Rocket
2006-11-30 08:22
2007.07.08
AnchorRight -Bottom не корректно работают при Parent - GroupBox