Lazarus Pascal: как отладить набор виджетов (проблема с многострочным заголовком/подсказкой)

Я не самый продвинутый программист, но мне нравится работать с Lazarus.

К сожалению, время от времени возникает проблема или ошибка (например, эта, отчет об ошибке), и я лично хотел бы помочь и посмотрите, могу ли я внести свой вклад, пытаясь отладить это самостоятельно и предоставить возможное «исправление».

У меня есть вопрос: как отладить набор виджетов или инспектор объектов?

Краткая причина: когда я ввожу многострочный заголовок или подсказку под Windows или Linux, все работает нормально. Однако в MacOS X (Carbon) символы новой строки удаляются инспектором объектов или набором виджетов, и я понятия не имею, где искать, чтобы попытаться исправить это.

С чем я смог разобраться сам; Я сузил проблему до инспектора объектов или набора виджетов Carbon. Ручное редактирование формы (lfm) работает, делает это во время выполнения в коде, а многострочные заголовки или подсказки отлично работают в Windows и Linux. Поэтому я подозреваю, что набор виджетов Carbon, используемый инспектором объектов, делает что-то не так.

Любая помощь, чтобы заставить меня начать, очень ценится.

Прошу прощения, если этот вопрос не подходит или недостаточно конкретен - я просто пытаюсь найти помощь в устранении этой проблемы.


person Hanzaplastique    schedule 19.04.2016    source источник


Ответы (1)


Инспектор объектов IDE на самом деле является расширенной версией TTIPropertyGrid. Если вы хотите отладить его, вы можете поработать над пакетом и протестировать его в простом проекте:

введите здесь описание изображения

Затем добавьте простой обработчик для проверки инспектора на форме проекта:

procedure TForm1.FormCreate(Sender: TObject);
begin
  TIPropertyGrid1.TIObject := self;
end;

Когда вы измените исходный код в пакете RunTimeTypeInfoControls, изменения не будут видны в среде IDE, а будут отображаться во время выполнения в вашем примере проекта (пакет будет автоматически перекомпилирован).

Также возможно, что вам придется поработать над модулем PropEdits, если ошибка исходит из самого редактора свойств (возможно, TStringsPropertyEditor).

Чтобы избежать каких-либо трудоемких манипуляций, вы можете протестировать свои изменения на копии соответствующего класса редактора и зарегистрировать его в разделе инициализации вашего тестового проекта, чтобы заменить версию по умолчанию, возможно с ошибками.

person Abstract type    schedule 19.04.2016
comment
Удивительно - это значительно упростило отладку! Спасибо, абстрактный тип! К сожалению, мне не удалось найти причину удаления символа новой строки, но я сузил ее до вызова RefreshValueEdit (в: lazarus/components/ideintf/ObjectInspector.pp). К сожалению, там не происходит ничего странного, что я могу увидеть или отладить. - person Hanzaplastique; 20.04.2016
comment
Поскольку ваш ответ был чрезвычайно полезен, я отмечу его как ответ на мой вопрос... На форуме Lazarus можно найти тему, связанную с этой темой (forum.lazarus.freepascal.org/index.php/topic,32335.0.html). - person Hanzaplastique; 20.04.2016