se_controls.pas

来自「小区水费管理系统源代码水费收费管理系统 水费收费管理系统」· PAS 代码 · 共 1,763 行 · 第 1/5 页

PAS
1,763
字号
    FBitmap: TBitmap;
    FBitmapTrCount: integer;
    FOnBeforeChange: TNotifyEvent;
    function  GetPixel(X, Y: Integer): TKColor;
    procedure SetPixel(X, Y: Integer; Value: TKColor);
    procedure SetHeight(const Value: integer);
    procedure SetFont(const Value: TFont);
    procedure SetWidth(const Value: integer);
    function GetPixelPtr(X, Y: Integer): PKColor;
    procedure DrawMarginRectDDB(DC: HDC; MarginRect,
      MarginDstRect: TRect; Stretch: boolean; Transparent: boolean = false); overload;
    procedure DrawMarginRect(Buffer: TSeBitmap; MarginRect,
      MarginDstRect: TRect; Stretch: boolean); overload;
    procedure DrawMarginRect(Canvas: TCanvas; MarginRect,
      MarginDstRect: TRect; Stretch: boolean; Transparent: boolean = false); overload;
  protected
  public
    constructor Create; virtual;
    destructor Destroy; override;

    procedure Assign(Source: TPersistent); override;
    procedure AssignTo(Dst: TPersistent); override;
    procedure SetSize(AWidth, AHeight: Integer);

    function  Empty: Boolean;
    procedure Changed;

    procedure Clear(Color: TKColor);
    procedure PerformTransparent(Color: TKColor);
    procedure PerformTransparentRect(Color: TKColor; ARect: TRect);

    procedure FillRect(R: TRect; Color: TKColor);
    procedure FillRoundRect(R: TRect; Radius: integer; Color: TKColor);
    procedure FillHalftoneRect(R: TRect; Color, HalfColor: TKColor);
    procedure FillGradientRect(Rect: TRect; BeginColor, EndColor: TKColor;
      Vertical: boolean);
    procedure FillRadialGradientRect(Rect: TRect; BeginColor, EndColor: TKColor;
      Pos: TPoint);
    procedure FillEllipse(R: TRect; Color: TKColor);

    procedure DrawEdge(R: TRect; RaisedColor, SunkenColor: TKColor);
    procedure DrawBevel(R: TRect; Color: TKColor; Width: integer; Down: boolean);
    procedure DrawRect(R: TRect; Color: TKColor);
    procedure DrawFocusRect(R: TRect; Color: TKColor);
    procedure DrawRoundRect(R: TRect; Radius: integer; Color: TKColor);
    procedure DrawLine(R: TRect; Color: TKColor);
    procedure DrawEllipse(R: TRect; Color: TKColor);

    procedure MoveTo(X, Y: integer);
    procedure LineTo(X, Y: integer; Color: TKColor);
    procedure DrawPolygon(Points: array of TPoint; Color: TColor);
    procedure FillPolygon(Points: array of TPoint; Color: TColor);
    procedure FillHalftonePolygon(Points: array of TPoint; Color, HalfColor: TKColor);

    function DrawText(AText: string; var Bounds: TRect; Flag: cardinal): integer; overload;
    function DrawText(AText: string; X, Y: integer): integer; overload;
    procedure DrawVerticalText(AText: string; Bounds: TRect; Flag: cardinal;
      FromTop: boolean);
    function TextWidth(AText: string; Flags: Integer = 0): integer;
    function TextHeight(AText: string): integer;

    procedure Draw(DC: HDC; X, Y: integer; Transparent: boolean = false); overload;
    procedure Draw(DC: HDC; X, Y: integer; SrcRect: TRect; Transparent: boolean = false); overload;
    procedure Draw(DC: HDC; DstRect, SrcRect: TRect; Transparent: boolean = false); overload;
    procedure Draw(Canvas: TCanvas; X, Y: integer; Transparent: boolean = false); overload;
    procedure Draw(Canvas: TCanvas; X, Y: integer; SrcRect: TRect; Transparent: boolean = false); overload;
    procedure Draw(Canvas: TCanvas; DstRect, SrcRect: TRect; Transparent: boolean = false); overload;
    procedure Draw(Bitmap: TSeBitmap; X, Y: integer); overload;
    procedure Draw(Bitmap: TSeBitmap; X, Y: integer; SrcRect: TRect); overload;
    procedure Draw(Bitmap: TSeBitmap; DstRect, SrcRect: TRect); overload;

    procedure DrawTile(Bitmap: TSeBitmap; DstRect, SrcRect: TRect); overload;
    procedure DrawTile(Canvas: TCanvas; DstRect, SrcRect: TRect; Transparent: boolean = false); overload;

    procedure DrawMargin(Canvas: TCanvas; DstRect, SrcRect: TRect;
      MarginLeft, MarginTop, MarginRight, MarginBottom: integer; Stretch: boolean; Transparent: boolean = false); overload;
    procedure DrawMargin(Bitmap: TSeBitmap; DstRect, SrcRect: TRect;
      MarginLeft, MarginTop, MarginRight, MarginBottom: integer; Stretch: boolean); overload;

    { DDB Routines }
    procedure DDBNeed;
    procedure MaskNeed(Color: TColor);
    procedure DrawDDB(DC: HDC; X, Y: integer; Transparent: boolean = false); overload;
    procedure DrawDDB(DC: HDC; X, Y: integer; SrcRect: TRect; Transparent: boolean = false); overload;
    procedure DrawDDB(DC: HDC; DstRect, SrcRect: TRect; Transparent: boolean = false); overload;

    procedure DrawTileDDB(DC: HDC; DstRect, SrcRect: TRect; Transparent: boolean = false); overload;
    procedure DrawMarginDDB(DC: HDC; DstRect, SrcRect: TRect;
      MarginLeft, MarginTop, MarginRight, MarginBottom: integer; Stretch: boolean;
      Transparent: boolean = false); overload;

    procedure MergeDraw(Bitmap: TSeBitmap; X, Y: integer; SrcRect: TRect); overload;

    procedure SetAlpha(Alpha: byte); overload;
    procedure SetAlpha(Alpha: byte; Rect: TRect); overload;

    procedure ChangeBitmapHue(DeltaHue: integer);
    procedure ChangeBitmapBrightness(DeltaBrightness: integer);

    procedure LoadFromStream(Stream: TStream);
    procedure SaveToStream(Stream: TStream);
    procedure LoadFromFile(const FileName: string);
    procedure SaveToFile(const FileName: string);
    procedure LoadFromBmpFile(const FileName: string);
    procedure SaveToBmpFile(const FileName: string);
    procedure LoadFromBmpStream(Stream: TStream);
    procedure LoadFromPcxStream(Stream: TStream);

    function GetBitmapLink(Rect: TRect): TSeBitmapLink; overload;
    function GetBitmapLink(Rect: string): TSeBitmapLink; overload;

    property Pixels[X, Y: Integer]: TKColor read GetPixel write SetPixel; default;
    property PixelPtr[X, Y: Integer]: PKColor read GetPixelPtr;
    property Bits: PKColorArray read FBits;

    property Font: TFont read FFont write SetFont;

    property Width: integer read FWidth write SetWidth;
    property Height: integer read FHeight write SetHeight;

    property Name: string read FName write FName;

    property Blend: boolean read FBlend write FBlend;

    property Handle: HBITMAP read FHandle;
    property BitmapInfo: TBitmapInfo read FBitmapInfo;
    property DC: HDC read FDC;
    property Tag: integer read FTag write FTag;

    property OnBeforeChange: TNotifyEvent read FOnBeforeChange write FOnBeforeChange;
    property OnChanged: TNotifyEvent read FOnChanged write FOnChanged;
  published
  end;


