Q1: Как из линии сделать полилинию или многоугольник?
|
A1: Выбрать инструмент Line tool и нарисовать линию, далее удерживая нажатой кнопку Ctrl можно рисовать полилинию. Для получения многоугольника, удерживая кнопку Ctrl, надо навести указатель мыши на первую точку линии и замкнуть ее, в результате чего свойство объекта IsSolid станет равным True. Для размыкания многоугольника надо в инспекторе свойство объекта IsSolid установить в False.
|
Q2: Почему при указании свойства объекта ShowHint=True, не происходит отображение текста Hint-а?
|
A2: Документ в библиотеке FlexGraphics имеет свойство InDesign, при создании и редактировании документа это свойство в редакторе установлено в True, чтобы Hint-ы не мешали, а уже при просмотре документа, свойство документа InDesign устанавливается в False.
|
Q3: Почему при указании угла поворота Angle, не происходит поворот текста?
|
A3: К сожалению в данной версии библиотеки FlexGraphics поворот текста возможен только для TrueType шрифтов. Установите TrueType шрифт, а так же свойство AutoSize установите в False и текст будет поворачиваться.
|
Q4: Для чего предназначено свойство объекта Reference, и как его использовать?
|
A4: Так как документ в библиотеке FlexGraphics может иметь вложенные под-документы или схемы (Scheme), то данное свойство используется для построения сложных связей между схемами или интерактивных-планов с большим количеством планировок. Если объект в свойстве Reference ссылается на другую схему, то в режиме InDesign=False при клике на объект происходит отображение указанной схемы (смотри демо-версию).
|
Q5: Как создать объект в библиотеке FlexGraphics с предопределенными свойствами, и как его зарегистрировать?
|
A5: Для создания нового объекта необходимо создать класс наследник от TFlexControl. При этом необходимо переопределить такие методы:
protected
- procedure CreateProperties;
В методе необходимо зарегистрировать свойства (создать экземпляры наследников от класса TCustomProp), которые должны сохраняться в файле Flex-документа.
- procedure ControlCreate;
Производится инициализация свойств и опций объекта. Чаще всего вызывается метод ControlCreate предка и затем инициализируются новые свойства. Для того, чтобы объект был виден в методе должно быть обязательно установлено свойство Visible в True.
- procedure ControlDestroy;
Производится освобождение памяти и т.д. ВНИМАНИЕ: экземпляры созданных свойств удаляться НЕ ДОЛЖНЫ! Они будут удалены при удалении списка свойств Props.
- procedure Paint(Canvas: TCanvas; var PaintRect: TRect);
Производится полная перерисовка объекта. Размер и положение объекта задается прямоугольником PaintRect. Для ускорения вывода метод может перерисовывать только необходимую прямоугольную область, которая определяется через свойство Owner.PaintRect.
public
- function IsPointInside(PaintX, PaintY: integer): boolean;
Если форма объекта не прямоугольна (или может быть не прямоугольной), то в этом методе нужно определить, принадлежит ли точка (PaintX, PaintY) объекту или нет.
Для интеграции объекта с редактором FlexEdit также желательно перекрыть такие методы:
public
- class function GetToolInfo(ToolIcon: TBitmap; var Hint: string): boolean;
Если объект должен быть добавлен в палитру редактора FlexEdit, то он должен перекрыть этот метод, и вернуть иконку (для FlexEdit 24x24) и хинт для инструмента.
- class function CursorInCreate: TCursor;
Возвращает курсор мыши, который появляется в FlexEdit при создании объекта данного класса. Если метод не будет перекрыт, то FlexEdit будет использовать курсор создания объекта по умолчанию (крест).
Для того, чтобы объект загружался/сохранялся в Flex-файлах его необходимо зарегистрировать вызовом процедуры RegisterFlexControl. Обычно это делается в разделе инициализации модуля:
initalization
RegisterFlexControl(TMyFlexControl);
Пример создания нового объекта приведен в модуле ACCtrls.pas.
|
Q6: Почему при использовании объектов с градиентной заливкой происходит сильное замедление отрисовки?
|
A6: Постарайтесь минимизировать количество объектов с градиентной заливкой, или если это не приемлемо, то применяйте горизонтальную или вертикальную заливку - это ускорит отрисовку.
|
|
08.01.2022 - FlexGraphics v1.82 release !!!
Новые возможности:
- поддержка для пакетов Delphi/CBuilder 11;
- исправление незначительных ошибок;
03.10.2020 - FlexGraphics v1.81 release
Новые возможности:
- поддержка для пакетов Delphi/CBuilder XE8, 10 - 10.4;
17.09.2014 - FlexGraphics v1.78 release
Новые возможности:
- поддержка для пакетов Delphi/CBuilder XE4 - XE7;
|
Партнеры
|
|
|