⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inplaceeditorsdemoframemanager.pas

📁 胜天进销存源码,国产优秀的进销存
💻 PAS
字号:
unit InPlaceEditorsDemoFrameManager;

interface

uses
  Windows, Classes, Controls, SysUtils, Graphics, Forms, StdCtrls, ExtCtrls;

type
  TEditorDemoBaseFrame = class(TForm)
    lblFrameDescription: TLabel;
  private
    function GetDescriptionVisible: Boolean;
    procedure SetDescriptionVisible(AValue: Boolean);
  public
    procedure SetDescription(ADescription: string);

    property DescriptionVisible: Boolean read GetDescriptionVisible write SetDescriptionVisible;
  end;

  TEditorDemoFrameManager = class
  private
    FFrameList: TList;
    function GetFrame(AIndex: Integer): TEditorDemoBaseFrame;
    function GetFramesCount: Integer;
  public
    constructor Create; virtual;
    destructor Destroy; override;
    procedure AddFrame(AFrame: TForm; AFrameId: Integer);
    procedure UpdateFrameColors(AColor: TColor);
    procedure SetDescriptionsVisible(AValue: Boolean);

    property FramesCount: Integer read GetFramesCount;
    property Frames[AIndex: Integer]: TEditorDemoBaseFrame read GetFrame; default;
  end;

procedure DrawText(AStrings: array of string; APaintBox: TPaintBox);

var
  AFrameManager: TEditorDemoFrameManager;

implementation

{$R *.dfm}

uses Math, cxGraphics, cxGeometry;

procedure DrawText(AStrings: array of string; APaintBox: TPaintBox);
var
  I: Integer;
  S: string;
  ARect: TRect;
  ASize: TSize;
begin
  S := '';
  ASize.cx := 0;
  for I := Low(AStrings) to High(AStrings) do
  begin
    ASize.cx := Max(ASize.cx, APaintBox.Canvas.TextWidth(AStrings[I]));
    S := S + AStrings[I] + #13#10;
  end;

  ASize.cy := APaintBox.Canvas.TextHeight('Wg') * Length(AStrings);

  ARect := cxRectCenter(APaintBox.ClientRect, ASize);
  cxDrawText(APaintBox.Canvas.Handle, S, ARect, DT_WORDBREAK);
end;

{ TEditorDemoBaseFrame }

procedure TEditorDemoBaseFrame.SetDescription(ADescription: string);
begin
  lblFrameDescription.Caption := ADescription;
end;

function TEditorDemoBaseFrame.GetDescriptionVisible: Boolean;
begin
  Result := lblFrameDescription.Visible;
end;

procedure TEditorDemoBaseFrame.SetDescriptionVisible(AValue: Boolean);
begin
  lblFrameDescription.Visible := AValue;
end;

{ TEditorDemoFrameManager }

constructor TEditorDemoFrameManager.Create;
begin
  FFrameList := TList.Create;
end;

destructor TEditorDemoFrameManager.Destroy;
begin
  FreeAndNil(FFrameList);
  inherited;
end;

procedure TEditorDemoFrameManager.AddFrame(AFrame: TForm; AFrameId: Integer);
begin
  FFrameList.Add(AFrame);
  AFrame.Tag := AFrameId;
end;

function TEditorDemoFrameManager.GetFrame(
  AIndex: Integer): TEditorDemoBaseFrame;
var
  I: Integer;
begin
  Result := nil;
  for I := 0 to FramesCount - 1 do
    if TEditorDemoBaseFrame(FFrameList[I]).Tag = AIndex then
    begin
      Result := TEditorDemoBaseFrame(FFrameList[I]);
      Break;
    end;
end;

function TEditorDemoFrameManager.GetFramesCount: Integer;
begin
  Result := FFrameList.Count;
end;

procedure TEditorDemoFrameManager.UpdateFrameColors(AColor: TColor);
var
  I: Integer;
begin
  for I := 0 to FFrameList.Count - 1 do
    Frames[I].Color := AColor;
end;

procedure TEditorDemoFrameManager.SetDescriptionsVisible(AValue: Boolean);
var
  I: Integer;
begin
  for I := 0 to FramesCount - 1 do
    Frames[I].SetDescriptionVisible(AValue);
end;

initialization
  AFrameManager := TEditorDemoFrameManager.Create;

finalization
  AFrameManager.Free;
end.

⌨️ 快捷键说明

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