{ TSeBitmapLink }

  TSeBitmapLink = class(TPersistent)
  private
    FBitmap: TSeBitmap;
    FRect: TRect;
    FName: string;
    function GetBottom: integer;
    function GetLeft: integer;
    function GetRight: integer;
    function GetTop: integer;
    procedure SetBottom(const Value: integer);
    procedure SetLeft(const Value: integer);
    procedure SetRight(const Value: integer);
    procedure SetTop(const Value: integer);
    function GetAssigned: boolean;
  public
    constructor Create;
    destructor Destroy; override;

    procedure Assign(Source: TPersistent); override;

    procedure Draw(Canvas: TCanvas; X, Y: integer); overload;
    procedure Draw(Bitmap: TSeBitmap; X, Y: integer); overload;

    property Assigned: boolean read GetAssigned;
    property Bitmap: TSeBitmap read FBitmap write FBitmap;
    property Rect: TRect read FRect write FRect;
  published
    property Name: string read FName write FName;
    property Left: integer read GetLeft write SetLeft;
    property Top: integer read GetTop write SetTop;
    property Right: integer read GetRight write SetRight;
    property Bottom: integer read GetBottom write SetBottom;
  end;

{ TSeBitmapList }

  TSeBitmapList = class(TList)
  private
    function GetBitmap(index: integer): TSeBitmap;
    function GetBitmapByName(index: string): TSeBitmap;
  protected
  public
    constructor Create; virtual;
    destructor Destroy; override;

    procedure Clear; override;

    function GetBitmapLink(Bitmap: TSeBitmap; Rect: TRect): TSeBitmapLink; overload;
    function GetBitmapLink(Name: string; Rect: TRect): TSeBitmapLink; overload;
    function GetBitmapLink(Name, Rect: string): TSeBitmapLink; overload;

    property Bitmaps[index: integer]: TSeBitmap read GetBitmap; default;
    property BitmapByName[index: string]: TSeBitmap read GetBitmapByName; 
  end;

{ Color functions }

function KColor(Color: TColor; A: Byte = $FF): TKColor; overload;
function KColor(R, G, B: SmallInt; A: Byte = $FF): TKColor; overload;
function KColor(ColorRec: TKColorRec): TKColor; overload;

function KColorToColor(Color: TKColor): TColor;

function RaisedColor(Color: TKColor; DR, DG, DB: byte; DA: byte = 0): TKColor; overload;
function SunkenColor(Color: TKColor; DR, DG, DB: byte; DA: byte = 0): TKColor; overload;
function RaisedColor(Color: TKColor; Dx: byte): TKColor; overload;
function SunkenColor(Color: TKColor; Dx: byte): TKColor; overload;

function HSLtoRGB(H, S, L: Single): TKColor;
procedure RGBtoHSL(RGB: TKColor; out H, S, L: single);

function ChangeHue(Color: TKColor; DeltaHue: integer): TKColor;
function ChangeBrightness(Color: TKColor; DeltaBrightness: integer): TKColor;

{ Windows Blending }

const

  EnableWindowsBlend = true;

type

  TBlendFunction = record
    BlendOp,BlendFlags,Alpha,Format: Byte;
  end;

var

  AlphaBlend: function (hdcDest: HDC; nXOriginDest, nYOriginDest, nWidthDest,
    nHeightDest: Integer; hdcSrc: HDC; nXOriginSrc, nYOriginSrc, nWidthSrc,
    nHeightSrc: Integer; blendFunction: TBlendFunction): BOOL; stdcall;

  TransparentBlt: function (hdcSrc: HDC; nXOriginSrc, nYOriginSrc, nWidthSrc,
    nHeightSrc: Integer; hdcDest: HDC; nXOriginDest, nYOriginDest, nWidthDest,
    nHeightDest: Integer; Color: Longint): BOOL; stdcall;


{ Strings functions }

function GetToken(var S: string): string;

function RectToString(R: TRect): string;
function StringToRect(S: string): TRect;

function FormatStr(DC: HDC; S: WideString; Width: integer): WideString; overload;
function FormatStr(Bitmap: TSeBitmap; S: WideString; Width: integer): WideString; overload;

{ Rect, Point and Polygon }

function RectWidth(R: TRect): integer;
function RectHeight(R: TRect): integer;
function RectHCenter(var R: TRect; Bounds: TRect): TRect;
function RectVCenter(var R: TRect; Bounds: TRect): TRect;
function RectCenter(var R: TRect; Bounds: TRect): TRect;
function RectOffset(ARect: TRect; Offset: integer): TRect;
function IsRectEmpty(Rect: TRect): boolean;
function CompareRect(Rect1, Rect2: TRect): boolean;

function PointInPolygon(const P: TPoint; const Points: array of TPoint): boolean;

{ Drawing routines }

procedure DrawFrameControlGlyph(Canvas: TCanvas; ARect: TRect; AType, AStyle: cardinal; Color: TColor);

function DrawText(ACanvas: TCanvas; AText: WideString; var Bounds: TRect; Flag: cardinal): integer; overload;
function DrawText(ACanvas: TCanvas; AText: WideString; X, Y: integer): integer; overload;
function DrawVerticalText(Canvas: TCanvas; AText: WideString; Bounds: TRect; Flag: cardinal; FromTop: boolean): integer;

function TextWidth(Canvas: TCanvas; AText: WideString; Flags: Integer = 0): integer;
function TextHeight(Canvas: TCanvas; AText: WideString): integer;

procedure MoveTo(Canvas: TCanvas; X, Y: integer);
procedure LineTo(Canvas: TCanvas; X, Y: integer; Color: TColor);

procedure DrawEdge(Canvas: TCanvas; Rect: TRect; RaisedColor, SunkenColor: TColor); overload;
procedure DrawEdge(Canvas: TCanvas; ALeft, ATop, ARight, ABottom: integer; RaisedColor, SunkenColor: TColor); overload;

procedure DrawRect(Canvas: TCanvas; Rect: TRect; Color: TColor); overload;
procedure DrawRect(Canvas: TCanvas; ALeft, ATop, ARight, ABottom: integer; Color: TColor); overload;

procedure DrawFocusRect(Canvas: TCanvas; Rect: TRect; Color: TColor);

procedure DrawBevel(Canvas: TCanvas; var R: TRect; BevelSides: TSeBevelSides; Width: integer; RaisedColor, SunkenColor: TColor);

procedure FillRect(Canvas: TCanvas; Rect: TRect; Color: TColor); overload;
procedure FillRect(Canvas: TCanvas; ALeft, ATop, ARight, ABottom: integer; Color: TColor); overload;

procedure DrawRoundRect(Canvas: TCanvas; ARect: TRect; Radius: integer; Color: TColor);
procedure FillRoundRect(Canvas: TCanvas; ARect: TRect; Radius: integer; Color: TColor);
procedure FillGradientRect(Canvas: TCanvas; ARect: TRect; BeginColor, EndColor: TColor; Vertical: boolean);
procedure FillHalftoneRect(Canvas: TCanvas; ARect: TRect; Color, HalfColor: TColor);

procedure DrawPolygon(Canvas: TCanvas; Points: array of TPoint; Color: TColor);
procedure FillPolygon(Canvas: TCanvas; Points: array of TPoint; Color: TColor);
procedure FillHalftonePolygon(Canvas: TCanvas; Points: array of TPoint; Color, HalfColor: TColor);

procedure DrawIcon(Canvas: TCanvas; ARect: TRect; AIcon: TIcon);

{ Graphics routines }

function GetPlasma(const Color, PlasmaColor: TKColor): TSeBitmap;

{ Stream routines }

function ReadString(S: TStream): string;
procedure WriteString(S: TStream; Value: string);

{ Region }

function CreateRegionFromBitmap(Bitmap: TSeBitmap; Left, Top: integer): HRgn;

{ System }

function GetKeyBoardDelayInterval: integer;
function GetKeyBoardSpeedInterval: integer;

{ Mouse capture }

const
  CaptureHandle: Hwnd = 0;

procedure CaptureMouse(const Wnd: HWND);
procedure EndCapture;

{ Utils }

{$IFNDEF KS_COMPILER5_UP}
procedure FreeAndNil(var Obj);
{$ENDIF}

{ Windows version information }

const

  IsWindowsNT: boolean = false;


type

{ TObjectList class }

  TObjectList = class(TList)
  private
    FOwnsObjects: Boolean;
  protected
    function GetItem(Index: Integer): TObject;
    procedure SetItem(Index: Integer; AObject: TObject);
  public
    constructor Create; overload;
    constructor Create(AOwnsObjects: Boolean); overload;

    function Add(AObject: TObject): Integer;
    function Remove(AObject: TObject): Integer;
    function IndexOf(AObject: TObject): Integer;
    function FindInstanceOf(AClass: TClass; AExact: Boolean = True; AStartAt: Integer = 0): Integer;
    procedure Insert(Index: Integer; AObject: TObject);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?