Jump to content

fpGUI

(Перенаправлено с Fpgui )
fpGUI
Стабильная версия
v1.4.1 / 2 сентября 2015 г .; 8 лет назад ( 2015-09-02 )
Предварительный выпуск
- / -
Репозиторий
Написано в Объектный Паскаль
Операционная система Unix / Linux / BSD ( X11 ), Windows , OpenSolaris , ARM-Linux и WinCE. Устройства
Тип Набор инструментов для виджетов
Лицензия LGPL с исключением статической привязки
Веб-сайт fpgui .sourceforge .сеть

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

fpGUI состоит только из графических виджетов или компонентов и кроссплатформенной библиотеки 2D-рисования. Он не реализует уровни базы данных, 3D-графику, анализаторы 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 был полностью переписан. Прошлый опыт очень помог и были реализованы новые дизайнерские идеи. База кода оказалась намного проще и с более чистым дизайном. Одним из основных изменений было то, что все виджеты теперь имели многоканальный (оконный) дизайн. Каждый виджет теперь имеет дескриптор окна. Другими наборами инструментов графического пользовательского интерфейса, которые имеют схожий дизайн, являются GTK , Xt и FLTK, и это лишь некоторые из них. Наборы инструментов GUI, которые имеют противоположный дизайн, представляют собой наборы инструментов, подобные последнему Qt. [1] и MSEgui.

Пример программы

[ редактировать ]

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

program stdimglist;

{$mode objfpc}{$H+}

uses
  Classes, SysUtils,
  fpg_base, fpg_main, fpg_form, fpg_imgfmt_bmp, fpg_button;

type

  TMainForm = class(TfpgForm)
  private
    btnClose: TfpgButton;
    procedure   btnCloseClick(Sender: TObject);
  protected
    procedure   HandlePaint; override;
  public
    constructor Create(aowner: TComponent); override;
    procedure   AfterCreate; override;
  end;

{ TMainForm }

procedure TMainForm.AfterCreate;
begin
  SetPosition(100,100,700,500);
  WindowTitle := 'fpGUI Standard Image Listing';
  // Place button in bottom right corner.
  btnClose := CreateButton(self, Width-90, Height-35, 75, 'Quit', @btnCloseClick);
  btnClose.ImageName := 'stdimg.quit';
  btnClose.Anchors := [anRight, anBottom];
end;

procedure TMainForm.btnCloseClick(Sender: TObject);
begin
  Close;
end;

procedure TMainForm.HandlePaint;
var
  n: integer;
  x: TfpgCoord;
  y: TfpgCoord;
  sl: TStringList;
  img: TfpgImage;
begin
  Canvas.BeginDraw; // begin double buffering
  inherited HandlePaint;

  sl  := TStringList.Create;
  x   := 8;
  y   := 8;
  fpgImages.ListImages(sl);
  
  for n := 0 to sl.Count-1 do
  begin
    Canvas.DrawString(x, y, sl[n]+':');
    
    img := TfpgImage(sl.Objects[n]);
    if img <> nil then
      Canvas.DrawImage(x+130, y, img);

    inc(y, img.Height+8);
    if y > Height-32 then // largest images are 32 in height
    begin
      inc(x, 200);
      y := 8;
    end;
  end;

  Canvas.EndDraw;
  sl.Free;
end;

constructor TMainForm.Create(aowner: TComponent);
begin
  inherited Create(aowner);
(* PRIOR TO v1.4:
  // Place button in bottom right corner.
  btnClose := CreateButton(self, Width-90, Height-35, 75, 'Quit', @btnCloseClick);
  btnClose.ImageName := 'stdimg.quit';
  btnClose.Anchors := [anRight, anBottom];
*)
end;

procedure MainProc;
var
  frm : TMainForm;
begin
  fpgApplication.Initialize;
  frm := TMainForm.Create(nil);
  try
    frm.Show;
    fpgApplication.Run;
  finally
    frm.Free;
  end;
end;

begin
  MainProc;
end.

Вот скриншот вышеуказанной программы при запуске под Linux.

Лицензирование

[ редактировать ]

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

Программное обеспечение, написанное с использованием fpGUI

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

См. также

[ редактировать ]
  1. ^ «Блоги Trolltech Labs » Qt, захваченный инопланетянами — конец мерцанию» . Архивировано из оригинала 3 марта 2010 г. Проверено 8 марта 2008 г.
  2. ^ В отличие от старого 16-битного IPF .inf/ .hlp средства просмотра DocView можно использовать в 64-битной Windows.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 23fd8a4863e6794b072d751ee5189428__1644656760
URL1:https://arc.ask3.ru/arc/aa/23/28/23fd8a4863e6794b072d751ee5189428.html
Заголовок, (Title) документа по адресу, URL1:
fpGUI - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)