Class TfrmScreenObjectProperties

DescriptionHierarchyFieldsMethodsProperties

Unit

Declaration

type TfrmScreenObjectProperties = class(TfrmCustomGoPhast)

Description

TfrmScreenObjectProperties is used to edit one or more TScreenObjects.

When a TScreenObject is first created, GetData is called to read the TScreenObject properties and TfrmScreenObjectProperties.SetData is called to set the TScreenObject properties. When one or more TScreenObjects are being edited, GetDataForMultipleScreenObjects is called to read the data and SetMultipleScreenObjectData is called to set the TScreenObject properties.

Hierarchy

Overview

Fields

Published btnCancel: TBitBtn;
Published btnFillColor: TButton;
Published btnHelp: TBitBtn;
Published btnHighZ: TButton;
Published btnLeakyHydraulicConductivity: TButton;
Published btnLeakyThickness: TButton;
Published btnLineColor: TButton;
Published btnLowZ: TButton;
Published btnOK: TBitBtn;
Published btnRiverBedThickness: TButton;
Published btnRiverDepth: TButton;
Published btnRiverHydraulicConductivity: TButton;
Published btnRiverWidth: TButton;
Published btnZ: TButton;
Published cbEnclosedCells: TCheckBox;
Published cbFillColor: TCheckBox;
Published cbInterpolation: TCheckBox;
Published cbIntersectedCells: TCheckBox;
Published cbLineColor: TCheckBox;
Published cbSetGridCellSize: TCheckBox;
Published cbWellPumpAllocation: TCheckBox;
Published coldlgColors: TColorDialog;
Published comboSolutionType: TComboBox;
Published comboWellIntervalStyle: TComboBox;
Published dgBoundaryFlux: TRbwDataGrid;
Published dgBoundaryLeaky: TRbwDataGrid;
Published dgBoundaryRiver: TRbwDataGrid;
Published dgDataSets: TRbwDataGrid;
Published dgSpecifiedHead: TRbwDataGrid;
Published dgVerticies: TRbwDataGrid;
Published dgWell: TRbwDataGrid;
Published dgWellElevations: TRbwDataGrid;
Published edHighZ: TEdit;
Published edLeakyHydraulicConductivity: TEdit;
Published edLeakyThickness: TEdit;
Published edLowZ: TEdit;
Published edName: TEdit;
Published edRiverBedThickness: TEdit;
Published edRiverDepth: TEdit;
Published edRiverDescripton: TEdit;
Published edRiverHydraulicConductivity: TEdit;
Published edRiverWidth: TEdit;
Published edWellDescription: TEdit;
Published edZ: TEdit;
Published framePhastInterpolationBoundaries: TframePhastInterpolation;
Published framePhastInterpolationData: TframePhastInterpolation;
Published gbBoundaryPhastInterpolation: TGroupBox;
Published gbPhastInterpolation: TGroupBox;
Published lblBoundaryTimes: TLabel;
Published lblGridCellSize: TLabel;
Published lblHighZ: TLabel;
Published lblLeakyHydraulicConductivity: TLabel;
Published lblLeakyThickness: TLabel;
Published lblLowZ: TLabel;
Published lblName: TLabel;
Published lblNames: TLabel;
Published lblRiverBedThickness: TLabel;
Published lblRiverDepth: TLabel;
Published lblRiverDescripton: TLabel;
Published lblRiverHydraulicConductivity: TLabel;
Published lblRiverWidth: TLabel;
Published lblSolutionType: TLabel;
Published lblWellDescription: TLabel;
Published lblWellDiameter: TLabel;
Published lblWellIntervals: TLabel;
Published lblWellIntervalStyle: TLabel;
Published lblWellLandSurfaceDatum: TLabel;
Published lblZ: TLabel;
Published memoNames: TMemo;
Published pageBoundaries: TPageControl;
Published pageMain: TPageControl;
Published pnlBottom: TPanel;
Published pnlBoundaries: TPanel;
Published pnlLeaky: TPanel;
Published pnlRiver: TPanel;
Published pnlSolutionType: TPanel;
Published pnlWellBoundary: TPanel;
Published rdeGridCellSize: TRbwDataEntry;
Published rdeWellDiameter: TRbwDataEntry;
Published rdeWellLandSurfaceDatum: TRbwDataEntry;
Published rgBoundaryType: TRadioGroup;
Published rgElevationCount: TRadioGroup;
Published rgEvaluatedAt: TRadioGroup;
Published rparserFrontFormulaElements: TRbwParser;
Published rparserFrontFormulaNodes: TRbwParser;
Published rparserSideFormulaElements: TRbwParser;
Published rparserSideFormulaNodes: TRbwParser;
Published rparserThreeDFormulaElements: TRbwParser;
Published rparserThreeDFormulaNodes: TRbwParser;
Published rparserTopFormulaElements: TRbwParser;
Published rparserTopFormulaNodes: TRbwParser;
Published seBoundaryTimes: TSpinEdit;
Published seWellIntervals: TSpinEdit;
Published shpFillColor: TShape;
Published shpLineColor: TShape;
Published splitterBoundary: TSplitter;
Published splitterWell: TSplitter;
Published tabBoundaries: TTabSheet;
Published tabBoundaryFlux: TTabSheet;
Published tabBoundaryLeaky: TTabSheet;
Published tabBoundaryNone: TTabSheet;
Published tabBoundaryRiver: TTabSheet;
Published tabBoundarySpecifiedHead: TTabSheet;
Published tabBoundaryWell: TTabSheet;
Published tabDataSets: TTabSheet;
Published tabNodes: TTabSheet;
Published tabProperties: TTabSheet;
Private FBoundaryChanged: array[btSpecifiedHead..btWell] of boolean;
Private FBoundaryCol: integer;
Private FBoundaryGrid: TRbwDataGrid;
Private FBoundaryPhastInterpolationList: TObjectList;
Private FBoundaryRow: integer;
Private FChangeName: boolean;
Private FDataSetList: TList;
Private FDataSetsNeedUpdating: array of boolean;
Private FDataSetsUsed: array of boolean;
Private FFillColor: boolean;
Private FFormulaChanged: array of boolean;
Private FHighZFormula: TExpression;
Private FInitialWidth: integer;
Private FInterpolatedCells: boolean;
Private FInterpValuesList: TObjectList;
Private FLoaded: boolean;
Private FLowZFormula: TExpression;
Private FMultipleScreenObjects: boolean;
Private FNewUsedBy: TObjectList;
Private FObjectLine: boolean;
Private FOldMixFormula: string;
Private FPhastDistance1Changed: array of boolean;
Private FPhastDistance2Changed: array of boolean;
Private FPhastInterpolationDirectionChanged: array of boolean;
Private FPhastMixtureFormulaChanged: array of boolean;
Private FPhastValue1Changed: array of boolean;
Private FPhastValue2Changed: array of boolean;
Private FPriorCol: integer;
Private FPriorModelUpToDate: boolean;
Private FPriorRow: integer;
Private FScreenObject: TScreenObject;
Private FScreenObjectList: TList;
Private FSelectedRow: integer;
Private FSelectingCell: boolean;
Private FSetCellsColor: boolean;
Private FSetCellSize: boolean;
Private FSetCellSizeUsed: boolean;
Private FSetElevationCount: boolean;
Private FSetEvaluatedAt: boolean;
Private FSetFillColor: boolean;
Private FSetHeadSolutionType: boolean;
Private FSetHighZ: boolean;
Private FSetLeakyHydraulicConductivity: boolean;
Private FSetLeakyThickness: boolean;
Private FSetLowZ: boolean;
Private FSetObjectLine: boolean;
Private FSetRiverBedThickness: boolean;
Private FSetRiverDepth: boolean;
Private FSetRiverDescription: boolean;
Private FSetRiverHydraulicConductivity: boolean;
Private FSetRiverWidth: boolean;
Private FSetWellAllocation: boolean;
Private FSetWellDescription: boolean;
Private FSetWellDiameter: boolean;
Private FSetWellIntervalFormat: boolean;
Private FSetWellIntervals: boolean;
Private FSetWellLandSurfaceDatum: boolean;
Private FSetZ: boolean;
Private FSet_SetPropertiesOfEnclosedCells: boolean;
Private FSet_SetPropertiesOfIntersectedCells: boolean;
Private FShouldValidate: boolean;
Private FUndoSetScreenObjectProperties: TUndoSetScreenObjectProperties;
Private FUsePhastInterpolationChanged: array of boolean;
Private FVariableList: TList;
Private FViewDirection: TViewDirection;
Private FZFormula: TExpression;

Methods

Published procedure btnCancelClick(Sender: TObject);
Published procedure btnColorClick(Sender: TObject);
Published procedure btnFormulaClick(Sender: TObject);
Published procedure btnOKClick(Sender: TObject);
Published procedure cbEnclosedCellsClick(Sender: TObject);
Published procedure cbFillColorClick(Sender: TObject);
Published procedure cbInterpolationClick(Sender: TObject);
Published procedure cbIntersectedCellsClick(Sender: TObject);
Published procedure cbLineColorClick(Sender: TObject);
Published procedure cbSetGridCellSizeClick(Sender: TObject);
Published procedure cbWellPumpAllocationClick(Sender: TObject);
Published procedure comboSolutionTypeChange(Sender: TObject);
Published procedure comboWellIntervalStyleChange(Sender: TObject);
Published procedure dgBoundaryButtonClicked(Sender: TObject; ACol, ARow: Integer; const Value: WideString);
Published procedure dgBoundaryDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
Published procedure dgBoundaryRowMoving(Sender: TObject; const Origin, Destination: Integer; var CanMove: Boolean);
Published procedure dgBoundarySelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
Published procedure dgBoundarySetEditText(Sender: TObject; ACol, ARow: Integer; const Value: WideString);
Published procedure dgBoundaryStateChanged(Sender: TObject; ACol, ARow: Integer; const Value: TCheckBoxState);
Published procedure dgDataSetsButtonClicked(Sender: TObject; ACol, ARow: Integer; const Value: WideString);
Published procedure dgDataSetsDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
Published procedure dgDataSetsExit(Sender: TObject);
Published procedure dgDataSetsSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
Published procedure dgDataSetsSetEditText(Sender: TObject; ACol, ARow: Integer; const Value: WideString);
Published procedure dgDataSetsStateChanged(Sender: TObject; ACol, ARow: Integer; const Value: TCheckBoxState);
Published procedure dgVerticiesSetEditText(Sender: TObject; ACol, ARow: Integer; const Value: WideString);
Published procedure dgWellElevationsSetEditText(Sender: TObject; ACol, ARow: Integer; const Value: WideString);
Published procedure ed2ZExit(Sender: TObject);
Published procedure edHighZChange(Sender: TObject);
Published procedure edLeakyHydraulicConductivityChange(Sender: TObject);
Published procedure edLeakyThicknessChange(Sender: TObject);
Published procedure edLowZChange(Sender: TObject);
Published procedure edNameChange(Sender: TObject);
Published procedure edNameExit(Sender: TObject);
Published procedure edRiverBedThicknessChange(Sender: TObject);
Published procedure edRiverDepthChange(Sender: TObject);
Published procedure edRiverDescriptonChange(Sender: TObject);
Published procedure edRiverHydraulicConductivityChange(Sender: TObject);
Published procedure edRiverWidthChange(Sender: TObject);
Published procedure edWellDescriptionChange(Sender: TObject);
Published procedure edZChange(Sender: TObject);
Published procedure edZExit(Sender: TObject);
Published procedure FormCreate(Sender: TObject); override;
Published procedure FormDestroy(Sender: TObject);
Published procedure FormResize(Sender: TObject);
Published procedure framePhastInterpolationBoundariescbPhastInterpolationClick(Sender: TObject);
Published procedure framePhastInterpolationBoundariesedMixFormulaExit( Sender: TObject);
Published procedure framePhastInterpolationBoundariesrdeChange(Sender: TObject);
Published procedure framePhastInterpolationBoundariesrdeDistance1Exit(Sender: TObject);
Published procedure framePhastInterpolationBoundariesrdeDistance2Exit(Sender: TObject);
Published procedure framePhastInterpolationBoundariesrdeValue1Exit(Sender: TObject);
Published procedure framePhastInterpolationBoundariesrdeValue2Exit(Sender: TObject);
Published procedure framePhastInterpolationBoundariesrgInterpolationDirectionClick( Sender: TObject);
Published procedure framePhastInterpolationDatabtnEditMixtureFormulaClick( Sender: TObject);
Published procedure framePhastInterpolationDatacbPhastInterpolationClick(Sender: TObject);
Published procedure framePhastInterpolationDataedMixFormulaEnter( Sender: TObject);
Published procedure framePhastInterpolationDataedMixFormulaExit(Sender: TObject);
Published procedure framePhastInterpolationDatardeDistance1Exit(Sender: TObject);
Published procedure framePhastInterpolationDatardeDistance2Exit(Sender: TObject);
Published procedure framePhastInterpolationDatardeValue1Exit(Sender: TObject);
Published procedure framePhastInterpolationDatardeValue2Exit(Sender: TObject);
Published procedure framePhastInterpolationDatargInterpolationDirectionClick(Sender: TObject);
Published procedure pageBoundariesChange(Sender: TObject);
Published procedure pageMainChange(Sender: TObject);
Published procedure rdeGridCellSizeChange(Sender: TObject);
Published procedure rdeWellDiameterChange(Sender: TObject);
Published procedure rdeWellLandSurfaceDatumChange(Sender: TObject);
Published procedure rgBoundaryTypeClick(Sender: TObject);
Published procedure rgElevationCountClick(Sender: TObject);
Published procedure rgEvaluatedAtClick(Sender: TObject);
Published procedure seBoundaryTimesChanged(Sender: TObject; NewValue: Integer);
Published procedure seWellIntervalsChanged(Sender: TObject; NewValue: Integer);
Published procedure splitterBoundaryMoved(Sender: TObject);
Private procedure SetMultipleScreenObjects(const Value: boolean);
Private procedure AssignBoundary(const Grid: TRbwDataGrid; const ExpressionCol, InterpolationCol, Row: integer; const Time: double; const Boundary: TCustomPhastBoundaryCollection);
Private function BoundaryIsIdentical(const Grid: TRbwDataGrid; const UsedTimes: TRealList; const Boundary: TCustomPhastBoundaryCollection; const ExpressionCol, PhastInterpolateCol: integer): boolean;
Private procedure CheckForCircularReference(const Expression: TExpression; const DSetName: string; const ACol, ARow: integer; const OldFormulaOK: boolean; const OldFormula: string);
Private procedure CheckForCircularReferencesInMixtureFormulas( var Expression: TExpression; const DSName, OldFormula: string; const ARow: integer);
Private procedure CreateBoundaryFormula(const DataGrid: TRbwDataGrid; const ACol, ARow: integer; Formula: string; const Orientation: TDataSetOrientation; const EvaluatedAt: TEvaluatedAt);
Private procedure CreateFormula(const Row, DataSetIndex: integer; const ShowError: boolean = True);
Private function CreateMixtureFormula(const DataSetIndex: integer): TExpression;
Private procedure CreateVariable(const Index: integer);
Private procedure EnableOK_Button;
Private function GetBoundaryTime(const Grid: TRbwDataGrid; const Col, Row: integer; out Time: double): boolean;
Private procedure GetBoundaryTimes( const Boundaries: array of TCustomPhastBoundaryCollection; const Times: TRealList);
Private function GetCompiler(const Orientation: TDataSetOrientation; const EvaluatedAt: TEvaluatedAt): TRbwParser;
Private function GetCompilerByIndex(const Index: integer): TRbwParser;
Private function GetDataSetIndexByName(const DataSetName: string): integer;
Private function GetDataSetOrientations( const Index: integer): TDataSetOrientation;
Private function GetDataSets(const Index: integer): TDataArray;
Private function GetElevationCompiler: TRbwParser;
Private function GetExpression(const Row: integer): TExpression;
Private function GetResultType(const Index: integer): TRbwDataType;
Private function GetVariables(const Index: integer): TCustomVariable;
Private procedure InitializeArrays;
Private procedure InitilizeControls;
Private procedure InitilizeGridObjects;
Private procedure ResetFluxGrid;
Private procedure ResetLeakyGrid;
Private procedure ResetRiverGrid;
Private procedure ResetSpecifiedHeadGrid;
Private procedure ResetWellElevationGrid;
Private procedure ResetWellGrid;
Private function RowToDataSetIndex(const ARow: integer): integer;
Private procedure SelectBoundaryCell;
Private procedure SetBoundaryChanged(const Sender: TObject);
Private procedure SetCheckBoxCaptions;
Private procedure SetData;
Private procedure SetDataSets(const Index: integer; const Value: TDataArray);
Private procedure SetFloatProperty(const NewValue: string; var SetValue: double; ShouldSetNewValue: boolean; var NewValueSet: boolean);
Private procedure SetExpression(const Row: integer; const Value: TExpression);
Private procedure SetMultipleScreenObjectData;
Private procedure SetStringProperty(const NewValue: string; var SetValue: string; ShouldSetNewValue: boolean; var NewValueSet: boolean);
Private procedure SetVariables(const Index: integer; const Value: TCustomVariable);
Private function TimesIdentical(const Grid: TRbwDataGrid; const UsedTimes: TRealList; const TimeCol: integer): boolean;
Private procedure UpdateLinkages(const Expression: TExpression; const ARow: integer; const DSName: string);
Private procedure ValidateCellFormula(const ACol, ARow: integer);
Private procedure ValidateEdFormula(const Ed: TEdit);
Private procedure EmphasizeValueChoices;
Public procedure GetData(const AScreenObject: TScreenObject);
Public procedure GetDataForMultipleScreenObjects(const AScreenObjectList: TList);

Properties

Private property MultipleScreenObjects: boolean read FMultipleScreenObjects write SetMultipleScreenObjects;
Private property DataSets[const Index: integer]: TDataArray read GetDataSets write SetDataSets;
Private property Expressions[const Row: integer]: TExpression read GetExpression write SetExpression;
Private property Orientations[const Index: integer]: TDataSetOrientation read GetDataSetOrientations;
Private property Variables[const Index: integer]: TCustomVariable read GetVariables write SetVariables;
Public property UndoSetScreenObjectProperties: TUndoSetScreenObjectProperties read FUndoSetScreenObjectProperties write FUndoSetScreenObjectProperties;

Description

Fields

Published btnCancel: TBitBtn;

btnCancel: TBitBtn; Clicking btnCancel closes the TfrmScreenObjectProperties without changing anything. See btnCancelClick,

Published btnFillColor: TButton;

btnFillColor: TButton; btnFillColor is used to change the color used to draw the interior of TScreenObjects. See btnColorClick

Published btnHelp: TBitBtn;

btnHelp: TBitBtn; Clicking name displays help on the active page in pageMain.

Published btnHighZ: TButton;

btnHighZ: TButton; btnHighZ is used to edit the formula for the higher elevation in edHighZ. See btnFormulaClick.

Published btnLeakyHydraulicConductivity: TButton;

btnLeakyHydraulicConductivity: TButton; btnLeakyHydraulicConductivity is used to edit the formula for the leaky hydraulic conductivity in edLeakyHydraulicConductivity. See btnFormulaClick.

Published btnLeakyThickness: TButton;

btnLeakyThickness: TButton; btnLeakyThickness is used to edit the formula for the thickness of the leaky boundary in edLeakyThickness. See btnFormulaClick.

Published btnLineColor: TButton;

btnLineColor: TButton; btnLineColor is used to change the color used to draw the lines of TScreenObjects. See btnColorClick

Published btnLowZ: TButton;

btnLowZ: TButton; btnLowZ is used to edit the formula for the lower elevation in edLowZ. See btnFormulaClick.

Published btnOK: TBitBtn;

btnOK: TBitBtn; See btnOKClick.

Published btnRiverBedThickness: TButton;

btnRiverBedThickness: TButton; btnRiverBedThickness is used to edit the formula for the thickness of the bed in the river boundary in edRiverBedThickness. See btnFormulaClick.

Published btnRiverDepth: TButton;

btnRiverDepth: TButton; btnRiverDepth is used to edit the formula for the depth of the river in the river boundary in edRiverDepth. See btnFormulaClick.

Published btnRiverHydraulicConductivity: TButton;

btnRiverHydraulicConductivity: TButton; btnRiverHydraulicConductivity is used to edit the formula for the hydraulic conductivity of the river bed in the river boundary in edRiverHydraulicConductivity. See btnFormulaClick.

Published btnRiverWidth: TButton;

btnRiverWidth: TButton; btnRiverWidth is used to edit the formula for the width of the river in the river boundary in edRiverWidth. See btnFormulaClick.

Published btnZ: TButton;

btnZ: TButton; btnZ is used to edit the formula for the single elevation in edZ. See btnFormulaClick.

Published cbEnclosedCells: TCheckBox;

cbEnclosedCells: TCheckBox; cbEnclosedCells specifies whether the values of cells or elements enclosed by the TScreenObject will be set by the TScreenObject See cbEnclosedCellsClick.

Published cbFillColor: TCheckBox;

cbFillColor: TCheckBox; cbFillColor specifies whether the interior of TScreenObjects will be colored. See cbFillColorClick.

Published cbInterpolation: TCheckBox;

cbInterpolation: TCheckBox; cbInterpolation specifies whether the values of cells or elements will be set by interpolation using this TScreenObject. See cbInterpolationClick.

Published cbIntersectedCells: TCheckBox;

cbIntersectedCells: TCheckBox; cbIntersectedCells specifies whether the values of cells or elements intersected by the TScreenObject will be set by the TScreenObject See cbIntersectedCellsClick.

Published cbLineColor: TCheckBox;

cbLineColor: TCheckBox; cbLineColor specifies whether the lines of TScreenObjects will be colored. See cbLineColorClick.

Published cbSetGridCellSize: TCheckBox;

cbSetGridCellSize: TCheckBox; cbSetGridCellSize specifies whether this TScreenObject will be used to set the size of elements in the TPhastGrid. See cbSetGridCellSizeClick.

Published cbWellPumpAllocation: TCheckBox;

cbWellPumpAllocation: TCheckBox; cbWellPumpAllocation specifies whether the well boundary condition specified by this TScreenObject will allocate pumping by pressure and mobility. See cbWellPumpAllocationClick.

Published coldlgColors: TColorDialog;

coldlgColors: TColorDialog; coldlgColors is used in btnColorClick to pick a color for the lines or interior of TScreenObjects.

Published comboSolutionType: TComboBox;

comboSolutionType: TComboBox; comboSolutionType is used to specify whether the solution in a specified state boundary is a specified solution or an associated solution. See comboSolutionTypeChange.

Published comboWellIntervalStyle: TComboBox;

comboWellIntervalStyle: TComboBox; comboWellIntervalStyle specifies whether the open intervals in a well boundary are specified in terms of absolute elevation or depth below a datum. See comboWellIntervalStyleChange.

Published dgBoundaryFlux: TRbwDataGrid;

dgBoundaryFlux: TRbwDataGrid; dgBoundaryFlux specifies the time-varying property of a flux boundary. See dgBoundaryButtonClicked, dgBoundaryDrawCell, dgBoundaryRowMoving, dgBoundarySelectCell, dgBoundarySetEditText, and dgBoundaryStateChanged.

Published dgBoundaryLeaky: TRbwDataGrid;

dgBoundaryLeaky: TRbwDataGrid; dgBoundaryLeaky specifies the time-varying property of a leaky boundary. See dgBoundaryButtonClicked, dgBoundaryDrawCell, dgBoundaryRowMoving, dgBoundarySelectCell, dgBoundarySetEditText, and dgBoundaryStateChanged.

Published dgBoundaryRiver: TRbwDataGrid;

dgBoundaryRiver: TRbwDataGrid; dgBoundaryRiver specifies the time-varying property of a river boundary. See dgBoundaryButtonClicked, dgBoundaryDrawCell, dgBoundaryRowMoving, dgBoundarySelectCell, dgBoundarySetEditText, and dgBoundaryStateChanged.

Published dgDataSets: TRbwDataGrid;

dgDataSets: TRbwDataGrid; dgDataSets specifies the TDataArrays that will be used with this TScreenObject. See dgDataSetsButtonClicked, dgDataSetsDrawCell, dgDataSetsExit, dgDataSetsSelectCell, dgDataSetsSetEditText, and dgDataSetsStateChanged.

Published dgSpecifiedHead: TRbwDataGrid;

dgSpecifiedHead: TRbwDataGrid; dgSpecifiedHead specifies the time-varying property of a specified-head boundary. See dgBoundaryButtonClicked, dgBoundaryDrawCell, dgBoundaryRowMoving, dgBoundarySelectCell, dgBoundarySetEditText, and dgBoundaryStateChanged.

Published dgVerticies: TRbwDataGrid;

dgVerticies: TRbwDataGrid; dgVerticies holds the locations of the vertices of this TScreenObject. See dgVerticiesSetEditText.

Published dgWell: TRbwDataGrid;

dgWell: TRbwDataGrid; dgWell specifies the time-varying property of a well boundary. See dgBoundaryButtonClicked, dgBoundaryDrawCell, dgBoundaryRowMoving, dgBoundarySelectCell, dgBoundarySetEditText, and dgBoundaryStateChanged.

Published dgWellElevations: TRbwDataGrid;

dgWellElevations: TRbwDataGrid; dgWellElevations specifies the open intervals in the Well boundary See dgWellElevationsSetEditText.

Published edHighZ: TEdit;

edHighZ: TEdit; edHighZ holds the formula for the higher elevation formula. See edHighZChange and ed2ZExit. See btnHighZ and btnFormulaClick.

Published edLeakyHydraulicConductivity: TEdit;

edLeakyHydraulicConductivity: TEdit; edLeakyHydraulicConductivity holds the formula for the hydraulic conductivity of a leaky boundary. See edLeakyHydraulicConductivityChange and btnLeakyHydraulicConductivity.

Published edLeakyThickness: TEdit;

edLeakyThickness: TEdit; edLeakyThickness holds the formula for the thickness of a leaky boundary. See edLeakyThicknessChange and btnLeakyThickness.

Published edLowZ: TEdit;

edLowZ: TEdit; edLowZ holds the formula for the lower of two elevations. See edLowZChange, ed2ZExit, and btnLowZ and btnFormulaClick.

Published edName: TEdit;

edName: TEdit; edName holds the name of the TScreenObject. See edNameChange and edNameExit.

Published edRiverBedThickness: TEdit;

edRiverBedThickness: TEdit; edRiverBedThickness holds the formula for the thickness of a river boundary. See edRiverBedThicknessChange and btnRiverBedThickness.

Published edRiverDepth: TEdit;

edRiverDepth: TEdit; edRiverDepth holds the formula for the depth of a river boundary. See edRiverDepthChange and btnRiverDepth.

Published edRiverDescripton: TEdit;

edRiverDescripton: TEdit; edRiverDescripton holds the the name of a river boundary. See edRiverDescriptonChange.

Published edRiverHydraulicConductivity: TEdit;

edRiverHydraulicConductivity: TEdit; edRiverHydraulicConductivity holds the formula for the hydraulic conductivity of a river boundary. See edRiverHydraulicConductivityChange and btnRiverHydraulicConductivity.

Published edRiverWidth: TEdit;

edRiverWidth: TEdit; edRiverWidth holds the formula for the width of a river boundary. See edRiverWidthChange and btnRiverWidth.

Published edWellDescription: TEdit;

edWellDescription: TEdit; edWellDescription holds the the name of a well boundary. See edWellDescriptionChange.

Published edZ: TEdit;

edZ: TEdit; edZ holds the formula for a single elevation. See edZChange, edZExit, and btnZ and btnFormulaClick.

Published framePhastInterpolationBoundaries: TframePhastInterpolation;

framePhastInterpolationBoundaries: TframePhastInterpolation; framePhastInterpolationBoundaries is used to specify PHAST-style interpolation for boundary conditions. See TPhastInterpolationValues.

Published framePhastInterpolationData: TframePhastInterpolation;

framePhastInterpolationData: TframePhastInterpolation; framePhastInterpolationData is used to specify PHAST-style interpolation for TDataArrays. See TPhastInterpolationValues.

Published gbBoundaryPhastInterpolation: TGroupBox;

gbBoundaryPhastInterpolation: TGroupBox; gbBoundaryPhastInterpolation holds and labels framePhastInterpolationBoundaries.

Published gbPhastInterpolation: TGroupBox;

gbPhastInterpolation: TGroupBox; gbPhastInterpolation holds and labels framePhastInterpolationData.

Published lblBoundaryTimes: TLabel;

lblBoundaryTimes: TLabel; lblBoundaryTimes displays "Number of times".

Published lblGridCellSize: TLabel;

lblGridCellSize: TLabel; lblGridCellSize displays "Grid element size".

Published lblHighZ: TLabel;

lblHighZ: TLabel; lblHighZ displays "Higher X-coordinate", "Higher Y-coordinate", or "Higher Z-coordinate". The text is changed in GetData depending the the TScreenObject.ViewDirection.

Published lblLeakyHydraulicConductivity: TLabel;

lblLeakyHydraulicConductivity: TLabel; lblLeakyHydraulicConductivity displays "Hydraulic Conductivity".

Published lblLeakyThickness: TLabel;

lblLeakyThickness: TLabel; lblLeakyThickness displays "Thickness".

Published lblLowZ: TLabel;

lblLowZ: TLabel; lblLowZ displays "Lower X-coordinate", "Lower Y-coordinate", or "Lower Z-coordinate". The text is changed in GetData depending the the TScreenObject.ViewDirection.

Published lblName: TLabel;

lblName: TLabel; lblName displays "Name". It labels edName.

Published lblNames: TLabel;

lblNames labels memoNames.

Published lblRiverBedThickness: TLabel;

lblRiverBedThickness: TLabel; lblRiverBedThickness displays "Bed Thickness".

Published lblRiverDepth: TLabel;

lblRiverDepth: TLabel; lblRiverDepth displays "Depth".

Published lblRiverDescripton: TLabel;

lblRiverDescripton: TLabel; lblRiverDescripton displays "Name".

Published lblRiverHydraulicConductivity: TLabel;

lblRiverHydraulicConductivity: TLabel; lblRiverHydraulicConductivity displays "Hydraulic Conductivity".

Published lblRiverWidth: TLabel;

lblRiverWidth: TLabel; lblRiverWidth displays "Width".

Published lblSolutionType: TLabel;

lblSolutionType: TLabel; lblSolutionType displays "Type of Solution".

Published lblWellDescription: TLabel;

lblWellDescription: TLabel; lblWellDescription displays "Name".

Published lblWellDiameter: TLabel;

lblWellDiameter: TLabel; lblWellDiameter displays "Diameter".

Published lblWellIntervals: TLabel;

lblWellIntervals: TLabel; lblWellIntervals displays "Number of intervals".

Published lblWellIntervalStyle: TLabel;

lblWellIntervalStyle: TLabel; lblWellIntervalStyle displays "Specify interval by".

Published lblWellLandSurfaceDatum: TLabel;

lblWellLandSurfaceDatum: TLabel; lblWellLandSurfaceDatum displays "Land surface datum".

Published lblZ: TLabel;

lblZ: TLabel; lblZ displays "X-coordinate", "Y-coordinate", or "Z-coordinate". The text is changed in GetData depending the the TScreenObject.ViewDirection.

Published memoNames: TMemo;

memoNames lists all the TScreenObjects being edited in the TfrmScreenObjectProperties.

Published pageBoundaries: TPageControl;

pageBoundaries: TPageControl; pageBoundaries holds tabBoundaryNone, tabBoundarySpecifiedHead, tabBoundaryFlux, and tabBoundaryLeaky, tabBoundaryRiver, and tabBoundaryWell. See pageBoundariesChange.

Published pageMain: TPageControl;

pageMain: TPageControl; pageMain holds tabProperties, tabDataSets, tabBoundaries, and tabNodes. See pageMainChange.

Published pnlBottom: TPanel;

pnlBottom: TPanel; pnlBottom holds the buttons at the bottom of TfrmScreenObjectProperties.

Published pnlBoundaries: TPanel;

pnlBoundaries: TPanel; pnlBoundaries holds the controls on the left side of tabBoundaries.

Published pnlLeaky: TPanel;

pnlLeaky: TPanel; pnlLeaky holds the controls on the top of tabBoundaryLeaky.

Published pnlRiver: TPanel;

pnlRiver: TPanel; pnlRiver holds the controls on the top of tabBoundaryRiver.

Published pnlSolutionType: TPanel;

pnlSolutionType: TPanel; pnlSolutionType holds the controls on the top of tabBoundarySpecifiedHead.

Published pnlWellBoundary: TPanel;

pnlWellBoundary: TPanel; pnlWellBoundary holds the controls on the top of tabBoundaryWell.

Published rdeGridCellSize: TRbwDataEntry;

rdeGridCellSize: TRbwDataEntry; rdeGridCellSize is used to hold the size of elements in the TPhastGrid to be generated using the TScreenObject being edited in TfrmScreenObjectProperties.

Published rdeWellDiameter: TRbwDataEntry;

rdeWellDiameter: TRbwDataEntry; rdeWellDiameter is used to specify the diameter of a well in a well boundary. See rdeWellDiameterChange.

Published rdeWellLandSurfaceDatum: TRbwDataEntry;

rdeWellLandSurfaceDatum: TRbwDataEntry; rdeWellLandSurfaceDatum is used to specify the land surface data in a well boundary. See rdeWellLandSurfaceDatumChange.

Published rgBoundaryType: TRadioGroup;

rgBoundaryType: TRadioGroup; rgBoundaryType is used to specify the type of boundary specified by the TScreenObject that is being edited. The items in rgBoundaryType must correspond to the elements in TBoundaryTypes. See rgBoundaryTypeClick.

Published rgElevationCount: TRadioGroup;

rgElevationCount: TRadioGroup; rgElevationCount is used to specify the number of elevations associated with the TScreenObject being edited. The items in rgElevationCount must correspond with the elements in TElevationCount. See rgElevationCountClick.

Published rgEvaluatedAt: TRadioGroup;

rgEvaluatedAt: TRadioGroup; rgEvaluatedAt specifies whether the TScreenObject being edited is evaluated at elements or at nodes. The items in rgEvaluatedAt must correspond with the elements in TEvaluatedAt.

Published rparserFrontFormulaElements: TRbwParser;

rparserFrontFormulaElements: TRbwParser; rparserFrontFormulaElements is used to compile formulas that will be evaluated at elements for TDataArrays whose Orientation is dsoTop. See TDataSetOrientation. The primary purpose of rparserFrontFormulaElements is to ensure that formulas are valid.

Published rparserFrontFormulaNodes: TRbwParser;

rparserFrontFormulaNodes: TRbwParser; rparserFrontFormulaNodes is used to compile formulas that will be evaluated at nodes for TDataArrays whose Orientation is dsoTop. See TDataSetOrientation. The primary purpose of rparserFrontFormulaNodes is to ensure that formulas are valid.

Published rparserSideFormulaElements: TRbwParser;

rparserSideFormulaElements: TRbwParser; rparserSideFormulaElements is used to compile formulas that will be evaluated at elements for TDataArrays whose Orientation is dsoSide. See TDataSetOrientation. The primary purpose of rparserSideFormulaElements is to ensure that formulas are valid.

Published rparserSideFormulaNodes: TRbwParser;

rparserSideFormulaNodes: TRbwParser; rparserSideFormulaNodes is used to compile formulas that will be evaluated at nodes for TDataArrays whose Orientation is dsoSide. See TDataSetOrientation. The primary purpose of rparserSideFormulaNodes is to ensure that formulas are valid.

Published rparserThreeDFormulaElements: TRbwParser;

rparserThreeDFormulaElements: TRbwParser; rparserThreeDFormulaElements is used to compile formulas that will be evaluated at elements for TDataArrays whose Orientation is dso3D. See TDataSetOrientation. The primary purpose of rparserThreeDFormulaElements is to ensure that formulas are valid.

Published rparserThreeDFormulaNodes: TRbwParser;

rparserThreeDFormulaNodes: TRbwParser; rparserThreeDFormulaNodes is used to compile formulas that will be evaluated at nodes for TDataArrays whose Orientation is dso3D. See TDataSetOrientation. The primary purpose of rparserThreeDFormulaNodes is to ensure that formulas are valid.

Published rparserTopFormulaElements: TRbwParser;

rparserTopFormulaElements: TRbwParser; rparserTopFormulaElements is used to compile formulas that will be evaluated at elements for TDataArrays whose Orientation is dsoTop. See TDataSetOrientation. The primary purpose of rparserTopFormulaElements is to ensure that formulas are valid.

Published rparserTopFormulaNodes: TRbwParser;

rparserTopFormulaNodes: TRbwParser; rparserTopFormulaNodes is used to compile formulas that will be evaluated at nodes for TDataArrays whose Orientation is dsoTop. See TDataSetOrientation. The primary purpose of rparserTopFormulaNodes is to ensure that formulas are valid.

Published seBoundaryTimes: TSpinEdit;

seBoundaryTimes: TSpinEdit; seBoundaryTimes is used to specify how many times are associated with the boundary condition of the TScreenObject that is being edited. See seBoundaryTimesChanged.

Published seWellIntervals: TSpinEdit;

seWellIntervals: TSpinEdit; seWellIntervals is used to specify how many open intervals are in the well boundary of the TScreenObject that is being edited. See seWellIntervalsChanged.

Published shpFillColor: TShape;

shpFillColor: TShape; shpFillColor displays a preview of the color used to draw the interior of the TScreenObject that is being edited.

Published shpLineColor: TShape;

shpLineColor: TShape; shpLineColor displays a preview of the color used to draw the lines of the TScreenObject that is being edited.

Published splitterBoundary: TSplitter;

splitterBoundary: TSplitter; splitterBoundary is used to change the relative sizes of pnlBoundaries and pageBoundaries on tabBoundaries.

Published splitterWell: TSplitter;

splitterWell: TSplitter; splitterWell is used to change the relative sizes of dgWell and dgWellElevations on tabBoundaryWell.

Published tabBoundaries: TTabSheet;

tabBoundaries: TTabSheet; tabBoundaries is used to hold controls related to boundary conditions on pageMain.

Published tabBoundaryFlux: TTabSheet;

tabBoundaryFlux: TTabSheet; tabBoundaryFlux is used to hold controls related to specified flux boundaries on pageBoundaries.

Published tabBoundaryLeaky: TTabSheet;

tabBoundaryLeaky: TTabSheet; tabBoundaryLeaky is used to hold controls related to leaky boundaries on pageBoundaries.

Published tabBoundaryNone: TTabSheet;

tabBoundaryNone: TTabSheet; tabBoundaryNone is used as a place-holder for TScreenObjects that do not specify any boundary condition on pageBoundaries.

Published tabBoundaryRiver: TTabSheet;

tabBoundaryRiver: TTabSheet; tabBoundaryRiver is used to hold controls related to river boundaries on pageBoundaries.

Published tabBoundarySpecifiedHead: TTabSheet;

tabBoundarySpecifiedHead: TTabSheet; tabBoundarySpecifiedHead is used to hold controls related to specified head boundaries on pageBoundaries.

Published tabBoundaryWell: TTabSheet;

tabBoundaryWell: TTabSheet; tabBoundaryWell is used to hold controls related to well boundaries on pageBoundaries.

Published tabDataSets: TTabSheet;

tabDataSets: TTabSheet; tabDataSets is used to hold controls related to TDataArrays on pageMain.

Published tabNodes: TTabSheet;

tabNodes: TTabSheet; tabNodes is used to hold controls related to the vertices of the TScreenObject being edited on pageMain.

Published tabProperties: TTabSheet;

tabProperties: TTabSheet; tabProperties is used to hold controls related to miscellaneous properties on pageMain.

Private FBoundaryChanged: array[btSpecifiedHead..btWell] of boolean;

FBoundaryChanged: array[btSpecifiedHead..btWell] of boolean; FBoundaryChanged specifies whether each type of boundary has changed.

Private FBoundaryCol: integer;

FBoundaryCol: integer; FBoundaryCol is used to store the column that the user last selected in one of the grids for boundary-condition, time-varying stress. For boundary conditions that allow PHAST-style interpolation, FBoundaryCol is adjusted to be the column with the checkbox for turning on or off PHAST-style interpolation. See TPhastInterpolationValues.

Private FBoundaryGrid: TRbwDataGrid;

FBoundaryGrid: TRbwDataGrid; FBoundaryGrid is the TRbwDataGrid that is being used to specify boundary conditions for the current TScreenObject. FBoundaryGrid is one of the following: Nil, dgSpecifiedHead, dgBoundaryFlux, dgBoundaryLeaky, dgBoundaryRiver, or dgWell.

Private FBoundaryPhastInterpolationList: TObjectList;

FBoundaryPhastInterpolationList: TObjectList; FBoundaryPhastInterpolationList holds TInterpValuesCollections. The TInterpValuesCollections are also stored in the Objects property of the related TRbwDataGrid. FBoundaryPhastInterpolationList is used to ensure that they are destroyed when the TfrmScreenObjectProperties is destroyed.

Private FBoundaryRow: integer;

FBoundaryRow: integer; FBoundaryRow is the selected row in the grid used to specify boundary conditions for the current TScreenObject.

Private FChangeName: boolean;

FChangeName: boolean; FChangeName is used to indicate that the name of the TScreenObject that is being edited has been changed.

Private FDataSetList: TList;

FDataSetList: TList; FDataSetList stores the TDataArrays accessed through DataSets.

Private FDataSetsNeedUpdating: array of boolean;

FDataSetsNeedUpdating: array of boolean; FDataSetsNeedUpdating is used to indicate that TDataArrays need updating. each member of FDataSetsNeedUpdating refers to a specific TDataArray. The members in FDataSetsNeedUpdating each correspond to the one with the same row number in dgDataSets.

Private FDataSetsUsed: array of boolean;

FDataSetsUsed: array of boolean; FDataSetsUsed indicates which TDataArrays have their values set by this TScreenObject.

Private FFillColor: boolean;

FFillColor: boolean; FFillColor indicates that the user has changed whether or not the TScreenObject that is being edited should use a fill color or not. In other words if FFillColor is True, TScreenObject.FillScreenObject has changed.

Private FFormulaChanged: array of boolean;

FFormulaChanged: array of boolean; FFormulaChanged indicates that the user has changed the formula for a particular TDataArray. Each member of FFormulaChanged corresponds to the TDataArray in the same row in dgDataSets.

Private FHighZFormula: TExpression;

FHighZFormula: TExpression; FHighZFormula is the TExpression that represents the formula in edHighZ. If FHighZFormula is Nil, btnOK.Enabled may be set to False.

Private FInitialWidth: integer;

FInitialWidth: integer; FInitialWidth is set to Width - pnlBoundaries.Width in FormCreate. It is used in splitterBoundaryMoved and FormResize to make sure that the panels on pageBoundaries don't get too small.

Private FInterpolatedCells: boolean;

FInterpolatedCells: boolean; FInterpolatedCells is set to True when the user wants to change TScreenObject.SetPropertiesByInterpolation.

Private FInterpValuesList: TObjectList;

FInterpValuesList: TObjectList; FInterpValuesList holds TInterpValuesCollections. Each one in FInterpValuesList corresponds to a different TScreenObject.

Private FLoaded: boolean;

FLoaded: boolean; FLoaded is used in event handlers to decide whether or not anything should be done.

Private FLowZFormula: TExpression;

FLowZFormula: TExpression; FLowZFormula is the TExpression that represents the formula in edLowZ. If FLowZFormula is Nil, btnOK.Enabled may be set to False.

Private FMultipleScreenObjects: boolean;

See MultipleScreenObjects.

Private FNewUsedBy: TObjectList;

FNewUsedBy: TObjectList; FNewUsedBy holds a TStringList for each member of FDataSetList. Each TStringList initially holds the names of all the TDataArrays that depend on the corresponding TDataArray in FDataSetList. These TStringList are used to check for circular references.

Private FObjectLine: boolean;

FObjectLine: boolean; FObjectLine is set to true if the user has changed TScreenObject.ColorLine. See TUndoSetScreenObjectProperties.FSetColorLine.

Private FOldMixFormula: string;

FOldMixFormula: string; FOldMixFormula is set to framePhastInterpolationData.edMixFormula.Text framePhastInterpolationDataedMixFormulaEnter It is used in framePhastInterpolationDataedMixFormulaExit to restore the formula if the user enters an invalid formula.

Private FPhastDistance1Changed: array of boolean;

FPhastDistance1Changed: array of boolean; FPhastDistance1Changed is set to True in framePhastInterpolationDatardeDistance1Exit to indicate that the user has changed Distance 1 in the PHAST-style interpolation. See TPhastInterpolationValues.

Private FPhastDistance2Changed: array of boolean;

FPhastDistance2Changed: array of boolean; FPhastDistance2Changed is set to True in framePhastInterpolationDatardeDistance2Exit to indicate that the user has changed Distance 2 in the PHAST-style interpolation. See TPhastInterpolationValues.

Private FPhastInterpolationDirectionChanged: array of boolean;

FPhastInterpolationDirectionChanged: array of boolean; FPhastInterpolationDirectionChanged is set to True in framePhastInterpolationDatargInterpolationDirectionClick to indicate that the user has changed the interpolation direction in the PHAST-style interpolation. See TPhastInterpolationValues.

Private FPhastMixtureFormulaChanged: array of boolean;

FPhastMixtureFormulaChanged: array of boolean; FPhastMixtureFormulaChanged is set to True in framePhastInterpolationDataedMixFormulaExit to indicate that the user has changed the mixture formula in the PHAST-style interpolation. See TPhastInterpolationValues.

Private FPhastValue1Changed: array of boolean;

FPhastValue1Changed: array of boolean; FPhastValue1Changed is set to True in framePhastInterpolationDatardeValue1Exit to indicate that the user has changed Value 1 in the PHAST-style interpolation. See TPhastInterpolationValues.

Private FPhastValue2Changed: array of boolean;

FPhastValue2Changed: array of boolean; FPhastValue2Changed is set to True in framePhastInterpolationDatardeValue2Exit to indicate that the user has changed Value 2 in the PHAST-style interpolation. See TPhastInterpolationValues.

Private FPriorCol: integer;

FPriorCol: integer; FPriorCol is set to the the current column of dgDataSets in dgDataSetsSelectCell but first it is used in ValidateCellFormula.

Private FPriorModelUpToDate: boolean;

FPriorModelUpToDate: boolean; FPriorModelUpToDate is set to frmGoPhast.Model.UpToDate in FormCreate. If btnCancel is clicked, frmGoPhast.Model.UpToDate is restored to FPriorModelUpToDate.

Private FPriorRow: integer;

FPriorRow: integer; FPriorRow is set to the the current row of dgDataSets in dgDataSetsSelectCell but first it is used in ValidateCellFormula.

Private FScreenObject: TScreenObject;

FScreenObject: TScreenObject; If only a single TScreenObject is being edited, FScreenObject is that TScreenObject. If more than one is being edited, FScreenObject is Nil.

Private FScreenObjectList: TList;

FScreenObjectList: TList; If multiple TScreenObjects are being editted, FScreenObjectList holds the TScreenObjects that are being edited.

Private FSelectedRow: integer;

FSelectedRow: integer; FSelectedRow is set to the current row in dgDataSetsSelectCell

Private FSelectingCell: boolean;

FSelectingCell: boolean; FSelectingCell is set to True at the beginning of dgDataSetsSelectCell and to False at the end of it. It is used in several procedures to prevent them from doing anything when being called indirectly by dgDataSetsSelectCell.

Private FSetCellsColor: boolean;

FSetCellsColor: boolean; FSetCellsColor is set to True to indicate that the colors of the cells will need to be recalculated.

Private FSetCellSize: boolean;

FSetCellSize: boolean; FSetCellSize is set to True to indicate that the TScreenObject.CellSize has changed.

Private FSetCellSizeUsed: boolean;

FSetCellSizeUsed: boolean; FSetCellSizeUsed is set to True to indicate that the TScreenObject.CellSizeUsed has changed.

Private FSetElevationCount: boolean;

FSetElevationCount: boolean; FSetElevationCount is set to True to indicate that the TScreenObject.ElevationCount has changed.

Private FSetEvaluatedAt: boolean;

FSetEvaluatedAt: boolean; FSetEvaluatedAt is set to True to indicate that the TScreenObject.EvaluatedAt has changed.

Private FSetFillColor: boolean;

FSetFillColor: boolean; FSetFillColor is set to True if the user chooses to change the color used to draw the interior of the TScreenObjects.

Private FSetHeadSolutionType: boolean;

FSetHeadSolutionType: boolean; FSetHeadSolutionType is set to True to indicate that the solution type of the specified head boundary has changed in TPhastScreenObject.TPhastScreenObject.

Private FSetHighZ: boolean;

FSetHighZ: boolean; FSetHighZ is set to True to indicate that the TScreenObject.HigherElevationFunction has changed.

Private FSetLeakyHydraulicConductivity: boolean;

FSetLeakyHydraulicConductivity: boolean; FSetLeakyHydraulicConductivity is set to True to indicate that the hydraulic conductivity of the leaky boundary has changed in TPhastScreenObject.TPhastScreenObject.

Private FSetLeakyThickness: boolean;

FSetLeakyThickness: boolean; FSetLeakyThickness is set to True to indicate that the thickness of the leaky boundary has changed in TPhastScreenObject.TPhastScreenObject.

Private FSetLowZ: boolean;

FSetLowZ: boolean; FSetLowZ is set to True to indicate that the TScreenObject.LowerElevationFunction has changed.

Private FSetObjectLine: boolean;

FSetObjectLine: boolean; FSetObjectLine is set to True if the user chooses to change the color used to draw the lines of the TScreenObjects.

Private FSetRiverBedThickness: boolean;

FSetRiverBedThickness: boolean; FSetRiverBedThickness is set to True to indicate that the thickness of the river boundary has changed in TPhastScreenObject.TPhastScreenObject.

Private FSetRiverDepth: boolean;

FSetRiverDepth: boolean; FSetRiverDepth is set to True to indicate that the depth of the river boundary has changed in TPhastScreenObject.TPhastScreenObject.

Private FSetRiverDescription: boolean;

FSetRiverDescription: boolean; FSetRiverDescription is set to True to indicate that the description of the river boundary has changed in TPhastScreenObject.TPhastScreenObject.

Private FSetRiverHydraulicConductivity: boolean;

FSetRiverHydraulicConductivity: boolean; FSetRiverHydraulicConductivity is set to True to indicate that the hydraulic conductivity of the river boundary has changed in TPhastScreenObject.TPhastScreenObject.

Private FSetRiverWidth: boolean;

FSetRiverWidth: boolean; FSetRiverWidth is set to True to indicate that the width of the river boundary has changed in TPhastScreenObject.TPhastScreenObject.

Private FSetWellAllocation: boolean;

FSetWellAllocation: boolean; FSetWellAllocation is set to True to indicate that the allocation of the well boundary has changed in TPhastScreenObject.TPhastScreenObject.

Private FSetWellDescription: boolean;

FSetWellDescription: boolean; FSetWellDescription is set to True to indicate that the description of the well boundary has changed in TPhastScreenObject.TPhastScreenObject.

Private FSetWellDiameter: boolean;

FSetWellDiameter: boolean; FSetWellDiameter is set to True to indicate that the diameter of the well boundary has changed in TPhastScreenObject.TPhastScreenObject.

Private FSetWellIntervalFormat: boolean;

FSetWellIntervalFormat: boolean; FSetWellIntervalFormat is set to True to indicate that the interval format of the well boundary has changed in TPhastScreenObject.TPhastScreenObject.

Private FSetWellIntervals: boolean;

FSetWellIntervals: boolean; FSetWellIntervals is set to True to indicate that the intervals of the well boundary has changed in TPhastScreenObject.TPhastScreenObject.

Private FSetWellLandSurfaceDatum: boolean;

FSetWellLandSurfaceDatum: boolean; FSetWellLandSurfaceDatum is set to True to indicate that the land-surface datum of the well boundary has changed in TPhastScreenObject.TPhastScreenObject.

Private FSetZ: boolean;

FSetZ: boolean; FSetZ is set to True to indicate that the TScreenObject.ElevationFunction has changed.

Private FSet_SetPropertiesOfEnclosedCells: boolean;

FSet_SetPropertiesOfEnclosedCells: boolean; FSet_SetPropertiesOfEnclosedCells is set to True to indicate that the TScreenObject.SetPropertiesOfEnclosedCells has changed.

Private FSet_SetPropertiesOfIntersectedCells: boolean;

FSet_SetPropertiesOfIntersectedCells: boolean; FSet_SetPropertiesOfIntersectedCells is set to True to indicate that the TScreenObject.SetPropertiesOfIntersectedCells has changed.

Private FShouldValidate: boolean;

FShouldValidate: boolean; FShouldValidate helps determine whether ValidateCellFormula is called in dgDataSetsSelectCell. It is used in dgDataSetsDrawCell to prevent it from being called while drawing a cell. It is also set elsewhere.

Private FUndoSetScreenObjectProperties: TUndoSetScreenObjectProperties;

FUndoSetScreenObjectProperties: TUndoSetScreenObjectProperties; FUndoSetScreenObjectProperties is used to set or undo the setting of the properties of a TScreenObject.

Private FUsePhastInterpolationChanged: array of boolean;

FUsePhastInterpolationChanged: array of boolean; FUsePhastInterpolationChanged is set to True in framePhastInterpolationDatacbPhastInterpolationClick to indicate that the user has changed whether to use PHAST-style interpolation. See TPhastInterpolationValues.

Private FVariableList: TList;

FVariableList: TList; FVariableList is used to store the TCustomVariables associated with each TDataArray. See Variables.

Private FViewDirection: TViewDirection;

FViewDirection: TViewDirection; FViewDirection is the TViewDirection of the TScreenObject(s) that are being edited.

Private FZFormula: TExpression;

FZFormula: TExpression; FZFormula is the TExpression that represents the formula in edZ. If FZFormula is Nil, btnOK.Enabled may be set to False.

Methods

Published procedure btnCancelClick(Sender: TObject);

If the user hasn't changed anything, don't force the user to save the model.

Published procedure btnColorClick(Sender: TObject);

allow the user to edit the line or fill color of a TScreenObject. See btnLineColor and btnFillColor.

Published procedure btnFormulaClick(Sender: TObject);

btnFormulaClick is used to edit a formula that is not part of a TDataArray or boundary condition TDataArray. Examples include the formulas for the elevations associated with a TScreenObject.

Published procedure btnOKClick(Sender: TObject);

btnOKClick warns user about potential problems and gives the user a chance to correct them. It then applies the changes to the TScreenObject or TScreenObjects using SetMultipleScreenObjectData, or SetData.

Published procedure cbEnclosedCellsClick(Sender: TObject);

Mark all used TDataArrays affected by the TScreenObject being edited as in need of updating when this check box is checked. It sets FSet_SetPropertiesOfEnclosedCells to True.

Published procedure cbFillColorClick(Sender: TObject);

cbFillColorClick responds to the user checking the cbFillColor check box by enabling the associated button (btnFillColor). cbFillColorClick sets FFillColor to True.

Published procedure cbInterpolationClick(Sender: TObject);

cbInterpolationClick responds to the user checking the cbInterpolation check box by marking all TDataArrays affected by the TScreenObject being edited as in need of updating. cbInterpolationClick sets FInterpolatedCells to True.

Published procedure cbIntersectedCellsClick(Sender: TObject);

cbIntersectedCellsClick responds to the user checking the cbIntersectedCells check box by marking all TDataArrays affected by the TScreenObject being edited as in need of updating. cbIntersectedCellsClick sets FSet_SetPropertiesOfIntersectedCells to True.

Published procedure cbLineColorClick(Sender: TObject);

cbLineColorClick responds to the user checking the cbLineColor check box by enabling the associated button (btnLineColor).

Published procedure cbSetGridCellSizeClick(Sender: TObject);

cbSetGridCellSizeClick enables controls related to setting the grid cell size and sets FSetCellSizeUsed to True.

Published procedure cbWellPumpAllocationClick(Sender: TObject);

cbWellPumpAllocationClick records that WellPumpAllocation was changed by setting FSetWellAllocation to True.

Published procedure comboSolutionTypeChange(Sender: TObject);

comboSolutionTypeChange responds to a change in comboSolutionType by changing a title in dgSpecifiedHead FSetHeadSolutionType is generally set to True.

Published procedure comboWellIntervalStyleChange(Sender: TObject);

comboWellIntervalStyleChange changes the captions on the table that shows the well intervals depending on the selection in comboWellIntervalStyle. comboWellIntervalStyleChange sets FSetWellIntervalFormat to True.

Published procedure dgBoundaryButtonClicked(Sender: TObject; ACol, ARow: Integer; const Value: WideString);

Allow the user to edit a formula with the formula editor in one of the boundary condition grids (dgSpecifiedHead, dgBoundaryFlux, dgBoundaryLeaky, dgBoundaryRiver, and dgWell).

Published procedure dgBoundaryDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

with Grids that represent boundary conditions, dgBoundaryDrawCell shows the cell at (1,1) as gray because the user shouldn't be able to edit it. (dgSpecifiedHead, dgBoundaryFlux, dgBoundaryLeaky, dgBoundaryRiver, and dgWell)

Published procedure dgBoundaryRowMoving(Sender: TObject; const Origin, Destination: Integer; var CanMove: Boolean);

dgBoundaryRowMoving Doesn't allow a row to be moved to the top of the grid because the cell at (1,1) shouldn't be edited. (dgSpecifiedHead, dgBoundaryFlux, dgBoundaryLeaky, dgBoundaryRiver, and dgWell)

Published procedure dgBoundarySelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);

Show the TPhastInterpolationValues when the user clicks on a cell in a boundary grid. (dgSpecifiedHead, dgBoundaryFlux, dgBoundaryLeaky, dgBoundaryRiver, and dgWell)

Published procedure dgBoundarySetEditText(Sender: TObject; ACol, ARow: Integer; const Value: WideString);

when the user edits text in one of the grids for boundary conditions record that the data was changed (SetBoundaryChanged). (dgSpecifiedHead, dgBoundaryFlux, dgBoundaryLeaky, dgBoundaryRiver, and dgWell)

Published procedure dgBoundaryStateChanged(Sender: TObject; ACol, ARow: Integer; const Value: TCheckBoxState);

update the displayed TPhastInterpolationValues when the use clicks one of the check boxes in a boundary table. (dgSpecifiedHead, dgBoundaryFlux, dgBoundaryLeaky, dgBoundaryRiver, and dgWell)

Published procedure dgDataSetsButtonClicked(Sender: TObject; ACol, ARow: Integer; const Value: WideString);

dgDataSetsButtonClicked is used to edit the formula of a data set when the user clicks the button in dgDataSets.

Published procedure dgDataSetsDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

dgDataSetsDrawCell draws the cell in dgDataSets with a gray background if it can not be selected. dgDataSetsDrawCell draws the cell in dgDataSets with a red background if it is an invalid formula. dgDataSetsDrawCell draws the cell in dgDataSets with italic text if the data set is not used be the model.

Published procedure dgDataSetsExit(Sender: TObject);

dgDataSetsExit validates the cell formula of the last selected cell (as specified with FPriorCol, FPriorRow).

Published procedure dgDataSetsSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);

dgDataSetsSelectCell validates the formula and show the TPhastInterpolationValues for the current TDataArray in dgDataSets. dgDataSetsSelectCell also sets CanSelect to false in certain cases.

Published procedure dgDataSetsSetEditText(Sender: TObject; ACol, ARow: Integer; const Value: WideString);

mark the formula as having been changed if that is what happened. See FFormulaChanged.

Published procedure dgDataSetsStateChanged(Sender: TObject; ACol, ARow: Integer; const Value: TCheckBoxState);

Respond to the user clicking the checkbox for a data set in dgDataSets by enabling or disabling the display of TPhastInterpolationValues in framePhastInterpolationData.

Published procedure dgVerticiesSetEditText(Sender: TObject; ACol, ARow: Integer; const Value: WideString);

If the points in a TScreenObject are being changed, all the data sets that are being affected by the TScreenObject must be updated.

Published procedure dgWellElevationsSetEditText(Sender: TObject; ACol, ARow: Integer; const Value: WideString);

If the user has changed the value displayed in dgWellElevations, set FSetWellIntervals to True for later use in SetMultipleScreenObjectData.

Published procedure ed2ZExit(Sender: TObject);

ed2ZExit validates the upper and lower Z formulas.

Published procedure edHighZChange(Sender: TObject);

edHighZChange records that the higher z formula has changed by setting FSetHighZ to True.

Published procedure edLeakyHydraulicConductivityChange(Sender: TObject);

edLeakyHydraulicConductivityChange records that the Leaky Hydraulic Conductivity formula has changed by setting FSetLeakyHydraulicConductivity to True.

Published procedure edLeakyThicknessChange(Sender: TObject);

edLeakyThicknessChange records that the Leaky Thickness formula has changed by setting FSetLeakyThickness to True.

Published procedure edLowZChange(Sender: TObject);

record that the lower z formula has changed.

Published procedure edNameChange(Sender: TObject);

edNameChange records that the name has changed by setting FChangeName to True.

Published procedure edNameExit(Sender: TObject);

edNameExit ensures that the value given for the name of a TScreenObject is valid.

Published procedure edRiverBedThicknessChange(Sender: TObject);

edRiverBedThicknessChange records that the river bed thickness has changed by setting FSetRiverBedThickness to True.

Published procedure edRiverDepthChange(Sender: TObject);

edRiverDepthChange records that the river depth has changed by setting FSetRiverDepth to True.

Published procedure edRiverDescriptonChange(Sender: TObject);

edRiverDescriptonChange records that the river description has changed by setting FSetRiverDescription to True.

Published procedure edRiverHydraulicConductivityChange(Sender: TObject);

edRiverHydraulicConductivityChange records that the river hydraulic conductivity has changed by setting FSetRiverHydraulicConductivity to True.

Published procedure edRiverWidthChange(Sender: TObject);

edRiverWidthChange records that the river width has changed by setting FSetRiverWidth to True.

Published procedure edWellDescriptionChange(Sender: TObject);

edWellDescriptionChange records that the well description has changed by setting FSetWellDescription to True.

Published procedure edZChange(Sender: TObject);

edZChange records that the Z formula has changed by setting FSetZ to True.

Published procedure edZExit(Sender: TObject);

edZExit validates the formula for the Z.

Published procedure FormCreate(Sender: TObject); override;

FormCreate create variables and initialize the form.

Published procedure FormDestroy(Sender: TObject);

FormDestroy destroy variables.

Published procedure FormResize(Sender: TObject);

See FInitialWidth.

Published procedure framePhastInterpolationBoundariescbPhastInterpolationClick(Sender: TObject);

Respond to the user activating or deactivating PHAST-style Interpolation for a boundary condition. See TPhastInterpolationValues.

Published procedure framePhastInterpolationBoundariesedMixFormulaExit( Sender: TObject);

framePhastInterpolationBoundariesedMixFormulaExit responds to the user finishing editing the PHAST-style Interpolation mixture formula for a boundary condition by storing the value. See TPhastInterpolationValues.

Published procedure framePhastInterpolationBoundariesrdeChange(Sender: TObject);

framePhastInterpolationBoundariesrdeChange record that the user has edited the a boundary condition by calling SetBoundaryChanged.

Published procedure framePhastInterpolationBoundariesrdeDistance1Exit(Sender: TObject);

framePhastInterpolationBoundariesrdeDistance1Exit responds to the user finishing editing the PHAST-style Interpolation Distance 1 for a boundary condition by storing the value. See TPhastInterpolationValues.

Published procedure framePhastInterpolationBoundariesrdeDistance2Exit(Sender: TObject);

framePhastInterpolationBoundariesrdeDistance2Exit responds to the user finishing editing the PHAST-style Interpolation Distance 2 for a boundary condition by storing the value. See TPhastInterpolationValues.

Published procedure framePhastInterpolationBoundariesrdeValue1Exit(Sender: TObject);

framePhastInterpolationBoundariesrdeValue1Exit responds to the user finishing editing the PHAST-style Interpolation Value 1 for a boundary condition by storing the value. See TPhastInterpolationValues.

Published procedure framePhastInterpolationBoundariesrdeValue2Exit(Sender: TObject);

framePhastInterpolationBoundariesrdeValue2Exit responds to the user finishing editing the PHAST-style Interpolation Value 2 for a boundary condition by storing the value. See TPhastInterpolationValues.

Published procedure framePhastInterpolationBoundariesrgInterpolationDirectionClick( Sender: TObject);

framePhastInterpolationBoundariesrgInterpolationDirectionClick responds to the user changing the interpolation direction for a boundary condition by storing the value. See TPhastInterpolationValues.

Published procedure framePhastInterpolationDatabtnEditMixtureFormulaClick( Sender: TObject);

framePhastInterpolationDatabtnEditMixtureFormulaClick responds to the user clicking the button for editing the mixture formula by displaying the TfrmFormula.

Published procedure framePhastInterpolationDatacbPhastInterpolationClick(Sender: TObject);

framePhastInterpolationDatacbPhastInterpolationClick responds to the user activating or deactivating PHAST-Interpolation for a TDataArray.

Published procedure framePhastInterpolationDataedMixFormulaEnter( Sender: TObject);

framePhastInterpolationDataedMixFormulaEnter stores a copy of the mixture formula in case it needs to be restored later.

Published procedure framePhastInterpolationDataedMixFormulaExit(Sender: TObject);

framePhastInterpolationDataedMixFormulaExit checks that the mixture formula is valid.

Published procedure framePhastInterpolationDatardeDistance1Exit(Sender: TObject);

framePhastInterpolationDatardeDistance1Exit responds to the user having finished editing the PHAST-Interpolation distance 1 by storing the new value and updating FPhastDistance1Changed and FDataSetsNeedUpdating. See TPhastInterpolationValues.

Published procedure framePhastInterpolationDatardeDistance2Exit(Sender: TObject);

framePhastInterpolationDatardeDistance2Exit responds to the user having finished editing the PHAST-Interpolation distance 2 by storing the new value and updating FPhastDistance1Changed and FDataSetsNeedUpdating. See TPhastInterpolationValues.

Published procedure framePhastInterpolationDatardeValue1Exit(Sender: TObject);

framePhastInterpolationDatardeValue1Exit responds to the user having finished editing the PHAST-Interpolation Value 1 by storing the new value and updating FPhastDistance1Changed and FDataSetsNeedUpdating. See TPhastInterpolationValues.

Published procedure framePhastInterpolationDatardeValue2Exit(Sender: TObject);

framePhastInterpolationDatardeValue2Exit responds to the user having finished editing the PHAST-Interpolation Value 2 by storing the new value and updating FPhastDistance1Changed and FDataSetsNeedUpdating. See TPhastInterpolationValues.

Published procedure framePhastInterpolationDatargInterpolationDirectionClick(Sender: TObject);

framePhastInterpolationDatargInterpolationDirectionClick responds to the user having edited the PHAST-Interpolation interpolation direction by storing the new value and updating FPhastDistance1Changed and FDataSetsNeedUpdating. See TPhastInterpolationValues.

Published procedure pageBoundariesChange(Sender: TObject);

pageBoundariesChange updates seBoundaryTimes.Value based on the active page in pageBoundaries.

Published procedure pageMainChange(Sender: TObject);

pageMainChange sets btnHelp.HelpKeyword to pageMain.ActivePage.HelpKeyword

Published procedure rdeGridCellSizeChange(Sender: TObject);

If the user has changed the value displayed in rdeGridCellSize, set FSetCellSize to True for later use in SetMultipleScreenObjectData.

Published procedure rdeWellDiameterChange(Sender: TObject);

If the user has changed the value displayed in rdeWellDiameter, set FSetWellDiameter to True for later use in SetMultipleScreenObjectData.

Published procedure rdeWellLandSurfaceDatumChange(Sender: TObject);

If the user has changed the value displayed in rdeWellLandSurfaceDatum, set FSetWellLandSurfaceDatum to True for later use in SetMultipleScreenObjectData.

Published procedure rgBoundaryTypeClick(Sender: TObject);

rgBoundaryTypeClick responds to the user selecting a different type of boundary condition to use with the TScreenObject by setting pageBoundaries.ActivePageIndex to the appropriate value.

Published procedure rgElevationCountClick(Sender: TObject);

rgElevationCountClick responds to the user changing the number of elevations for the TScreenObject. rgElevationCountClick sets cbFillColor.Enabled as well as the enabled property of other controls. Some TDataArrays may no longer be affected by the TScreenObject being edited. due to a change in the number of elevations used.

Published procedure rgEvaluatedAtClick(Sender: TObject);

respond to the user changing where the TScreenObject is to be evaluated. rgEvaluatedAtClick changes the captions of cbEnclosedCells, cbIntersectedCells, and cbInterpolation.

Published procedure seBoundaryTimesChanged(Sender: TObject; NewValue: Integer);

seBoundaryTimesChanged responds to the user changing the number of boundary times by changing the number of rows in one of the grids related to boundary conditions. (dgSpecifiedHead, dgBoundaryFlux, dgBoundaryLeaky, dgBoundaryRiver, and dgWell)

Published procedure seWellIntervalsChanged(Sender: TObject; NewValue: Integer);

seWellIntervalsChanged responds to the user changing the number of open intervals in a well by changing the number of rows in dgWellElevations.

Published procedure splitterBoundaryMoved(Sender: TObject);

See FInitialWidth.

Private procedure SetMultipleScreenObjects(const Value: boolean);

SetMultipleScreenObjects is the setter for MultipleScreenObjects;

Private procedure AssignBoundary(const Grid: TRbwDataGrid; const ExpressionCol, InterpolationCol, Row: integer; const Time: double; const Boundary: TCustomPhastBoundaryCollection);

AssignBoundary assigns a boundary condition for a TScreenObject based on the values in a TRbwDataGrid. .

Parameters
Grid
Grid is the TRbwDataGrid from which data will be read.
ExpressionCol
ExpressionCol is the column in the grid that store the expression for the boundary
InterpolationCol
InterpolationCol is the column in the grid that stores whether or not it uses PHAST-interpolation.
Row
Row is the row in the TRbwDataGrid that contains the data.
Time
Time is the time of the boundary condition.
Boundary
Boundary is the TCustomPhastBoundaryCollection that holds the boundary. Boundary is owned by a TScreenObject.
Private function BoundaryIsIdentical(const Grid: TRbwDataGrid; const UsedTimes: TRealList; const Boundary: TCustomPhastBoundaryCollection; const ExpressionCol, PhastInterpolateCol: integer): boolean;

BoundaryIsIdentical tests whether the boundary specified in Grid is identical to the one in Boundary.

Private procedure CheckForCircularReference(const Expression: TExpression; const DSetName: string; const ACol, ARow: integer; const OldFormulaOK: boolean; const OldFormula: string);

CheckForCircularReference checks to see if Expression uses itself. If it does, it tries to restore the old formula for it using OldFormula, OldFormulaOK, ACol, and ARow. DSetName is the name of the TDataArray to which Expression applies.

Private procedure CheckForCircularReferencesInMixtureFormulas( var Expression: TExpression; const DSName, OldFormula: string; const ARow: integer);

CheckForCircularReferencesInMixtureFormulas checks to see if Expression uses itself. If it does, it tries to restore the old formula for it using OldFormula, and ARow. DSetName is the name of the TDataArray to whose mixture formula Expression applies.

Private procedure CreateBoundaryFormula(const DataGrid: TRbwDataGrid; const ACol, ARow: integer; Formula: string; const Orientation: TDataSetOrientation; const EvaluatedAt: TEvaluatedAt);

CreateBoundaryFormula creates an TExpression for a boundary condition based on the text in DataGrid at ACol, ARow. Orientation, and EvaluatedAt are used to chose the TRbwParser.

Private procedure CreateFormula(const Row, DataSetIndex: integer; const ShowError: boolean = True);

CreateFormula creates a TExpression for a cell in dgDataSets.

Private function CreateMixtureFormula(const DataSetIndex: integer): TExpression;

CreateMixtureFormula attempts to create a TExpression for the mixture the the TDataArray identified by DataSetIndex.

Private procedure CreateVariable(const Index: integer);

CreateVariable creates a TCustomVariable to represent the TDataArray specified by Index in each TRbwParser that needs it.

Private procedure EnableOK_Button;

EnableOK_Button allows the OK button to be pressed if all of the formulas for the data sets and elevation formulas are valid.

Private function GetBoundaryTime(const Grid: TRbwDataGrid; const Col, Row: integer; out Time: double): boolean;

GetBoundaryTime converts the value in Grid at Col, Row to a real number that is returned in Time. The result of the function reveals whether or not the value in the grid cell could be converted.

Private procedure GetBoundaryTimes( const Boundaries: array of TCustomPhastBoundaryCollection; const Times: TRealList);

GetBoundaryTimes fills Times with all the times in Boundaries.

Private function GetCompiler(const Orientation: TDataSetOrientation; const EvaluatedAt: TEvaluatedAt): TRbwParser;

GetCompiler returns the appropriate TRbwParser based on the combination of Orientation and EvaluatedAt.

Private function GetCompilerByIndex(const Index: integer): TRbwParser;

GetCompilerByIndex determines the Orientation and EvaluatedAt of the data set at Index and returns the appropriate compiler based on that combination.

Private function GetDataSetIndexByName(const DataSetName: string): integer;

GetDataSetIndexByName returns the position of the TDataArray whose name is DataSetName in FDataSetList. If the TDataArray isn't in FDataSetList, GetDataSetIndexByName returns -1. See Orientations.

Private function GetDataSetOrientations( const Index: integer): TDataSetOrientation;

GetDataSetOrientations returns the orientation of the TDataArray at Index.

Private function GetDataSets(const Index: integer): TDataArray;

GetDataSets returns the TDataArray whose position is Index. Set DataSets.

Private function GetElevationCompiler: TRbwParser;

GetElevationCompiler returns the TRbwParser that is appropriate for specifying the elevation formula for a TScreenObject based on the direction from which the TScreenObject is viewed and whether it is evaluated by blocks or nodes.

Private function GetExpression(const Row: integer): TExpression;

GetExpression returns the TExpression associated with the TDataArray shown on Row. See Expressions.

Private function GetResultType(const Index: integer): TRbwDataType;

GetResultType returns the TRbwDataType or the TDataArray at Index.

Private function GetVariables(const Index: integer): TCustomVariable;

GetVariables returns the TCustomVariable associated with the TDataArray at Index.

See also
Variables
Variables are the TCustomVariables associated with each data set.
Private procedure InitializeArrays;

InitializeArrays initialize the arrays used for updating data sets. See FDataSetsNeedUpdating, FDataSetsUsed, FUsePhastInterpolationChanged, FPhastDistance1Changed, FPhastDistance2Changed, FPhastValue1Changed, FPhastValue2Changed, FPhastMixtureFormulaChanged, and FPhastInterpolationDirectionChanged.

Private procedure InitilizeControls;

InitilizeControls sets the data stored in controls in TfrmScreenObjectProperties to default values and otherwise prepares the TfrmScreenObjectProperties to edit objects.

Private procedure InitilizeGridObjects;

InitilizeGridObjects initializes the grids. It sets the Objects property corresponding to each cell to nil and sets each cell that isn't a fixed cell to a blank. The cell at [1,1] for boundary conditions is set to hold a '0' as required by boundary conditions.

Private procedure ResetFluxGrid;

ResetFluxGrid resets the data displayed in dgBoundaryFlux. It is called by GetDataForMultipleScreenObjects when two TScreenObjects have Flux boundaries that differ.

Private procedure ResetLeakyGrid;

ResetLeakyGrid resets the data displayed in dgBoundaryLeaky. It is called by GetDataForMultipleScreenObjects when two TScreenObjects have Leaky boundaries that differ.

Private procedure ResetRiverGrid;

ResetRiverGrid resets the data displayed in dgBoundaryRiver. It is called by GetDataForMultipleScreenObjects when two TScreenObjects have River boundaries that differ.

Private procedure ResetSpecifiedHeadGrid;

ResetSpecifiedHeadGrid resets the data displayed in dgSpecifiedHead. It is called by GetDataForMultipleScreenObjects when two TScreenObjects have Specified Head boundaries that differ.

Private procedure ResetWellElevationGrid;

ResetWellElevationGrid resets the data displayed in dgWellElevations. It is called by GetDataForMultipleScreenObjects when two TScreenObjects have Well boundaries with well elevations that differ.

Private procedure ResetWellGrid;

ResetWellGrid resets the data displayed in dgWell. It is called by GetDataForMultipleScreenObjects when two TScreenObjects have Well boundaries that differ.

Private function RowToDataSetIndex(const ARow: integer): integer;

RowToDataSetIndex returns the position of the data set displayed at Row in DataSets

Private procedure SelectBoundaryCell;

SelectBoundaryCell calls dgBoundaryStateChanged for the first check box in the TRbwDataGrid for the selected boundary condition that is checked.

Private procedure SetBoundaryChanged(const Sender: TObject);

SetBoundaryChanged sets one member of the FBoundaryChanged array. Which one depends on Sender.

Parameters
Sender
Sender must be one of the following: dgSpecifiedHead, dgBoundaryFlux, dgBoundaryLeaky, dgBoundaryRiver, or dgWell.
Private procedure SetCheckBoxCaptions;

Set the captions of cbEnclosedCells, cbIntersectedCells, and cbInterpolation based on rgEvaluatedAt.ItemIndex.

Private procedure SetData;

SetData is used to set the data for a single TScreenObject when it is first created. See SetMultipleScreenObjectData if there is more than one TScreenObject being edited.

Private procedure SetDataSets(const Index: integer; const Value: TDataArray);

SetDataSets stores Value at position Index in FDataSetList. If required, FDataSetList will be expanded to create a space at Index. Set DataSets.

Private procedure SetFloatProperty(const NewValue: string; var SetValue: double; ShouldSetNewValue: boolean; var NewValueSet: boolean);

SetFloatProperty is used to set the value of a double variable in a TUndoSetPhastScreenObjectProperties.

Private procedure SetExpression(const Row: integer; const Value: TExpression);

SetExpression stores a TExpression associated with the TDataArray at Row. See Expressions.

Private procedure SetMultipleScreenObjectData;

SetMultipleScreenObjectData is called when the user press the btnOK button after editing the properties of one or more TScreenObjects. It set up a TUndoSetScreenObjectProperties based on the data that the user has changed.

See also
SetData
SetData is used to set the data for a single TScreenObject when it is first created.
Private procedure SetStringProperty(const NewValue: string; var SetValue: string; ShouldSetNewValue: boolean; var NewValueSet: boolean);

SetStringProperty is used to set the value of a string variable in a TUndoSetPhastScreenObjectProperties.

Private procedure SetVariables(const Index: integer; const Value: TCustomVariable);

SetVariables stores a TCustomVariable in FVariableList at the position Index. If required, FVariableList is expanded to create a position at Index.

See also
Variables
Variables are the TCustomVariables associated with each data set.
Private function TimesIdentical(const Grid: TRbwDataGrid; const UsedTimes: TRealList; const TimeCol: integer): boolean;

TimesIdentical returns True if all the times recorded in Grid in column TimeCol are identical to those in UsedTimes.

Private procedure UpdateLinkages(const Expression: TExpression; const ARow: integer; const DSName: string);

UpdateLinkages updates the list of which variables depend on which others.

Private procedure ValidateCellFormula(const ACol, ARow: integer);

ValidateCellFormula ensures that when a formula has been entered at position ACol, ARow in dgDataSets, that the formula is valid.

Private procedure ValidateEdFormula(const Ed: TEdit);

ValidateEdFormula ensures that when a formula has been entered at one of the elevation edit boxes, that the formula is valid. See edZ, edHighZ, and edLowZ.

Private procedure EmphasizeValueChoices;

EmphasizeValueChoices changes the appearances of cbSetGridCellSize, cbEnclosedCells, cbIntersectedCells, and cbInterpolation so that if none of them is checked, their appearance is emphasized.

Public procedure GetData(const AScreenObject: TScreenObject);

When a TScreenObject is first created, GetData is called to display it's properties. GetDataForMultipleScreenObjects)

Public procedure GetDataForMultipleScreenObjects(const AScreenObjectList: TList);

When the properties of one or more TScreenObjects is being edited, GetDataForMultipleScreenObjects is called to display their properties.

See also
GetData
When a TScreenObject is first created, GetData is called to display it's properties.

Properties

Private property MultipleScreenObjects: boolean read FMultipleScreenObjects write SetMultipleScreenObjects;

MultipleScreenObjects is set to True if more than one TScreenObjects are being edited at one time. Also AllowGrayed is set to MultipleScreenObjects for cbLineColor, cbInterpolation, cbIntersectedCells, cbEnclosedCells, and cbFillColor.

Private property DataSets[const Index: integer]: TDataArray read GetDataSets write SetDataSets;

DataSets stores all the data sets used in the model.

Private property Expressions[const Row: integer]: TExpression read GetExpression write SetExpression;

Expressions stores the TExpressions associated with each data set.

Private property Orientations[const Index: integer]: TDataSetOrientation read GetDataSetOrientations;

Orientations is the TDataSetOrientation of the data set being edited.

Private property Variables[const Index: integer]: TCustomVariable read GetVariables write SetVariables;

Variables are the TCustomVariables associated with each data set.

Public property UndoSetScreenObjectProperties: TUndoSetScreenObjectProperties read FUndoSetScreenObjectProperties write FUndoSetScreenObjectProperties;

UndoSetScreenObjectProperties is used to set or undo the setting of the properties of a TScreenObject.


Generated by PasDoc 0.10.0 on 2006-10-31 09:56:37