Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.06.2009, 13:55
Аватар для AmX
AmX AmX вне форума
Прохожий
 
Регистрация: 25.04.2008
Адрес: Вологда
Сообщения: 27
Репутация: 10
Восклицание RichEdit и WinAPI

Прриветствую вас, форумчане..
Работаю с RichEdit на WinAPI. Необходимо обеспечить функции для работы с ним, как реализовано в VCL(установка атрибутов строкам текста, получение строки текста по индексу, получение индекса последней строки, добавление строки в конец текста, добавлеине строки в нужное место - по индексу и т.п. - пригодится всё)..

На данный момент научился устанавливать фон контрола(SendMessage(REWnd, EM_SETBKGNDCOLOR, 0, RGB(0, 0, 0)), изменять шрифт 2мя способами( SendMessage(REWnd, WM_SETFONT, Font, 0); - С использованием структуры HFONT и SendMessage(REWnd, EM_SETCHARFORMAT, SCF_ALL, LongInt(@CharFormat)); - С использованием структуры CharFormat)..

Порыл MSDN, погуглил.. Всё же хотелось бы получить как можна больше информации на эту тему..
Может кто знает, какие ещё мессаги можно слать RichEdit'у, чтобы приблизится по возможностям работы с ним к VCL??
Подойдёт любая полезная информация..
Наличие примеров приветствуется
Ответить с цитированием
  #2  
Старый 12.06.2009, 15:32
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Цитата:
Сообщение от AmX
какие ещё мессаги можно слать RichEdit'у
Цитата:
Сообщение от Windows SDK
The following messages are unique to rich edit controls.

EM_CANPASTE
EM_DISPLAYBAND
EM_EXGETSEL
EM_EXLIMITTEXT
EM_EXLINEFROMCHAR
EM_EXSETSEL
EM_FINDTEXT
EM_FINDTEXTEX
EM_FINDWORDBREAK
EM_FORMATRANGE
EM_GETCHARFORMAT
EM_GETEVENTMASK
EM_GETIMECOLOR
EM_GETIMEOPTIONS
EM_GETOLEINTERFACE
EM_GETOPTIONS
EM_GETPARAFORMAT
EM_GETPUNCTUATION
EM_GETSELTEXT
EM_GETTEXTRANGE
EM_GETWORDBREAKPROCEX
EM_GETWORDWRAPMODE
EM_HIDESELECTION
EM_PASTESPECIAL
EM_REQUESTRESIZE
EM_SELECTIONTYPE
EM_SETBKGNDCOLOR
EM_SETCHARFORMAT
EM_SETEVENTMASK
EM_SETIMECOLOR
EM_SETIMEOPTIONS
EM_SETOLEINTERFACE
EM_SETOPTIONS
EM_SETPARAFORMAT
EM_SETPUNCTUATION
EM_SETTARGETDEVICE
EM_SETWORDBREAKPROCEX
EM_SETWORDWRAPMODE
EM_STREAMIN
EM_STREAMOUT
WM_CONTEXTMENU
И у всех есть нормальное описание: что там wParam, а что — lParam... Так что Windows SDK.
Ответить с цитированием
  #3  
Старый 12.06.2009, 20:12
Аватар для AmX
AmX AmX вне форума
Прохожий
 
Регистрация: 25.04.2008
Адрес: Вологда
Сообщения: 27
Репутация: 10
Вопрос ..

Nyctos Kasignete, сенк, я там сматрел))
просто хочеццо каких-то более конкретных примеров использования...
вот щас ещё посидел..несколько продвинулся..

нужно написать процедуру для добавления новой строки в RichEdit..
Я пробовал делать так:
Код:
procedure reAddLine(Hnd: HWND; text: String);
var
 ltext: PAnsiChar;
begin
 GetWindowText(Hnd, ltext, 1024);
 SetWindowText(Hnd, PAnsiChar(ltext+text+#10));
end;
но почему та при обращении получаеццо строка вида "Название_шрифтаТекст"
исправляю на:
Код:
procedure reAddLine(Hnd: HWND; text: String);
var
 ltext: PAnsiChar;
begin
 GetWindowText(REWnd, ltext, 1024);
 SetWindowText(Hnd, PAnsiChar(ltext+text+#10));
end;
- и всё работает..
но тут теряется универсальность процедуры в использовании..
в чём причина неработоспособности первого варианта?
Ответить с цитированием
  #4  
Старый 12.06.2009, 20:36
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Не знаю, у меня работает и через handle.
Код:
procedure reAddLine(Hnd: HWND; txt: String);
var
 ltext: PAnsiChar;
 newText: string;
begin
  GetMem(ltext, 1024);
  try
    GetWindowText(Hnd, ltext, 1024);
    newText := StrPas(ltext) + txt + #13#10;
    SetWindowText(Hnd, @newText[1]);
  finally
    FreeMem(ltext, 1024);
  end;
end;
Цитата:
Сообщение от AmX
получаеццо строка вида "Название_шрифтаТекст"
Что за "Название_шрифта" ?? o_O
Ответить с цитированием
  #5  
Старый 12.06.2009, 20:47
Аватар для AmX
AmX AmX вне форума
Прохожий
 
Регистрация: 25.04.2008
Адрес: Вологда
Сообщения: 27
Репутация: 10
Хорошо

Спасиба, так всё норм работает
"Название_шрифта" это его FaceName (Например 'Arial' или 'Times New Roman')..
На настоящий момент вопросы вроде как исчерпались..

Если есть что интересное по данной теме, пишите
Ответить с цитированием
  #6  
Старый 30.07.2010, 14:25
dima11221122 dima11221122 вне форума
Прохожий
 
Регистрация: 30.07.2010
Сообщения: 1
Репутация: 10
По умолчанию

У меня такая проблема. При компиляции

Pastebtn.Enabled:=RichEdit1.Perform(em_canpaste , 0, 0)<>0;

выдает ошибку

[DCC Error] Unit3.pas(55): E2003 Undeclared identifier: 'em_canpaste'
Как быть?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:04.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter