Recent

Author Topic: Как получить список компонентов?  (Read 586 times)

WinterSilence

  • New member
  • *
  • Posts: 6
Как получить список компонентов?
« on: August 26, 2019, 11:17:06 am »
Каким образом получить список установленных в Lazarus компонентов (TEdit, TLabel и т.д.)? Для компонентов нужен список публичных свойств, методов и событий. Данные нужны что   автоматом сгенерировать классы компонентов для https://github.com/gabrielrcouto/php-gui
Я оочень давно не писал на ObjectPascal/Delphi (c 7 версии) т.ч. не пинайте сильно.

sash

  • Sr. Member
  • ****
  • Posts: 265
Re: Как получить список компонентов?
« Reply #1 on: August 31, 2019, 12:10:38 pm »
Что значит "установленных в Lazarus"? Речь про IDE, или про твою программу?
Lazarus 2.0.2 FPC 3.0.4 x86_64-linux-gtk2 -- Ubuntu 19.04 XFCE

julkas

  • Sr. Member
  • ****
  • Posts: 348
  • KISS principle / Lazarus 2.0.0 / FPC 3.0.4
Re: Как получить список компонентов?
« Reply #2 on: August 31, 2019, 05:30:11 pm »
Что значит "установленных в Lazarus"? Речь про IDE, или про твою программу?
Спинным мозгом чувствую -
речь идёт об IDE.
procedure mulu64(a, b: QWORD; out clo, chi: QWORD); assembler;
asm
  mov rax, a
  mov rdx, b
  mul rdx
  mov [clo], rax
  mov [chi], rdx
end;
(* Pointer game *) Inc(ptr, 1); (* vs *) ptr := ptr + 1;

CynicRus

  • New Member
  • *
  • Posts: 41
Re: Как получить список компонентов?
« Reply #3 on: September 06, 2019, 10:22:32 pm »
Каким образом получить список установленных в Lazarus компонентов (TEdit, TLabel и т.д.)? Для компонентов нужен список публичных свойств, методов и событий. Данные нужны что   автоматом сгенерировать классы компонентов для https://github.com/gabrielrcouto/php-gui
Я оочень давно не писал на ObjectPascal/Delphi (c 7 версии) т.ч. не пинайте сильно.

Там прям в гите папка Lazarus, в ней класс треда который делает что нужно, при этом классы зарегистрированы вручную через RegisterClass. В юните  https://github.com/alrieckert/lazarus/blob/master/ide/componentlist.pas есть код работы с палитрой компонентов, но весь прикол в том что палитра компонентов не существует в рамках приложения. Следовательно этот список можно получить либо распарсив соответствующий XML в конфиге, либо...Либо написав свое расширение IDE, которое этот список выведет в рамках IDE.

WinterSilence

  • New member
  • *
  • Posts: 6
Re: Как получить список компонентов?
« Reply #4 on: September 08, 2019, 11:00:03 pm »
распарсив соответствующий XML в конфиге
с парсингом  никаких проблем, мне бы этот xml получить, как это можно сделать? И по получению списка публичных методов/свойств что посоветуете?

WinterSilence

  • New member
  • *
  • Posts: 6
Re: Как получить список компонентов?
« Reply #5 on: September 08, 2019, 11:03:27 pm »
Спинным мозгом чувствую -
речь идёт об IDE.
а lazarus это не только ide?

sash

  • Sr. Member
  • ****
  • Posts: 265
Re: Как получить список компонентов?
« Reply #6 on: September 09, 2019, 10:13:54 am »
а lazarus это не только ide?
Формально - это только IDE, но языковая практика имеет массовые случаи использования в значении "программа, написанная в Lazarus".
Кстати Delphi - это уже точно язык (программирования).
Lazarus 2.0.2 FPC 3.0.4 x86_64-linux-gtk2 -- Ubuntu 19.04 XFCE

CynicRus

  • New Member
  • *
  • Posts: 41
Re: Как получить список компонентов?
« Reply #7 on: September 10, 2019, 06:33:59 am »
распарсив соответствующий XML в конфиге
с парсингом  никаких проблем, мне бы этот xml получить, как это можно сделать? И по получению списка публичных методов/свойств что посоветуете?

Так я привел модуль, откуда стартовать. Там Cntrl + click выведет вас на загрузку палитры установленых компонентов из XML. А список публичных методов и свойств - тут только один путь RTTI.

WinterSilence

  • New member
  • *
  • Posts: 6
Re: Как получить список компонентов?
« Reply #8 on: September 11, 2019, 11:49:00 pm »
а lazarus это не только ide?
Формально - это только IDE, но языковая практика имеет массовые случаи использования в значении "программа, написанная в Lazarus".
Кстати Delphi - это уже точно язык (программирования).
и лазарус и делфи это среды разработки, но естественно между языком и средой нужен какой-то мостик в виде стандартов/интерфейсов/классов, поэтому и появились термины в духе "программа, написанная в Lazarus". На самом деле определить довольно просто: если лазарус не добавляет в паскаль новые языковые конструкции, то это точно не расширение языка :)

WinterSilence

  • New member
  • *
  • Posts: 6
Re: Как получить список компонентов?
« Reply #9 on: September 12, 2019, 12:13:15 am »
Так я привел модуль, откуда стартовать. Там Cntrl + click выведет вас на загрузку палитры установленых компонентов из XML. А список публичных методов и свойств - тут только один путь RTTI.
Вы забываете простой факт- я полнейший нуб в лазарусе, если натруднит, то можно как с дауном который знает только турбо паскаль, да и то это было давно и неправда.
Quote
Там Cntrl + click выведет вас на загрузку палитры установленых компонентов из XML
я открываю componentlist.pas, но не понимаю по какому gui элементу/названию делать "Cntrl + click"
Quote
только один путь RTTI
мне попадался в доках метод для получения списка методов класса,  RTTI лазаруса отличается от того что реализован в delphi 6-7?