|
#1
|
||||
|
||||
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
|
|||
|
|||
Цитата:
Цитата:
|
#3
|
||||
|
||||
..
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
|
|||
|
|||
Не знаю, у меня работает и через 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; Цитата:
|
#5
|
||||
|
||||
Спасиба, так всё норм работает
"Название_шрифта" это его FaceName (Например 'Arial' или 'Times New Roman').. На настоящий момент вопросы вроде как исчерпались.. Если есть что интересное по данной теме, пишите |
#6
|
|||
|
|||
У меня такая проблема. При компиляции
Pastebtn.Enabled:=RichEdit1.Perform(em_canpaste , 0, 0)<>0; выдает ошибку [DCC Error] Unit3.pas(55): E2003 Undeclared identifier: 'em_canpaste' Как быть? |