Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

fpGUI , набор инструментов графического интерфейса Free Pascal , представляет собой кроссплатформенный набор инструментов с графическим пользовательским интерфейсом, разработанный Грэмом Гелденхейсом. fpGUI является открытым исходным кодом и бесплатное программное обеспечение , лицензированное под модифицированной лицензией LGPL. Инструментарий был реализован с использованием компилятора Free Pascal , что означает, что он написан на языке Object Pascal .

fpGUI состоит только из графических виджетов или компонентов и кроссплатформенной библиотеки 2D-чертежей. Он не реализует слои базы данных, трехмерную графику, парсеры XML и т.д. Он также не полагается на какие-либо огромные сторонние библиотеки, такие как GTK или Qt. Все дополнительные функции взяты прямо из библиотеки компонентов Free Pascal (FCL), которая входит в стандартную комплектацию компилятора Free Pascal .

История [ править ]

Первая версия fpGUI была написана Себастьяном Гюнтером еще в 2000 году. Затем проект был заброшен в 2002 году. FpGUI был преемником более ранней оболочки OO GTK, fpGTK, и был в значительной степени новым началом, позволяющим использовать несколько (серверных) наборов виджетов, в первую очередь win32. Этот инструментарий использовался для некоторых внутренних инструментов FPC (например, для редактора fpdoc), но оставалось еще много нерешенных задач, прежде чем инструментарий стал действительно полезным и использовался конечными пользователями в реальных приложениях. Большинство из этих инструментов было перенесено на развивающийся Lazarus в период 2004–2006 годов.

Грэм Гелденхейс возродил инструментарий в середине 2006 года, на котором Себастьян остановился. Он продолжил разработку инструментария на следующий год. Объединение трех подпроектов (fpGFX, fpIMG и fpGUI) в один проект fpGUI. Грэм увеличил количество компонентов и количество внутреннего графического слоя, а также улучшил общий инструментарий. Поддерживаемыми платформами на этом этапе были Linux и FreeBSD через X11 и Microsoft Windows через GDI. Через несколько месяцев к команде разработчиков присоединился Фелипе Монтейро де Карвалью, который добавил поддержку устройств Windows Mobile и расширил поддержку графики и дизайна. Фелипе также начал работать над поддержкой Mac OS X через Carbon.

В начале июня 2007 года Грэм обнаружил в исходной базе несколько серьезных проблем с дизайном. Это мешало fpGUI быть действительно полезным в реальных приложениях. После многочисленных прототипов проект fpGUI был полностью переписан. Прошлый опыт очень помог, были реализованы новые дизайнерские идеи. В итоге кодовая база стала намного проще с более чистым дизайном. Одним из основных изменений было то, что все виджеты теперь были основаны на мульти-дескрипторном (оконном) дизайне. У каждого виджета теперь есть дескриптор окна. Другие наборы инструментов GUI, которые следуют аналогичному дизайну, - это GTK , Xt и FLTK, и это лишь некоторые из них. Наборы инструментов GUI, которые следуют противоположному дизайну, представляют собой такие инструменты, как последняя версия Qt [1] и MSEgui.

Пример программы [ править ]

Следующая программа показывает одно окно с кнопкой «Выход» в правом нижнем углу. На холсте (фоне) окна он рисует все стандартные встроенные изображения, используемые с fpGUI.

