{******************************************} { } { FastReport v4.0 } { Property editors for Designer } { } { Copyright (c) 1998-2008 } { by Alexander Tzyganenko, } { Fast Reports Inc. } { } {******************************************} unit FMX.frxCustomEditors; interface {$I frx.inc} uses System.Classes, System.SysUtils, System.UITypes, System.Types, FMX.Types, FMX.Controls, FMX.Forms, FMX.Menus, FMX.Dialogs, FMX.frxClass, FMX.frxDMPClass, FMX.frxDsgnIntf , System.Variants; type TfrxViewEditor = class(TfrxComponentEditor) public procedure GetMenuItems(OnClickEvent: TNotifyEvent); override; function Execute(Tag: Integer; Checked: Boolean): Boolean; override; end; TfrxCustomMemoEditor = class(TfrxViewEditor) public procedure GetMenuItems(OnClickEvent: TNotifyEvent); override; function Execute(Tag: Integer; Checked: Boolean): Boolean; override; end; implementation uses FMX.frxEditMemo, FMX.frxEditFormat, FMX.frxRes; { TfrxViewEditor } function TfrxViewEditor.Execute(Tag: Integer; Checked: Boolean): Boolean; var i: Integer; c: TfrxComponent; v: TfrxView; begin Result := False; for i := 0 to Designer.SelectedObjects.Count - 1 do begin c := Designer.SelectedObjects[i]; if (c is TfrxView) and not (rfDontModify in c.Restrictions) and (Tag in [50..53]) then begin v := TfrxView(c); case Tag of 50: if Checked then v.ShiftMode := smAlways else v.ShiftMode := smDontShift; 51: if Checked then v.ShiftMode := smWhenOverlapped else v.ShiftMode := smDontShift; 52: v.Visible := Checked; 53: v.Printable := Checked; end; Result := True; end; end; end; procedure TfrxViewEditor.GetMenuItems(OnClickEvent: TNotifyEvent); var v: TfrxView; begin inherited; v := TfrxView(Component); AddItem(frxResources.Get('mvShift'), 50, v.ShiftMode = smAlways); AddItem(frxResources.Get('mvShiftOver'), 51, v.ShiftMode = smWhenOverlapped); AddItem(frxResources.Get('mvVisible'), 52, v.Visible); AddItem(frxResources.Get('mvPrintable'), 53, v.Printable); end; { TfrxCustomMemoEditor } function TfrxCustomMemoEditor.Execute(Tag: Integer; Checked: Boolean): Boolean; var i: Integer; c: TfrxComponent; m: TfrxCustomMemoView; DisplayFormat: TfrxFormat; function EditFormat: Boolean; begin with TfrxFormatEditorForm.Create(Designer) do begin Format.Assign(TfrxCustomMemoView(Component).DisplayFormat); FormShow(Self); Result := ShowModal = mrOk; if Result then DisplayFormat.Assign(Format); Free; end; end; begin Result := inherited Execute(Tag, Checked); DisplayFormat := TfrxFormat.Create; try if Tag = 1 then if not EditFormat then Exit; for i := 0 to Designer.SelectedObjects.Count - 1 do begin c := Designer.SelectedObjects[i]; if (c is TfrxCustomMemoView) and not (rfDontModify in c.Restrictions) then begin m := TfrxCustomMemoView(c); case Tag of 1: m.DisplayFormat := DisplayFormat; 2: m.Memo.Clear; 3: m.AutoWidth := Checked; 4: m.WordWrap := Checked; 5: m.SuppressRepeated := Checked; 6: m.HideZeros := Checked; 7: m.AllowExpressions := Checked; 8: m.AllowHTMLTags := Checked; 40: if Checked then m.StretchMode := smActualHeight else m.StretchMode := smDontStretch; 41: if Checked then m.StretchMode := smMaxHeight else m.StretchMode := smDontStretch; end; Result := True; end; end; finally DisplayFormat.Free; end; end; procedure TfrxCustomMemoEditor.GetMenuItems(OnClickEvent: TNotifyEvent); var m: TfrxCustomMemoView; begin inherited; m := TfrxCustomMemoView(Component); AddItem(frxResources.Get('mvFormat'), 1); AddItem(frxResources.Get('mvClear'), 2); AddItem('-', -1); AddItem(frxResources.Get('mvAutoWidth'), 3, m.AutoWidth); AddItem(frxResources.Get('mvWWrap'), 4, m.WordWrap); AddItem(frxResources.Get('mvSuppress'), 5, m.SuppressRepeated); AddItem(frxResources.Get('mvHideZ'), 6, m.HideZeros); AddItem(frxResources.Get('mvExpr'), 7, m.AllowExpressions); if not (m is TfrxDMPMemoView) then AddItem(frxResources.Get('mvHTML'), 8, m.AllowHTMLTags); AddItem('-', -1); AddItem(frxResources.Get('mvStretch'), 40, m.StretchMode = smActualHeight); AddItem(frxResources.Get('mvStretchToMax'), 41, m.StretchMode = smMaxHeight); end; end.