The SDL Component Suite is an industry leading collection of components supporting scientific and engineering computing. Please visit the SDL Web site for more information.... |
Home ![]() ![]() ![]() |
|
Interface of SDL_Meter |
|
const defWidth = 10.0; {$IFDEF PAIDVERS} SDLVersionInfo = 'meter_r1200_full'; IsLightEd = false; {$ELSE} SDLVersionInfo = 'meter_r1200_lighted'; IsLightEd = true; {$ENDIF} Release = 1200; type TMeterLayout = (mlCirc90, mlCirc120, mlCirc180, mlCirc270, mlCirc300, mlCirc360); { meter layout } TmtBeforeDrawScaleLabelEvent = procedure (Sender: TObject; Canvas: TCanvas; var CurrentTickLabel: string; ChartX, ChartY: integer) of object; TMeterRenderedEvent = procedure (Sender: TObject; Canvas: TCanvas) of object; TMouseMoveInMeterEvent = procedure (Sender: TObject; WithinRange: boolean; Shift: TShiftState; MeterValue: double) of object; TBeforeDrawNeedleEvent = procedure (Sender: TObject; Canvas: TCanvas; var NeedleDrawn: boolean) of object; TNeedleLayout = class (TPersistent) { parameters of needle layout } private FColorFill : TColor; { color of arrow } FColorLine : TColor; { color of arrow frame } FSize1 : integer; { size of arrow head } FThickness : integer; { thickness of arrow shaft } FPctNeedleLeng: integer; { percent of standard needle length } FAngle1 : integer; { angle of arrow head } FBackShift1 : integer; { flatness of arrow head base } FShadowDx : integer; { x-shift for shadow } FShadowDy : integer; { y-shift for shadow } FShadowColor : TColor; { color of shadow } FOnChange : TNotifyEvent; FVisible : boolean; { TRUE: needle is visible } procedure SetArrowSize1 (Value: integer); procedure SetBackShift1 (Value: integer); procedure SetArrowThick (Value: integer); procedure SetArrowAngle1 (Value: integer); procedure SetColorFill (Value: TColor); procedure SetColorLine (Value: TColor); procedure SetNeedleLength (Value: integer); procedure SetShadowDx (Value: integer); procedure SetShadowDy (Value: integer); procedure SetShadowColor (Value: TColor); procedure SetVisible (Value: boolean); protected public constructor Create; destructor Destroy; override; procedure Changed; published property HeadSize: integer read FSize1 write SetArrowSize1; property HeadAngle: integer read FAngle1 write SetArrowAngle1; property HeadMidLeng: integer read FBackShift1 write SetBackShift1; property Thickness: integer read FThickness write SetArrowThick; property ColorBody: TColor read FColorFill write SetColorFill; property ColorOutline: TColor read FColorLine write SetColorLine; property PercentNeedleLength: integer read FPctNeedleLeng write SetNeedleLength; property ShadowDx: integer read FShadowDx write SetShadowDx; property ShadowDy: integer read FShadowDy write SetShadowDy; property ShadowColor: TColor read FShadowColor write SetShadowColor; property Visible: boolean read FVisible write SetVisible; property OnChange: TNotifyEvent read FOnChange write FOnChange; end; TMeter = class (TGraphicControl) private FAnchorCovrd : boolean; { True: anchor visible } AuxBGBmp : TBitMap; { bitmap to hold background picture } AuxACBmp : TBitMap; { bitmap to hold anchor cover picture } AuxACMaskBmp : TBitMap; { bitmap to hold anchor cover picture } FBakGndFName : string; FBGFillMode : TBkgFill; FACoverFName : string; FLogarithmic : boolean; { TRUE: logarithmic scale } FScaleVis : boolean; { TRUE: scale is visible } FSizeAnchor : integer; { size of needle anchor } FLimWatHighOn : boolean; { TRUE: overflow limit watch on } FLimWatLowOn : boolean; { TRUE: underflow indicator on } FLimWatActCol : TColor; { active color of limit watch } FLimWatPsvCol : TColor; { passive color of limit watch } FOFL : boolean; { TRUE: overflow occurred } FUFL : boolean; { TRUE: underflow occurred } FColorScale : TColor; { color of scale } FCaption : string; { unit ID } FFrameStyle : TFrameStyle; { style of frame } FDecPlaces : integer; { nr. of decimal places } FNrTicks : integer; { number of scale ticks } FBRim : integer; { bottom rim } FSRim : integer; { side rim } FTRim : integer; { top rim } FShortTicks : boolean; { TRUE: short ticks are drawn } FScaleLine : boolean; { TRUE: scale line is drawn } FColorBakG : TColor; { color of meter background } FColorCover : TColor; { color of cover metal } FColBlackLine : TColor; { colors to draw the frame } FColGrayLine : TColor; { -"- } FColWhiteLine : TColor; { -"- } FColorScheme : TColorScheme; { color scheme of frames } FColorBakGLow : TColor; { scale background, "low" region } FColorBakGNorm: TColor; { scale background, "normal" region } FColorBakGHigh: TColor; { scale background, "high" region } FFontCaption : TFont; { font of caption } FScaleBakWidth: double; { width of scale background ring } FScaleBkVis : boolean; { colored scale background visible } FLowThreshold : double; { upper border of "low" region } FHighThreshold: double; { lower border of "high" region } FNeedleLayout : TNeedleLayout; { layout params of needle } FNeedle2Layout: TNeedleLayout; { layout params of 2nd needle } FMeterLayout : TMeterLayout; { layout of meter } FMeterAngle : integer; { angle, corresponds to FMeterLayout } FMeterRadius : double; { radius of meter scale } FMeterCenterX : integer; { pos. of needle anchor } FMeterCenterY : integer; { pos. of needle anchor } FValue : double; { value of meter needle } FValue2 : double; { value of secondary meter needle } FMinValue : double; { minimum value of meter } FMaxValue : double; { maximum value of meter } FOnMMvInMeter : TMouseMoveInMeterEvent; FOnOverFlow : TNotifyEvent; FOnUnderFlow : TNotifyEvent; FOnNormalRange: TNotifyEvent; FOnBefDrawSclLab : TmtBeforeDrawScaleLabelEvent; FOnMeterRendered : TMeterRenderedEvent; FOnBefDrawNeedle : TBeforeDrawNeedleEvent; procedure SetAnchorCovrd (Value: boolean); procedure SetACoverFname (Value: string); procedure SetBakGndFname (Value: string); procedure SetBGFillMode (Value: TBkgFill); procedure SetSizeAnchor (Value: integer); procedure SetColorScale (Value: TColor); procedure SetColorBakG (Value: TColor); procedure SetColorCover (Value: TColor); procedure SetColorScheme (Value: TColorScheme); procedure SetColorBakgLow (Value: TColor); procedure SetColorBakgNorm (Value: TColor); procedure SetColorBakgHigh (Value: TColor); procedure SetFrameStyle (value: TFrameStyle); procedure SetDecPlaces (Value: integer); procedure SetNrTicks (Value: integer); procedure SetBRim (Value: integer); procedure SetTRim (Value: integer); procedure SetSRim (Value: integer); procedure SetValue (Value: double); procedure SetValue2 (Value: double); procedure SetFontCaption (Value: TFont); procedure SetMeterLayout (Value: TMeterLayout); procedure SetMinValue (Value: double); procedure SetMaxValue (Value: double); procedure SetLowThreshold (Value: double); procedure SetHighThreshold (Value: double); procedure SetLimWatHighOn (Value: boolean); procedure SetLimWatLowOn (Value: boolean); procedure SetLimWatActCol (Value: TColor); procedure SetLimWatPsvCol (Value: TColor); procedure SetLogarithmic (value: boolean); procedure SetNeedleLayout (x: TNeedleLayout); procedure SetNeedle2Layout (x: TNeedleLayout); procedure SetShortTicks (Value: boolean); procedure SetScaleLine (Value: boolean); procedure SetScaleBkWidth (Value: double); procedure SetScaleBkVis (Value: boolean); procedure SetScaleVis (Value: boolean); procedure SetUnitLabel (astr: string); function CalcM (DecPlaces: integer; lo, hi: double):integer; procedure WMMouseMoveInMeter(var Message: TWMMouse); message WM_MOUSEMOVE; protected procedure Paint; override; procedure StyleChanged (Sender: TObject); procedure CalcMeterLayoutParams; procedure Loaded; override; procedure DoOverFlowEvent; procedure DoUnderFlowEvent; procedure DoNormalRangeEvent; procedure MouseMoveInMeter (InRange: boolean; Shift: TShiftState; MeterValue: double); public constructor Create(AOwner: TComponent); override; destructor Destroy; override; function CalcNeedleAngle (value: double): double; procedure ConvertToPixelCoords (value, pctradius: double; var X, Y: integer); function ConvertPixelToValue (XPos, YPos: integer; var MeterValue: double): boolean; property OriginX: integer read FMeterCenterX; property OriginY: integer read FMeterCenterY; procedure SetBounds (ALeft, ATop, AWidth, AHeight: Integer); override; property ScaleRadius: double read FMeterRadius; published property Align; property AnchorSize: integer read FSizeAnchor write SetSizeAnchor; property AnchorCovered: boolean read FAnchorCovrd write SetAnchorCovrd; property AnchorImage: string read FACoverFName write SetACoverFname; property BackGroundImg: string read FBakGndFName write SetBakGndFname; property BkgndFillMode: TBkgFill read FBGFillMode write SetBGFillMode; property Caption: string read FCaption write SetUnitLabel; property ColorBakG: TColor read FColorBakG write SetColorBakG; property ColorCover: TColor read FColorCover write SetColorCover; property ColorScale: TColor read FColorScale write SetColorScale; property ColorScheme: TColorScheme read FColorScheme write SetColorScheme; property ColorSclBkLow: TColor read FColorBakGLow write SetColorBakGLow; property ColorSclBkNorm: TColor read FColorBakGNorm write SetColorBakGNorm; property ColorSclBkHigh: TColor read FColorBakGHigh write SetColorBakGHigh; {$IFNDEF ISCLX} property DragKind; property DragCursor; property DragMode; {$ENDIF} property Font; property FontCaption: TFont read FFontCaption write SetFontCaption; property FrameStyle: TFrameStyle read FFrameStyle write SetFrameStyle; property Hint; property LimWatchHighOn: boolean read FLimWatHighOn write SetLimWatHighOn; property LimWatchLowOn: boolean read FLimWatLowOn write SetLimWatLowOn; property LimWatchActColor: TColor read FLimWatActCol write SetLimWatActCol; property LimWatchPsvColor: TColor read FLimWatPsvCol write SetLimWatPsvCol; property Logarithmic: boolean read FLogarithmic write SetLogarithmic; property ThresholdLow: double read FLowThreshold write SetLowThreshold; property ThresholdHigh: double read FHighThreshold write SetHighThreshold; property MeterMinValue: double read FMinValue write SetMinValue; property MeterMaxValue: double read FMaxValue write SetMaxValue; property MeterDecPlaces: integer read FDecPlaces write SetDecPlaces; property MeterNrTicks: integer read FNrTicks write SetNrTicks; property MeterLayout: TMeterLayout read FMeterLayout write SetMeterLayout; property MeterShortTicks: boolean read FShortTicks write SetShortTicks; property MeterScaleLine: boolean read FScaleLine write SetScaleLine; property NeedleLayout: TNeedleLayout read FNeedleLayout write SetNeedleLayout; property NeedleLayoutSec: TNeedleLayout read FNeedle2Layout write SetNeedle2Layout; property ParentFont; property ParentShowHint; property RimBottom: integer read FBRim write SetBrim; property RimTop: integer read FTRim write SetTRim; property RimSide: integer read FSRim write SetSRim; property ScaleBkWidth: double read FScaleBakWidth write SetScaleBkWidth; property ScaleBkVisible: boolean read FScaleBkVis write SetScaleBkVis; property ScaleVisible: boolean read FScaleVis write SetScaleVis; property ShowHint; {$IFDEF GE_LEV17} (**) property StyleElements; {$ENDIF} property Value: double read FValue write SetValue; property ValueSec: double read FValue2 write SetValue2; property Visible; property OnBeforeDrawNeedle: TBeforeDrawNeedleEvent read FOnBefDrawNeedle write FOnBefDrawNeedle; property OnBeforeDrawScaleLabel: TmtBeforeDrawScaleLabelEvent read FOnBefDrawSclLab write FOnBefDrawSclLab; property OnClick; property OnDblClick; property OnDragDrop; property OnDragOver; property OnEndDrag; property OnMeterRendered: TMeterRenderedEvent read FOnMeterRendered write FOnMeterRendered; property OnMouseMove; property OnMouseMoveInMeter: TMouseMoveInMeterEvent read FOnMMvInMeter write FOnMMvInMeter; property OnMouseDown; property OnMouseUp; property OnNormalRange: TNotifyEvent read FOnNormalRange write FOnNormalRange; property OnOverFlow: TNotifyEvent read FOnOverFlow write FOnOverFlow; property OnStartDrag; property OnUnderFlow: TNotifyEvent read FOnUnderFlow write FOnUnderFlow; end;
|