Bo Berglund schrieb:

What is a "widget" and how does it relate to my aim of making a
cross-platform program?

IMO widgets are visual components, provided and managed by a "widgetset" library. Many OS (except Linux/Unix) have native widgetsets, and allow for user installable widgetsets as well (Qt, gtk...). The LCL tries to provide an interface that works with arbitrary widgetsets - as far as a concrete widgetset is compatible with that interface. All LCL widgets inherit from TWinControl.

There exist other widgetsets that are pure FPC/LCL (fpgui, msegui).

Forms are special widgets, usually managed by a window manager. The window manager is platform specific and can not be replaced. The *appearance* of forms (and other widgets) can be configured by themes, so that most users don't recognize the existence of an window manager. Nonetheless the window manager dictates the behaviour of forms, and implements a taskbar (if available), and a notification system for events (mouse clicks...).

So we have a hierarchy of managers (or libraries):

graphics library (all drawing, fonts, themes)
  window manager (screen management, standard dialogs, taskbar, menus)
    widgetset (provides and manages widgets = TWinControl)
      LCL (also provides unmanaged controls = TGraphicControl)

IOW the frame of every window/form (non-client area) is managed by the window manager, while its content (client area) is under control of the application. An application can paint the client area itself, and/or it can use widgets or other controls for content presentation, as e.g. provided by the LCL, VCL, CLX...

DoDi


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to