From 6c6c1338fdc65b8cd7349fc0402c8c730d7777a3 Mon Sep 17 00:00:00 2001 From: jesus Date: Tue, 24 Apr 2012 06:17:03 +0000 Subject: [PATCH] LazReport, published property KeepAspect and Centered for Picture Object git-svn-id: trunk@36994 - --- components/lazreport/source/lr_class.pas | 44 +++++++++++++++++++++--- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/components/lazreport/source/lr_class.pas b/components/lazreport/source/lr_class.pas index 1da92ed6f1..518e393411 100644 --- a/components/lazreport/source/lr_class.pas +++ b/components/lazreport/source/lr_class.pas @@ -469,11 +469,15 @@ type fPicture: TPicture; FSharedName: string; + function GetCentered: boolean; + function GetKeepAspect: boolean; procedure P1Click(Sender: TObject); procedure P2Click(Sender: TObject); function GetPictureType: byte; function PictureTypeToGraphic(b: Byte): TGraphic; function ExtensionToGraphic(const Ext: string): TGraphic; + procedure SetCentered(AValue: boolean); + procedure SetKeepAspect(AValue: boolean); function StreamToGraphic(M: TMemoryStream): TGraphic; procedure SetPicture(const AValue: TPicture); protected @@ -492,6 +496,8 @@ type published property Picture : TPicture read fPicture write SetPicture; + property KeepAspect:boolean read GetKeepAspect write SetKeepAspect; + property Centered: boolean read GetCentered write SetCentered; property Memo; property Script; property Frames; @@ -4507,7 +4513,7 @@ begin m := TMenuItem.Create(Popup); m.Caption := sPictureCenter; m.OnClick := @P1Click; - m.Checked := (Flags and flPictCenter) <> 0; + m.Checked := Centered; Popup.Items.Add(m); m := TMenuItem.Create(Popup); @@ -4515,7 +4521,7 @@ begin m.OnClick := @P2Click; m.Enabled := Stretched; if m.Enabled then - m.Checked := (Flags and flPictRatio) <> 0; + m.Checked := KeepAspect; Popup.Items.Add(m); end; @@ -4532,12 +4538,22 @@ begin begin t := TfrView(frDesigner.Page.Objects[i]); if t.Selected then - t.Flags := (t.Flags and not flPictCenter) + Word(Checked) * flPictCenter; + SetBit(t.Flags, Checked, flPictCenter); end; end; frDesigner.AfterChange; end; +function TfrPictureView.GetKeepAspect: boolean; +begin + Result:=((Flags and flPictRatio)<>0); +end; + +function TfrPictureView.GetCentered: boolean; +begin + Result:=((Flags and flPictCenter)<>0); +end; + procedure TfrPictureView.P2Click(Sender: TObject); var i: Integer; @@ -4551,7 +4567,7 @@ begin begin t :=TfrView(frDesigner.Page.Objects[i]); if t.Selected then - t.Flags := (t.Flags and not flPictRatio) + Word(Checked) * flPictRatio; + SetBit(t.Flags, Checked, flPictRatio); end; end; frDesigner.AfterChange; @@ -4586,6 +4602,26 @@ begin result := nil; end; +procedure TfrPictureView.SetCentered(AValue: boolean); +begin + if Centered<>AValue then + begin + BeforeChange; + SetBit(Flags, AValue, flPictCenter); + AfterChange; + end; +end; + +procedure TfrPictureView.SetKeepAspect(AValue: boolean); +begin + if KeepAspect<>AValue then + begin + BeforeChange; + SetBit(Flags, AValue, flPictRatio); + AfterChange; + end; +end; + function TfrPictureView.StreamToGraphic(M: TMemoryStream): TGraphic; function ReadString(Len: Integer): string;