Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Показывать значки элементов списка в TRichEdit

Delphi , Компоненты и Классы , TMemo и TRichEdit

Показывать значки элементов списка в TRichEdit

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

uses
   RichEdit;

 procedure TForm1.Button1Click(Sender: TObject);
 var
   fmt: TParaformat2;
 begin
   FillChar(fmt, SizeOf(fmt), 0);
   fmt.cbSize := SizeOf(fmt);
   // The PARAFORMAT2 structure is used to set the numbering style. 
  // This is done through the following structure members: 
  fmt.dwMask := PFM_NUMBERING or PFM_NUMBERINGSTART or PFM_NUMBERINGSTYLE or
                 PFM_NUMBERINGTAB;
       // Set the following values (bitwise-or them together) to identify 
      // which of the remaining structure members are valid: 
      // PFM_NUMBERING, PFM_NUMBERINGSTART, PFM_NUMBERINGSTYLE, and PFM_NUMBERINGTAB 
  fmt.wNumbering := 2;
       //0 no numbering or bullets 
      //1 (PFN_BULLET) uses bullet character 
      //2 Uses Arabic numbers (1, 2, 3, ...). 
      //3 Uses lowercase letters (a, b, c, ...). 
      //4 Uses uppercase letters (A, B, C, ...). 
      //5 Uses lowercase Roman numerals (i, ii, iii, ...). 
      //6 Uses uppercase Roman numerals (I, II, III, ...). 
      //7 Uses a sequence of characters beginning with the Unicode 
      //  character specified by the wNumberingStart member. 
  fmt.wNumberingStart := 1;
       //  Starting value for numbering. 
  fmt.wNumberingStyle := $200;
       // Styles for numbering: 
      // 0 : Follows the number with a right parenthesis.  1) 
      // $100 : Encloses the number in parentheses.       (1) 
      // $200 : Follows the number with a period.          1. 
      // $300 : Displays only the number.                  1 
      // $400 : Continues a numbered list without applying the next number or bullet. 
      // $8000 : Starts a new number with wNumberingStart. 
  fmt.wNumberingTab := 1440 div 4;
   // Minimum space between a paragraph number and the paragraph text, in twips 

  RichEdit1.Perform(EM_SETPARAFORMAT, 0, lParam(@fmt));
 end;

Код, который вы предоставили, используется для настройки стиля нумерации в контроле RichEdit в Delphi. Нумерационный стиль можно настроить с помощью структуры PARAFORMAT2.

Вот разбивка того, что каждый участок кода делает:

  1. FillChar( fmt, SizeOf( fmt ), 0 );: эта строка инициализирует переменную fmt в ноль.
  2. fmt.cbSize := SizeOf( fmt );: эта строка устанавливает размер структуры PARAFORMAT2 в ее фактический размер.
  3. следующие строки настраивают различные члены структуры fmt:
    • fmt.dwMask := PFM_NUMBERING or PFM_NUMBERINGSTART or PFM_NUMBERINGSTYLE or PFM_NUMBERINGTAB;: эта строка устанавливает маску для структуры PARAFORMAT2 включать члены wNumbering, wNumberingStart, wNumberingStyle и wNumberingTab.
    • fmt.wNumbering := 2;: эта строка настраивает стиль нумерации использовать арабские цифры (1, 2, 3, ...).
    • fmt.wNumberingStart := 1;: эта строка настраивает начальное значение для нумерации.
    • fmt.wNumberingStyle := $200;: эта строка настраивает стиль нумерации. В этом случае он добавляет точку после номера (например, "1.").
    • fmt.wNumberingTab := 1440 div 4;: эта строка настраивает минимальное расстояние между номером абзаца и текстом абзаца.
  4. код вызывает метод Perform контрола RichEdit для установки формата абзаца:
RichEdit1.Perform(EM_SETPARAFORMAT, 0, lParam(@fmt));

Это будет применять форматирование, указанное в структуре PARAFORMAT2, к выбранному тексту или ко всем абзацам, если нет выбранного текста.

Если вы хотите отображать иконки для элементов списка в контроле RichEdit, вы можете использовать сообщение EM_SETTEXTEX вместо EM_SETPARAFORMAT. Это сообщение позволяет установить текст и иконку для каждого элемента списка. Вот пример:

procedure TForm1.Button1Click(Sender: TObject);
var
  selstart, selend: Integer;
begin
  RichEdit1.SelStart := 0;
  RichEdit1.SelEnd := 0;

   // Установка начала и конца выбора к началу текста
  RichEdit1.Perform(EM_SETTEXTEX, 0, LPARAM(@text));
  RichEdit1.Perform(EM_SETTEXTEX, 2, LPARAM(@icon));
end;

В этом примере text - строка, содержащая элементы списка, а icon - целое число, представляющее иконку для каждого элемента. Сообщение EM_SETTEXTEX устанавливает текст и иконку для каждого элемента списка.

Обратите внимание, что вам нужно определить переменные text и icon, а также загрузить иконки в контрол RichEdit с помощью сообщения EM_REPLACESEL или путем вставки их из буфера обмена.

В статье описывается пример на Delphi, как отображать значки элементов списка в TRichEdit controls с помощью структуры PARAFORMAT2 и метода Perform класса T RichEdit.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TMemo и TRichEdit ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:22:26/0.0058941841125488/1