Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Подсчёт символов в RichViewEdit  (Прочитано 4781 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Shouldercannon
Помогающий

ru
Offline Offline

« : 25-05-2010 14:45 » 

Получается подсчитать всё кроме количества символов при переходе нановую строку с помощью Ctrl + Enter. Помогите пожалуйста разобраться с этой проблемой.

* Count.zip (7.06 Кб - загружено 777 раз.)
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 25-05-2010 15:19 » 

Shouldercannon, вот скажи, что за народ такой пошел: бросят код и нате вам - разберитесь и почините?..
Хочешь, чтобы тебе помогали, покажи, что ты не такой же студент-халявщик, как вот эта братия: https://forum.shelek.ru/index.php/board,111.0.html
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Shouldercannon
Помогающий

ru
Offline Offline

« Ответ #2 : 25-05-2010 15:33 » 

С помощью данной функции я веду подсчёт всего содержимого RichViewEdit
Код:
function GetCharCount(RVData: TCustomRVData): Integer;
var
i, r, c: Integer;
table: TRVTableItemInfo;
begin
Result := 0;
  for i := 0 to RVData.Items.Count - 1 do
    if RVData.GetItemStyle(i) >= 0 then
      begin
        inc(Result, RVData.ItemLength(i));
      end
        else
          if RVData.GetItemStyle(i) = rvsTab then
            inc(Result)
              else
                if RVData.GetItemStyle(i) = rvsTable then
                  begin
                    table := TRVTableItemInfo(RVData.GetItem(i));
                      for r := 0 to table.Rows.Count - 1 do
                        for c := 0 to table.Rows[r].Count - 1 do
                          if table.Cells[r, c] <> nil then
                            inc(Result, GetCharCount(table.Cells[r, c].GetRVData));
                  end;
end;

Вот так я вывожу количество символов в Caption панели
Код:
r := GetCharCount(RichViewEdit1.RVData);
  Panel1.Caption := IntToStr(r);
Минус функции в том, что она не подсчитывает количество символов занимаемое при переводе каретки на новую строку с помощью Ctrl + Enter. Прошу помощи для испраления данной проблемы.
Записан
Shouldercannon
Помогающий

ru
Offline Offline

« Ответ #3 : 26-05-2010 11:08 » 

Код:
procedure TForm1.RichViewEdit1Change(Sender: TObject);
var
  r: integer;
begin
  r := RichViewEdit1.GetTextLen;
  Panel1.Caption := IntToStr(r);
end;
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines