bbcommon.pas

来自「電子看板的物件程式」· PAS 代码 · 共 121 行

PAS
121
字号
unit BBCommon;

interface

uses  BBConst, Classes, Dialogs;

(*																		*)
(* TBBMask type definition		*)
(*																		*)

type

	TBBMask = class( TComponent )

  	private
      FMaskArray: TMaskArray;
    	procedure LoadFrom( const Value: TMaskArray );
      procedure	SetRow( I,J: integer; Item: Byte );
      function	GetRow( I,J: integer ): Byte;
    public
    	constructor Create( Owner: TComponent ); override;
      procedure Load( stream: TStream );
      procedure Save( stream: TStream );
    	function	Copy( const Value: TBBMask ): Boolean;
    	procedure RestoreDefaults;
      property	Items: TMaskArray read FMaskArray write LoadFrom;
    	property	Item[ I,J: integer ]: Byte read GetRow write SetRow;

end;

(*															*)
(* TBBMask type implementation	*)
(*															*)

implementation

constructor TBBMask.Create( Owner: TComponent );
begin

	inherited Create( Owner );
  LoadFrom( MaskDefault );

end;

procedure TBBMask.Load( stream: TStream );
begin

	try
  	stream.ReadBuffer( FMaskArray, MaskArraySize );
	except
  	ShowMessage( 'Error reading custom charset.#13#10Loading default charset.' );
  end;

end;

procedure TBBMask.Save( stream: TStream );
begin

	try
  	stream.WriteBuffer( FMaskArray, MaskArraySize );
	except
  	ShowMessage( 'Error saving custom charset.#13#10Save procedure canceled.' );
  end;

end;

function	TBBMask.Copy( const Value: TBBMask ): Boolean;
var
	i,j: integer;
begin

	Result := true;
	for i := 0 to MaskItems - 1 do
  	for j := 0 to MaskItemSize - 1 do
    	begin
        Result := Result and ( FMaskArray[ i, j ] = Value.Item[ i, j ] );
    		FMaskArray[ i, j ] := Value.Item[ i, j ];
      end;

end;

procedure TBBMask.RestoreDefaults;
begin

  LoadFrom( MaskDefault );

end;

procedure TBBMask.LoadFrom( const Value: TMaskArray );
var
	i,j: integer;
begin

	for i := 0 to MaskItems - 1 do
  	for j := 0 to MaskItemSize - 1 do
    	FMaskArray[ i, j ] := Value[ i, j ];

end;

function	TBBMask.GetRow( I,J: integer ): Byte;
begin

	if( ( ( I >= 0 ) and ( I < MaskItems ) ) and
  		( ( J >= 0 ) and ( J < MaskItemSize ) ) ) then
  	Result := FMaskArray[ I, J ]
  else
  	Result := 0;

end;

procedure	TBBMask.SetRow( I,J: integer; Item: Byte );
begin

	if( ( ( I >= 0 ) and ( I < MaskItems ) ) and
  		( ( J >= 0 ) and ( J < MaskItemSize ) ) ) then
  	FMaskArray[ I, J ] := Item;

end;

end.

⌨️ 快捷键说明

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