ReDrawText

Модуль ReDrawText 1.5f

Нет прав для скачивания

Shegorat

Lord of Madness
Администратор
Я заметил: если текст, помещённый в тег, по краям не выделен пробелами, то они добавляются; если выделен - они не добавляются. Ansi-версия, если это важно.
Так и должно быть или где-то проблема?
Да, есть такое дело. Но у меня сейчас нет времени, чтобы это исправлять.
 

Хамик

Старожил
приведите пожалуйста пример как перерисовывать текст в компонент листе, если это возможно.
 

Shegorat

Lord of Madness
Администратор
приведите пожалуйста пример как перерисовывать текст в компонент листе, если это возможно.
Увы, стандартными средствами никак. Нужно перехватывать оконную процедуру компонент листа и вручную отрисовывать элементы.
 

Хамик

Старожил
Модуль может TNewStaticText перерисовывать? Или он только лейблы рисует?
 

Shegorat

Lord of Madness
Администратор
В общем на тест. Переписал код. Добавил два новых бб-кода
[url=link]description[/url], [url=link][/url]
[shadow=color, diffx, diffy]text[/shadow], [shadow=color, diff]text[/shadow], [shadow=color]text[/shadow]

Функции несколько изменились, внимательно смотрите модуль. Если всё будет нормально, потом добавлю примеры и оформлю как ресурс.

Обо всех недоработках и багах сообшайте в теме. Надеюсь ничего не упустил..
 

Вложения

sergey3695

Ветеран
Модератор
Shegorat, link не смотрел. Что увидел и подправил
Код:
procedure SetRWAlignment(var RWLbl: TRedrawedLabel; const Align: TAlignment);
var
  i, k, c, w, d: Integer;
begin
  c:= 0;
  for i:= 0 to (RWLbl.RowCount - 1) do begin
  w:= RWlbl.Rows[i].RowWidth;
  case Align of
  taLeftJustify : d:= RWLbl.Left+0;
  taCenter  : d:= RWLbl.Left+(RWLbl.Width div 2) - (w div 2);
  taRightJustify: d:= RWLbl.Left+RwLbl.Width - w;
  end;

  for k:= c to (c + RWLbl.Rows[i].RowItems - 1) do begin
  RWLbl.Parts[k].Main.Left:= d;
  if (RWLbl.Parts[k].Shadow <> nil) then
  RWLbl.Parts[k].Shadow.Left:= d + RWLbl.Parts[k].DiffX;
  d:= d + RWLbl.Parts[k].Main.Width;
  end;
  c:= c + RWLbl.Rows[i].RowItems;
  end;
end;
и
Код:
procedure ShowRWLabel(var RWLbl: TRedrawedLabel);
var
  i: Integer;
begin
  for i:= 0 to RWLbl.TotalItems - 1 do begin
  if (RWLbl.Parts[i].Shadow <> nil) then
      RWLbl.Parts[i].Shadow.Show();
    RWLbl.Parts[i].Main.Show();
  end;
end;
// ... поднял выше, а то Shadow лейбл перекрывал главный
        if (tFlags and FS_SHADOW <> 0) then begin
          Result.Parts[d].Shadow:= TLabel.Create(pParent);
          Result.Parts[d].Shadow.Autosize:= false;
          Result.Parts[d].Shadow.Font:= tmpFont;
          Result.Parts[d].Shadow.Font.Color:= ShadowColor;
          Result.Parts[d].Shadow.SetBounds(tLeft + sdDiffX, tTop + sdDiffY, tWidth, tHeight);
          Result.Parts[d].Shadow.Transparent:= true;
          Result.Parts[d].Shadow.Caption:= tText2;
          Result.Parts[d].Shadow.Parent:= pParent;
          Result.Parts[d].DiffX:= sdDiffX;
          Result.Parts[d].DiffY:= sdDiffY;
        end;

        Result.Parts[d].Main:= Tlabel.Create(pParent);
        Result.Parts[d].Main.Autosize:= false;
        Result.Parts[d].Main.Font:= tmpFont;
        Result.Parts[d].Main.SetBounds(tLeft, tTop, tWidth, tHeight);
        Result.Parts[d].Main.Transparent:= true;
        Result.Parts[d].Main.Caption:= tText2;
//...
 
Последнее редактирование:

hexep

Мимокрокодил
модуль не поддерживает символы табулятора в строке (#$9). Shegorat, можно надеяться на исправление?
 

Shegorat

Lord of Madness
Администратор
Да я как-то забил на него. Думал никто и не пользуется уже
P.S. @sergey3695, а ты тот ещё некрофил ;)
 
Последнее редактирование:

agent555

Участник
Дракончик, обнови по брацки, как будет время. Я с 2к16 жду апдейта
 

sergey3695

Ветеран
Модератор
@Shegorat, мне @agent555, написал. проблема в том, что текст в кодировке ut8 bom не работает с модулем.
у него английская система без кириллицы 😀
 

Shegorat

Lord of Madness
Администратор

sergey3695

Ветеран
Модератор
@Shegorat, я не знаю как это воспроизвести у себя без удаления русского языка в системе. (
 
Сверху