программа  stdimglist ;{$ mode objfpc} {$ H +}использует  классы ,  SysUtils ,  fpg_base ,  fpg_main ,  fpg_form ,  fpg_imgfmt_bmp ,  fpg_button ;тип TMainForm  =  class ( TfpgForm )  private  btnClose :  TfpgButton ;  процедура  btnCloseClick ( Отправитель :  TObject ) ;  защищенная  процедура  HandlePaint ;  переопределить ;  открытый  конструктор  Create ( владелец :  TComponent ) ;  переопределить ;  процедура  AfterCreate ;  переопределить ;  конец ;{TMainForm}процедура  TMainForm . AfterCreate ; begin  SetPosition ( 100 , 100 , 700 , 500 ) ;  WindowTitle  : =  'Список стандартных изображений fpGUI' ;  // Поместите кнопку в нижний правый угол.  btnClose  : =  CreateButton ( self ,  Ширина - 90 ,  Высота - 35 ,  75 ,  «Выйти» ,  @ btnCloseClick ) ;  btnClose . ImageName : =  'stdimg.quit' ;  btnClose . Якоря  : =  [ anRight ,  anBottom ] ; конец ;процедура  TMainForm . btnCloseClick ( Отправитель :  TObject ) ; begin  Close ; конец ;процедура  TMainForm . HandlePaint ; var  n :  целое число ;  x :  TfpgCoord ;  y :  TfpgCoord ;  sl :  TStringList ;  img :  TfpgImage ; начать  Canvas . BeginDraw ;  // начинаем двойную буферизацию  унаследованного  HandlePaint ; sl  : =  TStringList . Создать ;  х  : =  8 ;  у  : =  8 ;  fpgImages . ListImages ( сл ) ;  для  n  : = от  0  до  сл . Count - 1  делать  начать  Canvas . DrawString ( x ,  y ,  sl [ n ] + ':' ) ;  img  : =  TfpgImage ( сл . Объекты [ n ]) ;  если  img  <>  nil,  то  Canvas . DrawImage ( x + 130 ,  y ,  img ) ; inc ( y ,  img . Height + 8 ) ;  если  y  >  Height - 32,  то  // самые большие изображения имеют высоту 32  begin  inc ( x ,  200 ) ;  у  : =  8 ;  конец ;  конец ; Холст . EndDraw ;  сл . Бесплатно ; конец ;конструктор  TMainForm . Создать ( владелец :  TComponent ) ; begin  унаследовано  Create ( aowner ) ; (* ДО v1.4:  // Поместите кнопку в нижний правый угол.  BtnClose: = CreateButton (self, Width-90, Height-35, 75, 'Quit', @btnCloseClick);  btnClose.ImageName: = 'stdimg. quit ';  btnClose.Anchors: = [anRight, anBottom]; *) end ;процедура  MainProc ; var  frm  :  TMainForm ; начать  fpgApplication . Инициализировать ;  frm  : =  TMainForm . Создать ( ноль ) ;  попробуйте  frm . Показать ;  fpgApplication . Беги ;  наконец  фрм . Бесплатно ;  конец ; конец ;begin  MainProc ; конец .

Вот скриншот вышеупомянутой программы, запущенной под Linux.
Fpgui stdimglist.png

Лицензирование [ править ]

fpGUI статически связан с программами и лицензируется с использованием модифицированной версии LGPL, специально разработанной для статического связывания с проприетарными программами. Единственный код, который вам нужно сделать доступным, - это любые изменения, которые вы внесли в инструментарий fpGUI - не более того.

Программное обеспечение, написанное с помощью fpGUI [ править ]

  • Магистр математики
    Используется в компьютерной обучающей системе. А также базовый пакет бухгалтерского учета и администрирования для франчайзи.
  • Визуальный конструктор форм, который теперь включен как часть fpGUI. Это позволяет разработчику создавать пользовательские интерфейсы в гораздо более быстром темпе.
  • Unimesur и различные инструменты Программа Unimesur,
    написанная Жан-Марком, позволяет преобразовывать измерения потоков жидкостей и газов между единицами измерения массы и объема. Все результаты были проверены на точность коэффициентов пересчета.
  • fpGUI DocView INF файл справки Зритель , который в настоящее время работает на Windows, [2] Linux и FreeBSD. INF - это формат справки по умолчанию для fpGUI, а также формат справки, используемый в OS / 2 (а также eComStation и ArcaOS ).
  • Free Pascal Testing Framework
    Кросс-платформенная среда модульного тестирования с консолью и средством запуска тестов с графическим интерфейсом.

См. Также [ править ]

  • Lazarus (программное обеспечение)
  • Набор инструментов для виджетов
  • Qt
  • wxWidgets
  • GTK +
  • Набор инструментов FOX
  • ФЛТК

Ссылки [ править ]

  1. ^ «Блоги Trolltech Labs» Qt, захваченный пришельцами - конец всякому мерцанию » . Архивировано из оригинала на 2010-03-03 . Проверено 8 марта 2008 .
  2. ^ В отличие от старых 16-битных IPF .inf/.hlp просмотрщиков, DocView можно использовать в 64-битной Windows

Внешние ссылки [ править ]

  • официальный сайт fpGUI Toolkit
  • Страница проекта SourceForge.net от fpGUI
  • Бесплатный компилятор Паскаля
  • Lazarus IDE