Below is a high-level summary of Fproped.pas, the Delphi unit in SWMM that defines the Property Editor form (TPropEditForm). This form hosts a TPropEdit component that behaves like an "object inspector," allowing users to edit properties of SWMM data objects in a grid-based interface.
1. Purpose
Fproped.pas implements TPropEditForm, a specialized form that:
- Displays object properties in a two-column grid (property name vs. property value).
- Supports editing, validating, and providing help/hints for each property.
- Manages additional dialogues when a property requires deeper editing (e.g., time series, curves, infiltration parameters, etc.).
2. TPropEditForm: Key Elements and Behaviors
-
TPropEdit Component:
- Placed at runtime onto TPropEditForm.
- Columns:
- Property (read-only, descriptive name).
- Value (editable, user input).
- Tracks each property’s data type, default/edit style (e.g., numeric, combo list, file name, comment, etc.).
- Has special event handlers for:
- OnButtonClick: opens supplementary dialogs (time series editor, curve editor, etc.).
- OnValidate: checks correctness of user input.
- OnRowSelect: updates hint label describing the selected property.
-
Form Lifecycle:
- FormCreate: Instantiates the TPropEdit component, sets styling, event handlers, parent layout, etc.
- FormDeactivate: Ensures last property edit is validated when user clicks away from the form.
- FormShow: Makes the form fully visible (especially on first activation).
- FormClose: Hides the form rather than destroys it.
-
Editing Specialized Properties:
- When user clicks the ellipsis button on a property, the
ButtonClick
event routes to specialized edit dialogs:- Time series
- Rain file name
- Curve (e.g., Pump curve, Rating curve, Tidal curve)
- Infiltration
- Groundwater
- Snowpack
- LID usage
- Initial loadings
- Node inflows / Pollutant treatment
- Conduit cross-section
- Storage curve
- Label font
- etc.
- When user clicks the ellipsis button on a property, the
-
Validation:
- The
OnValidate
handler calls Uvalidate.ValidateEditor to check if a typed-in property value is valid (numeric range checks, permissible values, etc.). - If invalid, displays an error message and reverts focus to the property.
- The
-
Hints:
- A small text label (
HintLabel
) shows context-sensitive help text about the selected property row. RefreshPropertyHint
is invoked after property changes or data refreshes.
- A small text label (
-
Navigation:
- The user can navigate between items in the same object category (e.g., Subcatch #5 to Subcatch #6) via
PageUp/PageDown
keystrokes. F1
triggers context-sensitive help for the active object type.
- The user can navigate between items in the same object category (e.g., Subcatch #5 to Subcatch #6) via
-
Integration:
- The form is typically hidden unless an object is being edited.
- After user changes a property,
HasChanged
in main form is set so that SWMM knows data were modified. - Some property edits can invoke deeper sub-dialogs (e.g., infiltration, LID usage, or cross-section shape editors).
3. Summary
Within Fproped.pas, TPropEditForm centralizes property editing for SWMM objects by providing a TPropEdit grid-based property list. Custom logic in ButtonClick
and OnValidate
extends standard data entry, launching specialized dialogs or validating user input. The form also manages help hints and keyboard navigation (like PgUp/PgDown). Its integrated design ensures any changes are immediately recognized by SWMM and can trigger more advanced configuration dialogs when necessary.
No comments:
Post a Comment