home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2001 October
/
Chip_2001-10_cd1.bin
/
zkuste
/
delphi
/
kolekce
/
d6
/
FRCLX.ZIP
/
SOURCE
/
FR_ChBox.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
2001-07-06
|
5KB
|
204 lines
{******************************************}
{ }
{ FastReport CLX v2.4 }
{ Checkbox Add-In Object }
{ }
{ Copyright (c) 1998-2001 by Tzyganenko A. }
{ }
{******************************************}
unit FR_ChBox;
interface
{$I FR.inc}
uses
SysUtils, Types, Classes, QGraphics, QMenus, FR_Class;
type
TfrCheckBoxObject = class(TComponent) // fake component
end;
TfrCheckBoxView = class(TfrView)
private
procedure DrawCheck(ARect: TRect; Checked: Boolean);
protected
procedure SetPropValue(Index: String; Value: Variant); override;
function GetPropValue(Index: String): Variant; override;
public
CheckStyle: Byte;
CheckColor: TColor;
constructor Create; override;
procedure Draw(Canvas: TCanvas); override;
procedure StreamOut(Stream: TStream); override;
procedure ExportData; override;
procedure LoadFromStream(Stream: TStream); override;
procedure SaveToStream(Stream: TStream); override;
procedure DefinePopupMenu(Popup: TPopupMenu); override;
procedure DefineProperties; override;
end;
const
csCross = 0;
csCheck = 1;
implementation
uses FR_Intrp, FR_Pars, FR_Utils, FR_Const, Variants;
{$R *.res}
constructor TfrCheckBoxView.Create;
begin
inherited Create;
FrameWidth := 2;
FrameTyp := 15;
BaseName := 'Check';
CheckStyle := 0;
frConsts['csCross'] := csCross;
frConsts['csCheck'] := csCheck;
end;
procedure TfrCheckBoxView.DefineProperties;
begin
inherited DefineProperties;
AddEnumProperty('CheckStyle', 'csCross;csCheck', [csCross,csCheck]);
AddProperty('CheckColor', [frdtColor], nil);
AddProperty('DataField', [frdtOneObject, frdtHasEditor, frdtString], frFieldEditor);
end;
procedure TfrCheckBoxView.SetPropValue(Index: String; Value: Variant);
begin
inherited SetPropValue(Index, Value);
Index := AnsiUpperCase(Index);
if Index = 'CHECKSTYLE' then
CheckStyle := Value
else if Index = 'CHECKCOLOR' then
CheckColor := Value;
end;
function TfrCheckBoxView.GetPropValue(Index: String): Variant;
begin
Index := AnsiUpperCase(Index);
Result := inherited GetPropValue(Index);
if Result <> Null then Exit;
if Index = 'CHECKSTYLE' then
Result := CheckStyle
else if Index = 'CHECKCOLOR' then
Result := CheckColor
end;
procedure TfrCheckBoxView.DrawCheck(ARect: TRect; Checked: Boolean);
var
s: String;
begin
if Checked then
with Canvas, ARect do
begin
Font.Name := 'Wingdings';
Font.Color := CheckColor;
Font.Style := [];
Font.Height := (DRect.Bottom - DRect.Top);
Font.CharSet := DEFAULT_CHARSET;
if CheckStyle = 0 then
s := #251 else
s := #252;
TextOut(DRect.Left + (DRect.Right - DRect.Left - TextWidth(s)) div 2,
DRect.Top, s);
end;
end;
procedure TfrCheckBoxView.Draw(Canvas: TCanvas);
var
Res: Boolean;
begin
BeginDraw(Canvas);
Memo1.Assign(Memo);
CalcGaps;
ShowBackground;
Res := False;
if (DocMode = dmPrinting) and (Memo1.Count > 0) and (Memo1[0] <> '') then
Res := Memo1[0][1] <> '0';
if DocMode = dmDesigning then
Res := True;
DrawCheck(DRect, Res);
ShowFrame;
RestoreCoord;
end;
procedure TfrCheckBoxView.StreamOut(Stream: TStream);
var
SaveTag: String;
begin
BeginDraw(Canvas);
Memo1.Assign(Memo);
CurReport.InternalOnEnterRect(Memo1, Self);
frInterpretator.DoScript(Script);
if not Visible then Exit;
SaveTag := Tag;
if (Tag <> '') and (Pos('[', Tag) <> 0) then
ExpandVariables(Tag);
if Memo1.Count > 0 then
Memo1[0] := IntToStr(Trunc(frParser.Calc(Memo1[0])));
Stream.Write(Typ, 1);
frWriteString(Stream, ClassName);
SaveToStream(Stream);
Tag := SaveTag;
end;
procedure TfrCheckBoxView.ExportData;
var
s: String;
begin
inherited;
s := '';
if (Memo.Count > 0) and (Memo[0] <> '') then
if Memo[0][1] <> '0' then
s := 'X';
CurReport.InternalOnExportText(DRect, x, y, s, 0{FrameTyp}, Self);
end;
procedure TfrCheckBoxView.DefinePopupMenu(Popup: TPopupMenu);
begin
// no specific items in popup menu
end;
procedure TfrCheckBoxView.LoadFromStream(Stream: TStream);
begin
inherited LoadFromStream(Stream);
if frVersion > 23 then
begin
Stream.Read(CheckStyle, 1);
Stream.Read(CheckColor, 4);
end;
end;
procedure TfrCheckBoxView.SaveToStream(Stream: TStream);
begin
inherited SaveToStream(Stream);
Stream.Write(CheckStyle, 1);
Stream.Write(CheckColor, 4);
end;
var
Bmp: TBitmap;
initialization
Bmp := TBitmap.Create;
Bmp.LoadFromResourceName(hInstance, 'FR_CHECKBOXVIEW');
frRegisterObject(TfrCheckBoxView, Bmp, SInsCheckBox);
finalization
Bmp.Free;
end.