📄 fr_desgn.pas
字号:
FileMenu.Caption := LoadStr(frRes + 154);
N23.Caption := LoadStr(frRes + 155);
N19.Caption := LoadStr(frRes + 156);
N20.Caption := LoadStr(frRes + 157);
N42.Caption := LoadStr(frRes + 158);
N8.Caption := LoadStr(frRes + 159);
N25.Caption := LoadStr(frRes + 160);
N39.Caption := LoadStr(frRes + 161);
N10.Caption := LoadStr(frRes + 162);
EditMenu.Caption := LoadStr(frRes + 163);
N46.Caption := LoadStr(frRes + 164);
N48.Caption := LoadStr(frRes + 165);
N11.Caption := LoadStr(frRes + 166);
N12.Caption := LoadStr(frRes + 167);
N13.Caption := LoadStr(frRes + 168);
N27.Caption := LoadStr(frRes + 169);
N28.Caption := LoadStr(frRes + 170);
N36.Caption := LoadStr(frRes + 171);
N29.Caption := LoadStr(frRes + 172);
N30.Caption := LoadStr(frRes + 173);
N32.Caption := LoadStr(frRes + 174);
N33.Caption := LoadStr(frRes + 175);
ToolMenu.Caption := LoadStr(frRes + 176);
N37.Caption := LoadStr(frRes + 177);
MastMenu.Caption := LoadStr(frRes + 178);
N14.Caption := LoadStr(frRes + 179);
Pan1.Caption := LoadStr(frRes + 180);
Pan2.Caption := LoadStr(frRes + 181);
Pan3.Caption := LoadStr(frRes + 182);
Pan4.Caption := LoadStr(frRes + 183);
Pan5.Caption := LoadStr(frRes + 184);
Pan6.Caption := LoadStr(frRes + 185);
Pan7.Caption := LoadStr(frRes + 186);
N34.Caption := LoadStr(frRes + 187);
N17.Caption := LoadStr(frRes + 188);
N22.Caption := LoadStr(frRes + 189);
N35.Caption := LoadStr(frRes + 190);
StB1.Hint := LoadStr(frRes + 191);
FnB1.Glyph.Handle := LoadBitmap(hInstance, 'FR_BOLD');
FnB2.Glyph.Handle := LoadBitmap(hInstance, 'FR_ITALIC');
FnB3.Glyph.Handle := LoadBitmap(hInstance, 'FR_UNDRLINE');
N41.Caption := N29.Caption;
N41.OnClick := N29.OnClick;
N43.Caption := N30.Caption;
N43.OnClick := N30.OnClick;
N44.Caption := N25.Caption;
N44.OnClick := N25.OnClick;
end;
procedure TfrDesignerForm.FormShow(Sender: TObject);
begin
Screen.Cursors[crPencil] := LoadCursor(hInstance, 'FR_PENCIL');
Panel7.Hide;
if FirstTime then
SetMenuBitmaps;
FirstTime := False;
FileBtn1.Enabled := FirstInstance;
FileBtn4.Enabled := FirstInstance and not (CurReport is TfrCompositeReport);
N39.Enabled := FileBtn4.Enabled;
N23.Enabled := FirstInstance;
OB3.Enabled := FirstInstance;
OB5.Enabled := FirstInstance;
ClearUndoBuffer;
ClearRedoBuffer;
Modified := False;
FileModified := False;
Busy := True;
DocMode := dmDesigning;
GetFontList;
C2.Perform(CB_SETDROPPEDWIDTH, 170, 0);
CurPage := 0; // this cause page sizing
CurDocName := CurReport.FileName;
Unselect;
PageView.Init;
EnableControls;
BDown(OB1);
frSetGlyph(0, ClB1, 1); frSetGlyph(0, ClB2, 0); frSetGlyph(0, ClB3, 2);
ColorSelector.Hide;
LinePanel.Hide;
ShowPosition;
RestoreState;
FormResize(nil);
end;
procedure TfrDesignerForm.FormHide(Sender: TObject);
begin
ClearUndoBuffer;
ClearRedoBuffer;
SaveState;
CurReport.FileName := CurDocName;
end;
procedure TfrDesignerForm.FormDestroy(Sender: TObject);
var
i: Integer;
begin
for i := 0 to MenuItems.Count - 1 do
TfrMenuItemInfo(MenuItems[i]).Free;
MenuItems.Free;
ItemWidths.Free;
PageView.Free;
BPanel.Free;
RPanel.Free;
ColorSelector.Free;
InspForm.Free;
EditorForm.Free;
end;
procedure TfrDesignerForm.FormResize(Sender: TObject);
begin
if csDestroying in ComponentState then Exit;
with ScrollBox1 do
begin
HorzScrollBar.Position := 0;
VertScrollBar.Position := 0;
end;
PageView.SetPage;
Panel7.Top := StatusBar1.Top + 3;
Panel7.Show;
end;
procedure TfrDesignerForm.WMGetMinMaxInfo(var Msg: TWMGetMinMaxInfo);
begin // for best view - not actual in Win98 :(
with Msg.MinMaxInfo^ do
begin
ptMaxSize.x := Screen.Width;
ptMaxSize.y := Screen.Height;
ptMaxPosition.x := 0;
ptMaxPosition.y := 0;
end;
end;
procedure TfrDesignerForm.SetCurPage(Value: Integer);
begin // setting curpage and do all manipulation
FCurPage := Value;
Page := CurReport.Pages[CurPage];
ScrollBox1.VertScrollBar.Position := 0;
ScrollBox1.HorzScrollBar.Position := 0;
PageView.SetPage;
SetPageTitles;
Tab1.TabIndex := Value;
ResetSelection;
SendBandsToDown;
PageView.Repaint;
end;
procedure TfrDesignerForm.SetGridSize(Value: Integer);
begin
if FGridSize = Value then Exit;
FGridSize := Value;
RedrawPage;
end;
procedure TfrDesignerForm.SetGridShow(Value: Boolean);
begin
if FGridShow = Value then Exit;
FGridShow := Value;
GB1.Down := Value;
RedrawPage;
end;
procedure TfrDesignerForm.SetGridAlign(Value: Boolean);
begin
if FGridAlign = Value then Exit;
GB2.Down := Value;
FGridAlign := Value;
end;
procedure TfrDesignerForm.SetUnits(Value: TfrReportUnits);
var
s: String;
begin
FUnits := Value;
case Value of
ruPixels: s := LoadStr(SPixels);
ruMM: s := LoadStr(SMM);
ruInches: s := LoadStr(SInches);
end;
StatusBar1.Panels[0].Text := s;
ShowPosition;
end;
procedure TfrDesignerForm.SetGrayedButtons(Value: Boolean);
procedure DoButtons(t: Array of TControl);
var
i, j: Integer;
c: TWinControl;
c1: TControl;
begin
for i := Low(t) to High(t) do
begin
c := TWinControl(t[i]);
for j := 0 to c.ControlCount - 1 do
begin
c1 := c.Controls[j];
if c1 is TfrSpeedButton then
TfrSpeedButton(c1).GrayedInactive := FGrayedButtons;
end;
end;
end;
begin
FGrayedButtons := Value;
DoButtons([Panel1, Panel2, Panel3, Panel4, Panel5, Panel6]);
end;
procedure TfrDesignerForm.SetCurDocName(Value: String);
begin
FCurDocName := Value;
if FirstInstance then
Caption := FCaption + ' - ' + ExtractFileName(Value) else
Caption := FCaption;
end;
procedure TfrDesignerForm.RegisterObject(ButtonBmp: TBitmap;
const ButtonHint: String; ButtonTag: Integer);
var
b: TfrTBButton;
begin
b := TfrTBButton.Create(Self);
with b do
begin
Parent := Panel4;
Glyph := ButtonBmp;
Hint := ButtonHint;
GroupIndex := 1;
Flat := True;
SetBounds(1000, 1000, 22, 22);
Tag := ButtonTag;
OnMouseDown := OB2MouseDown;
end;
end;
procedure TfrDesignerForm.RegisterTool(MenuCaption: String; ButtonBmp: TBitmap;
OnClick: TNotifyEvent);
var
m: TMenuItem;
b: TfrTBButton;
begin
m := TMenuItem.Create(MastMenu);
m.Caption := MenuCaption;
m.OnClick := OnClick;
MastMenu.Enabled := True;
MastMenu.Add(m);
Panel6.Height := 26; Panel6.Width := 26;
b := TfrTBButton.Create(Self);
with b do
begin
Parent := Panel6;
Glyph := ButtonBmp;
Hint := MenuCaption;
Flat := True;
SetBounds(1000, 1000, 22, 22);
Tag := 36;
end;
b.OnClick := OnClick;
Panel6.AdjustBounds;
end;
procedure TfrDesignerForm.AddPage;
begin
CurReport.Pages.Add;
Page := CurReport.Pages[CurReport.Pages.Count - 1];
PgB3Click(nil);
if WasOk then
begin
Modified := True;
FileModified := True;
CurPage := CurReport.Pages.Count - 1
end
else
begin
CurReport.Pages.Delete(CurReport.Pages.Count - 1);
CurPage := CurPage;
end;
end;
procedure TfrDesignerForm.RemovePage(n: Integer);
procedure AdjustSubReports;
var
i, j: Integer;
t: TfrView;
begin
with CurReport do
for i := 0 to Pages.Count - 1 do
begin
j := 0;
while j < Pages[i].Objects.Count do
begin
t := Pages[i].Objects[j];
if t.Typ = gtSubReport then
if TfrSubReportView(t).SubPage = n then
begin
Pages[i].Delete(j);
Dec(j);
end
else if TfrSubReportView(t).SubPage > n then
Dec(TfrSubReportView(t).SubPage);
Inc(j);
end;
end;
end;
begin
Modified := True;
FileModified := True;
with CurReport do
if (n >= 0) and (n < Pages.Count) then
if Pages.Count = 1 then
Pages[n].Clear else
begin
CurReport.Pages.Delete(n);
Tab1.Tabs.Delete(n);
Tab1.TabIndex := 0;
AdjustSubReports;
CurPage := 0;
end;
ClearUndoBuffer;
ClearRedoBuffer;
end;
procedure TfrDesignerForm.SetPageTitles;
var
i: Integer;
s: String;
function IsSubreport(PageN: Integer): Boolean;
var
i, j: Integer;
t: TfrView;
begin
Result := False;
with CurReport do
for i := 0 to Pages.Count - 1 do
for j := 0 to Pages[i].Objects.Count - 1 do
begin
t := Pages[i].Objects[j];
if t.Typ = gtSubReport then
if TfrSubReportView(t).SubPage = PageN then
begin
s := t.Name;
Result := True;
Exit;
end;
end;
end;
begin
if Tab1.Tabs.Count = CurReport.Pages.Count then
for i := 0 to Tab1.Tabs.Count - 1 do
begin
if not IsSubreport(i) then
s := LoadStr(SPg) + IntToStr(i + 1);
if Tab1.Tabs[i] <> s then
Tab1.Tabs[i] := s;
end
else
begin
Tab1.Tabs.Clear;
for i := 0 to CurReport.Pages.Count - 1 do
begin
if not IsSubreport(i) then
s := LoadStr(SPg) + IntToStr(i + 1);
Tab1.Tabs.Add(s);
end;
end;
end;
procedure TfrDesignerForm.CutToClipboard;
var
i: Integer;
t: TfrView;
begin
ClearClipBoard;
for i := 0 to Objects.Count - 1 do
begin
t := Objects[i];
if t.Selected then
begin
ClipBd.Add(frCreateObject(t.Typ, t.ClassName));
TfrView(ClipBd.Last).Assign(t);
end;
end;
for i := Objects.Count - 1 downto 0 do
begin
t := Objects[i];
if t.Selected then Page.Delete(i);
end;
SelNum := 0;
end;
procedure TfrDesignerForm.CopyToClipboard;
var
i: Integer;
t: TfrView;
begin
ClearClipBoard;
for i := 0 to Objects.Count - 1 do
begin
t := Objects[i];
if t.Selected then
begin
ClipBd.Add(frCreateObject(t.Typ, t.ClassName));
TfrView(ClipBd.Last).Assign(t);
end;
end;
end;
procedure TfrDesignerForm.SelectAll;
var
i: Integer;
begin
SelNum := 0;
for i := 0 to Objects.Count - 1 do
begin
TfrView(Objects[i]).Selected := True;
Inc(SelNum);
end;
end;
procedure TfrDesignerForm.Unselect;
var
i: Integer;
begin
SelNum := 0;
for i := 0 to Objects.Count - 1 do
TfrView(Objects[i]).Selected := False;
end;
procedure TfrDesignerForm.ResetSelection;
begin
Unselect;
EnableControls;
ShowPosition;
end;
function TfrDesignerForm.PointsToUnits(x: Integer): Double;
begin
Result := x;
case FUnits of
ruMM: Result := x / 18 * 5;
ruInches: Result := x / 18 * 5 / 25.4;
end;
end;
function TfrDesignerForm.UnitsToPoints(x: Double): Integer;
begin
Result := Round(x);
case FUnits of
ruMM: Result := Round(x / 5 * 18);
ruInches: Result := Round(x * 25.4 / 5 * 18);
end;
end;
procedure TfrDesignerForm.RedrawPage;
begin
PageView.Draw(10000, 0);
end;
procedure TfrDesignerForm.FormKeyDown(Sender:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -