Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2008, 22:06   #1
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию TRichView - разметка данных

Приветствую.
Вопрос таков: Есть текст, ну для него стили и т.п. присвоил, добавляю кнопку, на той же линии что и тот текст, только кнопку я хотел бы прилипить по правому краю окна RichView. Как только присваиваю новый стиль параграфа, контрол идет по правому краю, но переходит при добавлении на новую линию. Предложите решение данной проблемы ? Спасибо.
BOBAH13 вне форума Ответить с цитированием
Старый 18.02.2008, 13:00   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Ну все как обычно, сам задал сам ответил Нашел выход - создание таблицы. Но другой вопрос возник как сделать чтобы контрол был со свой-вом аналогичным Align = alClient. Просто когда присвоить это свойство при маштабировании окна черт знает что получается...
BOBAH13 вне форума Ответить с цитированием
Старый 18.02.2008, 15:10   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Все. Я сделал. Если никому не интересно, то просьба модераторы удалите тему.
BOBAH13 вне форума Ответить с цитированием
Старый 18.02.2008, 15:25   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вован, хорош выпендриваться
Выкладывайте, похвалим...
mihali4 вне форума Ответить с цитированием
Старый 18.02.2008, 16:42   #5
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Ну проблемы описаны выше... добился формата типа

------Текст-----Дата--------------------------Контрол----
Текст


для формирования такого типа строки пришлось сделать вот такое чудо:

Код:
var
TextTable: TRVTableItemInfo; // таблица... собсно все в ней создается

// процедура добавления в TextView: TRichView; новой строки с текстом
procedure AddTextIntoView(Caption, Text: String; CaptionStyle: Integer);

// я сделал, это для расчета ширины занимаемой стилем StyleNo для строки Text
function RVTextWidth(Text: String; StyleNo: Integer): Integer;
var
  BitMap: TBitMap;
begin
  BitMap := TBitMap.Create;
  BitMap.Canvas.Font.Name := RVStyle.TextStyles[StyleNo].FontName;
  BitMap.Canvas.Font.Size := RVStyle.TextStyles[StyleNo].Size;
  BitMap.Canvas.Font.Style := RVStyle.TextStyles[StyleNo].Style;
  Result := BitMap.Canvas.TextWidth(Text);
  BitMap.Free;
end;

var
  b: TGraphicButton; // моя кнопка 
  Row: TRVTableRow; // для получения текущей строки и работы с ней
begin
  // ну если первый раз и таблица не создана
  if (TextTable = NIL) then
  begin
    TextTable := TRVTableItemInfo.Create(TextView.RVData);
    TextTable.Rows.Clear; // узнал что при создании в каждой ячейки храниться
    // кака со своим стилем параграфа, она мне и мешала в основном
    TextView.AddItem('', TextTable); // добавляем нашему RichView таблицу
  end else
  // уже создана таблица, добавляем нашу строчку типа пропуска, 
  // для новой мессаги
  begin
    Row := TextTable.Rows.Add(7);
    // для того, чтобы добавленная строка была на все 7м ячеек
    TextTable.MergeCells(TextTable.RowCount - 1, 0, 7, 1, False);
    Row[0].Clear; // опять отчищаем и так каждый раз
  end;
  TextTable.CellVSpacing := 5; // это отступ по вертикали между ячейками
  TextTable.CellHSpacing := 0; // это горизонталь

  Row := TextTable.Rows.Add(7);

  // собственно это и есть те линии ---------------
  Row[0].Clear;
  Row[0].AddBreakExTag(1, rvbsLine, $AAAAAA, 0);
  Row[0].BestWidth := 10;

  // добавляем наш текст со стилем CaptionStyle
  Row[1].Clear;
  Row[1].AddTextNL(Caption, CaptionStyle, -1, 0);
  // для того чтобы ячейка не меняла размеры и имела размер равный ширине стиля... описано выше
  Row[1].BestWidth := RVTextWidth(Row[1].GetItemText(0), CaptionStyle);

  // опять линия
  Row[2].Clear;
  Row[2].AddBreakExTag(1, rvbsLine, $AAAAAA, 0);
  Row[2].BestWidth := 20;

  // текущее время и дата в определенном формате :)
  Row[3].Clear;
  Row[3].AddTextNL(FormatDateTime('hh:mm:ss - dd mmmm yyyy', Now), 3, -1, 0);
  // и опять ячейка по тексту
  Row[3].BestWidth := RVTextWidth(Row[3].GetItemText(0), 3);

  Row[4].Clear;
  Row[4].AddBreakExTag(1, rvbsLine, $AAAAAA, 0);
  
  // моя кнопка
  b := TGraphicButton.Create(NIL);
  // ...
  Row[5].Clear;
  Row[5].AddControlEx('', b, -1, rvvaBaseline);
  Row[5].SetParagraphStyleToAll(1); // стиль для ячейки
  Row[5].BestWidth := 12;

  Row[6].Clear;
  Row[6].AddBreakExTag(1, rvbsLine, $AAAAAA, 0);
  Row[6].BestWidth := 10;

  // это нижний текст... на все 7 ячеек
  Row := TextTable.Rows.Add(7);
  TextTable.MergeCells(TextTable.RowCount - 1, 0, 7, 1, False);
  Row[0].Clear;
  Row[0].AddTextNL(Text, 0, -1, 0);
end;    

Ну после добавления не забываем TRichView.Format; :)
Все-таки меня смущает расчеты размера текста, может есть типа AutoSize ячейки по данным в ячейке

Последний раз редактировалось BOBAH13; 18.02.2008 в 16:46.
BOBAH13 вне форума Ответить с цитированием
Старый 19.02.2008, 21:13   #6
darkstarx
Пользователь
 
Регистрация: 20.01.2008
Сообщений: 24
По умолчанию

Нда, на этом портале вряд ли кто оценит - здесь, кажется, уровень детского сада у программистов, зайдите на форум SQL.ru - там и оценят, и подскажут, и наругают, и обсмеют - вобщем ответят
darkstarx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вставлять смайлы в TRichView CHITER Компоненты Delphi 4 09.02.2009 07:47
Разметка координатных осей LLIypLLIyH Помощь студентам 1 20.06.2008 22:19
База данных xakkkkker БД в Delphi 1 22.03.2008 12:03
разметка страницы. Gambler Microsoft Office Word 0 29.10.2006 21:24