Автоматизированное место врача от Leybasoft®
Главная » 2014 » Октябрь » 20 » Установка компонента Richmemo на Lazarus в Gtk2
5:51 PM
Установка компонента Richmemo на Lazarus в Gtk2
При всех достоинствах Лазаря в нем в стандартной поставке отсутствует очень важный, на мой взгляд, компонент для форматирования текста. В дельфях, например, есть RichEdit, а вот в Лазаре ничего. Среди немногих удалось отыскать Richmemo русскоязычного разработчика Дмитрия Бояринцева aka 'skalogryz'.

Итак, на Lazarus 1.3 установка компонента под Windows не составила труда и прошла без сучка и задоринки. Проблемы начались при попытке поставить компонент в Debian 7.6, который использует Gtk2.

Для начала компилятор выдал


Компиляция пакета richmemopackage 1.0: Код завершения 256, ошибок: 1
gtk2richmemo.pas(34,3) Fatal: Невозможно найти модуль GtkDef, используемый в Gtk2RichMemo. Включите флаг "Использовать модуль" для модуля GtkDef в пакете LCL.


ОК, делаем, как присоветовано
, и тут же получаем по лбу

lcl.pas(10,3) Fatal: Невозможно найти модуль GtkDef, используемый в LCL. Проверьте список путей поиска пакета LCL, попробуйте пересобрать с очисткой, проверьте выражения Uses в секциях Implementation.

Хорошо, что есть гугл. Немного покопавшись в нем, натыкаюсь на
патчик от Krzysztof Dibowski.
 
Index: gtk2/gtk2richmemo.pas
===================================================================
--- gtk2/gtk2richmemo.pas (wersja 1314)
+++ gtk2/gtk2richmemo.pas (kopia robocza)
@@ -31,9 +31,9 @@
 // LCL
 LCLType, Controls, Graphics,
 // Gtk2 widget
- GtkDef,
- GTKWinApiWindow, GtkGlobals, GtkProc, InterfaceBase,
- GtkWSControls,
+ Gtk2Def,
+ GTK2WinApiWindow, Gtk2Globals, Gtk2Proc, InterfaceBase,
+ Gtk2WSControls,
 // RichMemo
 WSRichMemo;
@@ -98,7 +98,7 @@
class procedure TGtk2WSCustomRichMemo.SetCallbacks(cost AGtkWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo);
begin
- TGtkWSWinControl.SetCallbacks(PGtkObject(AGtkWidget), TComponent(AWidgetInfo^.LCLObject));
+ TGtk2WSWinControl.SetCallbacks(PGtkObject(AGtkWidget), TComponent(AWidgetInfo^.LCLObject));
end;

class function TGtk2WSCustomRichMemo.CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle;

После правки gtk2richmemo.pas, сохранении и пересборки пакета, все прекрасно устанавливается и работает.


Обновлено 10.11.2014 г.

Недавно автор сообщил, что поправил сорцы. Теперь в выше описанных телодвижениях необходимости нет. За что ему огромное спасибо.

 

Обновлено 1.08.2016 г.

 

Кстати, автор недавно обновил справку к компоненту.

Категория: Программирование | Просмотров: 2846 | Добавил: leyba | Рейтинг: 2.0/1
Всего комментариев: 0
avatar