📄 frxdesgneditors.pas
字号:
begin
Result := True;
end;
function TfrxDataBandEditor.Execute(Tag: Integer; Checked: Boolean): Boolean;
var
b: TfrxDataBand;
begin
Result := inherited Execute(Tag, Checked);
b := Designer.SelectedObjects[0];
if not (rfDontModify in b.Restrictions) then
begin
case Tag of
0: b.PrintIfDetailEmpty := Checked;
1: b.FooterAfterEach := Checked;
2: b.KeepTogether := Checked;
3: b.KeepFooter := Checked;
4: b.KeepHeader := Checked;
end;
Result := True;
end;
end;
procedure TfrxDataBandEditor.GetMenuItems;
var
b: TfrxDataBand;
begin
inherited;
if Designer.SelectedObjects.Count > 1 then Exit;
b := TfrxDataBand(Component);
AddItem(frxResources.Get('bvPrintIfEmpty'), 0, b.PrintIfDetailEmpty);
AddItem(frxResources.Get('bvFooterAfterEach'), 1, b.FooterAfterEach);
if not b.Vertical then
begin
AddItem(frxResources.Get('bvKeepDetail'), 2, b.KeepTogether);
AddItem(frxResources.Get('bvKeepFooter'), 3, b.KeepFooter);
AddItem(frxResources.Get('bvKeepHeader'), 4, b.KeepHeader);
end;
end;
{ TfrxHeaderEditor }
function TfrxHeaderEditor.Execute(Tag: Integer; Checked: Boolean): Boolean;
var
b: TfrxHeader;
begin
Result := inherited Execute(Tag, Checked);
b := Designer.SelectedObjects[0];
if not (rfDontModify in b.Restrictions) then
begin
if Tag = 0 then
b.ReprintOnNewPage := Checked;
Result := True;
end;
end;
procedure TfrxHeaderEditor.GetMenuItems;
var
b: TfrxHeader;
begin
inherited;
if Designer.SelectedObjects.Count > 1 then Exit;
b := TfrxHeader(Component);
AddItem(frxResources.Get('bvReprint'), 0, b.ReprintOnNewPage);
end;
{ TfrxPageHeaderEditor }
function TfrxPageHeaderEditor.Execute(Tag: Integer; Checked: Boolean): Boolean;
var
b: TfrxPageHeader;
begin
Result := inherited Execute(Tag, Checked);
b := Designer.SelectedObjects[0];
if not (rfDontModify in b.Restrictions) then
begin
if Tag = 0 then
b.PrintOnFirstPage := Checked;
Result := True;
end;
end;
procedure TfrxPageHeaderEditor.GetMenuItems;
var
b: TfrxPageHeader;
begin
inherited;
if Designer.SelectedObjects.Count > 1 then Exit;
b := TfrxPageHeader(Component);
AddItem(frxResources.Get('bvOnFirst'), 0, b.PrintOnFirstPage);
end;
{ TfrxPageFooterEditor }
function TfrxPageFooterEditor.Execute(Tag: Integer; Checked: Boolean): Boolean;
var
b: TfrxPageFooter;
begin
Result := False;
b := Designer.SelectedObjects[0];
if not (rfDontModify in b.Restrictions) then
begin
case Tag of
0: b.PrintOnFirstPage := Checked;
1: b.PrintOnLastPage := Checked;
end;
Result := True;
end;
end;
procedure TfrxPageFooterEditor.GetMenuItems;
var
b: TfrxPageFooter;
begin
if Designer.SelectedObjects.Count > 1 then Exit;
b := TfrxPageFooter(Component);
AddItem(frxResources.Get('bvOnFirst'), 0, b.PrintOnFirstPage);
AddItem(frxResources.Get('bvOnLast'), 1, b.PrintOnLastPage);
end;
{ TfrxGroupHeaderEditor }
function TfrxGroupHeaderEditor.Edit: Boolean;
begin
with TfrxGroupEditorForm.Create(Designer) do
begin
GroupHeader := TfrxGroupHeader(Component);
Result := ShowModal = mrOk;
Free;
end;
end;
function TfrxGroupHeaderEditor.HasEditor: Boolean;
begin
Result := True;
end;
function TfrxGroupHeaderEditor.Execute(Tag: Integer; Checked: Boolean): Boolean;
var
b: TfrxGroupHeader;
begin
Result := inherited Execute(Tag, Checked);
b := Designer.SelectedObjects[0];
if not (rfDontModify in b.Restrictions) then
begin
if Tag = 0 then
b.KeepTogether := Checked
else if Tag = 1 then
b.ReprintOnNewPage := Checked
else if Tag = 2 then
b.DrillDown := Checked
else if Tag = 3 then
begin
b.ResetPageNumbers := Checked;
if Checked then
b.StartNewPage := True;
end;
Result := True;
end;
end;
procedure TfrxGroupHeaderEditor.GetMenuItems;
var
b: TfrxGroupHeader;
begin
inherited;
if Designer.SelectedObjects.Count > 1 then Exit;
b := TfrxGroupHeader(Component);
AddItem(frxResources.Get('bvKeepGroup'), 0, b.KeepTogether);
AddItem(frxResources.Get('bvReprint'), 1, b.ReprintOnNewPage);
AddItem(frxResources.Get('bvDrillDown'), 2, b.DrillDown);
AddItem(frxResources.Get('bvResetPageNo'), 3, b.ResetPageNumbers);
end;
{ TfrxDialogControlEditor }
function TfrxDialogControlEditor.Edit: Boolean;
var
i: Integer;
c: TfrxDialogControl;
s: String;
begin
c := TfrxDialogControl(Component);
if c.OnClick = '' then
begin
s := c.Name + 'OnClick';
c.OnClick := s;
i := frxLocateEventHandler(Designer.Code, Designer.Report.ScriptLanguage, s);
if i = -1 then
i := frxAddEvent(Designer.Code, Designer.Report.ScriptLanguage,
TypeInfo(TfrxNotifyEvent), s) else
Inc(i, 3);
TfrxDesignerForm(Designer).SwitchToCodeWindow;
TfrxDesignerForm(Designer).CodeWindow.UpdateView;
TfrxDesignerForm(Designer).CodeWindow.SetPos(3, i);
Result := True;
end
else
begin
i := frxLocateEventHandler(Designer.Code, Designer.Report.ScriptLanguage,
c.OnClick);
TfrxDesignerForm(Designer).SwitchToCodeWindow;
TfrxDesignerForm(Designer).CodeWindow.SetPos(1, i + 3);
Result := False;
end;
end;
function TfrxDialogControlEditor.HasEditor: Boolean;
begin
Result := True;
end;
{ TfrxSubreportEditor }
function TfrxSubreportEditor.Edit: Boolean;
var
s: TfrxSubreport;
begin
Result := False;
s := TfrxSubreport(Component);
if s.Page <> nil then
Designer.Page := s.Page;
end;
function TfrxSubreportEditor.Execute(Tag: Integer; Checked: Boolean): Boolean;
var
s: TfrxSubreport;
begin
Result := inherited Execute(Tag, Checked);
s := TfrxSubreport(Component);
if not (rfDontModify in s.Restrictions) then
begin
if Tag = 0 then
s.PrintOnParent := Checked;
Result := True;
end;
end;
procedure TfrxSubreportEditor.GetMenuItems;
begin
inherited;
AddItem(frxResources.Get('srParent'), 0, TfrxSubreport(Component).PrintOnParent);
end;
function TfrxSubreportEditor.HasEditor: Boolean;
begin
Result := True;
end;
{ TfrxMemoProperty }
function TfrxMemoProperty.Edit: Boolean;
begin
with TfrxMemoEditorForm.Create(Designer) do
begin
MemoView := TfrxMemoView(Component);
Result := ShowModal = mrOk;
if Result then
MemoView.Text := TUnicodeMemo(Memo).Text;
Free;
end;
end;
function TfrxMemoProperty.GetAttributes: TfrxPropertyAttributes;
begin
Result := [paDialog, paReadOnly];
end;
{ TfrxFrameProperty }
function TfrxFrameProperty.Edit: Boolean;
begin
with TfrxFrameEditorForm.Create(Designer) do
begin
Frame.Assign(TfrxFrame(GetOrdValue));
Result := ShowModal = mrOk;
if Result then
TfrxFrame(GetOrdValue).Assign(Frame);
Free;
end;
end;
function TfrxFrameProperty.GetAttributes: TfrxPropertyAttributes;
begin
Result := [paMultiSelect, paDialog, paReadOnly];
end;
{ TfrxPictureProperty }
function TfrxPictureProperty.GetAttributes: TfrxPropertyAttributes;
begin
Result := [paDialog, paReadOnly];
end;
function TfrxPictureProperty.Edit: Boolean;
var
Pict: TPicture;
begin
with TfrxPictureEditorForm.Create(Designer) do
begin
Pict := TPicture(GetOrdValue);
Image.Picture.Assign(Pict);
Result := ShowModal = mrOk;
if Result then
Pict.Assign(Image.Picture);
Free;
end;
end;
function TfrxPictureProperty.GetValue: String;
var
Pict: TPicture;
begin
Pict := TPicture(GetOrdValue);
if Pict.Graphic = nil then
Result := frxResources.Get('prNotAssigned') else
Result := frxResources.Get('prPict');
end;
{ TfrxBitmapProperty }
function TfrxBitmapProperty.GetAttributes: TfrxPropertyAttributes;
begin
Result := [paDialog, paReadOnly];
end;
function TfrxBitmapProperty.Edit: Boolean;
var
Bmp: TBitmap;
begin
with TfrxPictureEditorForm.Create(Designer) do
begin
Bmp := TBitmap(GetOrdValue);
Image.Picture.Assign(Bmp);
Result := ShowModal = mrOk;
if Result then
Bmp.Assign(Image.Picture.Bitmap);
Free;
end;
end;
function TfrxBitmapProperty.GetValue: String;
begin
Result := frxResources.Get('prPict');
end;
{ TfrxDataSetProperty }
function TfrxDataSetProperty.GetAttributes: TfrxPropertyAttributes;
begin
Result := [paMultiSelect, paValueList];
end;
function TfrxDataSetProperty.GetValue: String;
var
ds: TfrxDataSet;
begin
ds := TfrxDataSet(GetOrdValue);
if (ds <> nil) and (frComponent.Report <> nil) then
Result := frComponent.Report.GetAlias(ds) else
Result := frxResources.Get('prNotAssigned');
end;
procedure TfrxDataSetProperty.GetValues;
begin
if frComponent.Report = nil then Exit;
frComponent.Report.GetDataSetList(Values);
if Component is TfrxDataSet then
Values.Delete(Values.IndexOf(TfrxDataSet(Component).UserName));
end;
procedure TfrxDataSetProperty.SetValue(const Value: String);
var
ds: TfrxDataSet;
begin
if Value = '' then
SetOrdValue(0)
else
begin
ds := frComponent.Report.GetDataSet(Value);
if ds <> nil then
SetOrdValue(Integer(ds)) else
raise Exception.Create(frxResources.Get('prInvProp'));
if Component is TfrxCustomMemoView then
with TfrxCustomMemoView(Component) do
if IsDataField then
Text := '[' + DataSet.UserName + '."' + DataField + '"]';
end;
end;
{ TfrxDataFieldProperty }
function TfrxDataFieldProperty.GetAttributes: TfrxPropertyAttributes;
begin
Result := [paMultiSelect, paValueList];
end;
function TfrxDataFieldProperty.GetValue: String;
begin
Result := GetStrValue;
end;
procedure TfrxDataFieldProperty.SetValue(const Value: String);
begin
SetStrValue(Value);
if Component is TfrxCustomMemoView then
with TfrxCustomMemoView(Component) do
if IsDataField then
Text := '[' + DataSet.UserName + '."' + DataField + '"]';
end;
procedure TfrxDataFieldProperty.GetValues;
var
ds: TfrxDataSet;
begin
inherited;
ds := TfrxView(Component).DataSet;
if ds <> nil then
ds.GetFieldList(Values);
end;
{ TfrxLocSizeXProperty }
constructor TfrxLocSizeXProperty.Create(Designer: TfrxCustomDesigner);
begin
inherited;
FRatio := fr1CharX;
end;
function TfrxLocSizeXProperty.GetValue: String;
var
e: Extended;
begin
e := GetFloatValue;
case TfrxDesignerForm(Designer).Units of
duCM: e := e / 96 * 2.54;
duInches: e := e / 96;
duChars: e := e / FRatio;
end;
if e = Int(e) then
Result := FloatToStr(e) else
Result := Format('%f', [e]);
end;
procedure TfrxLocSizeXProperty.SetValue(const Value: String);
var
e: Extended;
begin
e := frxStrToFloat(Value);
case TfrxDesignerForm(Designer).Units of
duCM: e := e * 96 / 2.54;
duInches: e := e * 96;
duChars: e := e * FRatio;
end;
SetFloatValue(e);
end;
{ TfrxLocSizeYProperty }
constructor TfrxLocSizeYProperty.Create(Designer: TfrxCustomDesigner);
begin
inherited;
FRatio := fr1CharY;
end;
{ TfrxPaperXProperty }
constructor TfrxPaperXProperty.Create(Designer: TfrxCustomDesigner);
begin
inherited;
FRatio := fr1CharX;
end;
function TfrxPaperXProperty.GetValue: String;
var
e: Extended;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -