Age | Commit message (Collapse) | Author |
|
- Also made the various xxxDraw methods virtual and moved them to the
protected section. So they can be overridden in descendants if needed.
- Fixed the default color value of the Color property. The value stored
in RTTI was different to the actual value assigned in the constructor.
|
|
|
|
|
|
|
|
|
|
|
|
The HandlePaint() method is already wrapping with BeginDraw/EndDraw
calls in the TfpgWidget class.
|
|
|
|
This drastically improves performance, if you have some code that
iterates and updates all nodes.
|
|
|
|
This now makes it easier to reuse this border style declaration in other
widgets. We need to refactor some other widgets too, that have there own
border styles as well.
|
|
We can now pass in the Lines property of a Memo or Combobox directly,
without the need of an extra local TStrings variable.
|
|
|
|
This work equates to about 3 hours of coding. Not bad I think! ;-)
The general idea is to have to new classes. The MDIWorkArea class is the
parent widget form MDI child forms. We then also have a MDIChildWindow
class which implements the outer child window - thus the one with the
titlebar and blue borders.
The end use creates a form based on TfpgFrame, not TfpgWindow. This design
might change later. The users form is then embedded inside the MDIChildWindow,
and displayed inside the bounds of the MDIWorkArea.
|
|
|
|
|
|
It wasn't always desireable for DumpStack to output to the console, because
it doesn't always exist, and the user will normally not see it if app is
launched from a icon.
We can now output that info to a stringlist, and display it to the end-user
in whatever way we want.
|
|
|
|
selection
The text was right on the left edge of the focus selection rectangle. Now
it is evenly spaced with 2px margin on each side.
|
|
For now, please use Node.Count instead.
|
|
value.
|
|
example)
- Added StateImageList to TfpgTreeview
- Added StateImageIndex to TfpgTreeNode
- Added OnStateImageClicked event for TfpgTreeview.
- Reworked the TfpgTreeview.HandlePaint() method for the new functionality,
and also removed all the code duplication that existed before.
- The node selection rectangle now only cover the text portion of a node, and
note the images related to that node.
- Minor bugfix in the selection rectangle, when depending on various
properties, the selection rectangle was too small, and the node text
wasn't fully visible.
|
|
We can now use the fpGUI's Debug Server to monitor any debug events.
|
|
|
|
|
|
- We can new set an initial UserID too.
- Moved two TfpgEdit components to protected section.
|
|
|
|
|
|
|
|
|
|
|
|
This doesn't have any affect under Linux, but it might under Windows.
|
|
|
|
|
|
- also updated the translation include files. ready for translation.
|
|
|
|
|
|
We incorrectly set the consumed variable, and called inherited
unnecessarily. This is now improved.
|
|
Before the menu only used to process the Alt+<key> events for the
mainmenu bar (top level menus). Now we recursively run through all menu
items looking for a hotkey match.
|
|
This is done because DoKeyShortcut() clearly says what it does. It only
processes keyboard shortcut events.
|
|
|
|
|
|
processing order is now as follows;
- widget that keypress occured it trys to handle the event.
- then to keyboard shortcut processing for the widget's children
- then work back towards the top-level form giving chance for
keyboard navigation (tabstop) processing. eg: pressing Tab key
- then let the top level form to keyboard shortcut processing
eg: allowing MainMenu to process the event.
- then allow the top level for to process OnKeyPress if such an
event handler is implemented.
- then if the top level form is not the MainForm, and the current
top level form is not shown model, allow the application.mainform
to process the keyshortcut in it's main menu.
|
|
This is similar to HandleKeyPress() but takes into account the original
widget that started the process, so it doesn't process that widget or its
children twice.
|
|
In KeycodeToText(), 'Shift+' came before Ctrl or Alt. This is not normal
practice, so I moved it.
|
|
This is a UI Designer friendly component that allows you to embed frames
"Windows" inside other windows.
|
|
- Renamed the timer field variable from T_Chrono to FTimer.
- Renamed the OnTimer event handler from T_ChronoFini to HintTimerFired
- Disabled the timer *before* hinding the hint window. This prevents
those add AV's that occur when you close an application.
- No need to explicityl disable the timer in HintWindow destructor.
When you free a timer, it automatically gets disabled.
|
|
Now the internal blink timer only gets activating when a Canvas is assigned.
|
|
|
|
I was clearly smoking something that day! Anyway, the GDI timer is now
correctly implemented, and doesn't push up the CPU load any more. No matter
how long the timer runs for. The timer is much more accurate/consistent in
firing as well. :-)
|