📄 palettenav.pas
字号:
unit PaletteNav;
//----------------------------------------------------------------------------------------------------------------------
//
// This file is part of fabFORCE DBDesigner4.
// Copyright (C) 2002 Michael G. Zinner, www.fabFORCE.net
//
// DBDesigner4 is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// DBDesigner4 is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with DBDesigner4; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
//----------------------------------------------------------------------------------------------------------------------
//
// Unit PaletteNav.pas
// -------------------
// Version 1.0, 13.03.2003, Mike
// Description
// Contains a the navigator palette form class
//
// Changes:
// Version 1.0, 13.03.2003, Mike
// initial version
//
//----------------------------------------------------------------------------------------------------------------------
interface
uses
SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs,
QStdCtrls, QExtCtrls, QComCtrls, QButtons, EERModel, Qt, StrUtils, QTypes,
QMenus, EERDM;
type
TPaletteNavForm = class(TForm)
TrackBarTimer: TTimer;
ModelImgChangTmr: TTimer;
NavPopupMenu: TPopupMenu;
Zoom100MI: TMenuItem;
Zoom75MI: TMenuItem;
Zoom50MI: TMenuItem;
MainPnl: TPanel;
BottomPnl: TPanel;
Shape1: TShape;
ZoomOutSBtn: TSpeedButton;
ZoomInSBtn: TSpeedButton;
Panel1: TPanel;
ZoomShape: TShape;
ZoomLbl: TLabel;
ZoomEd: TEdit;
ZoomTrackBar: TTrackBar;
PageControl: TPageControl;
InfoSheet: TTabSheet;
Label1: TLabel;
Label2: TLabel;
LeftEdit: TEdit;
TopEdit: TEdit;
NameEdit: TEdit;
Label3: TLabel;
Label4: TLabel;
WidthEd: TEdit;
Label5: TLabel;
HeightEd: TEdit;
NavSheet: TTabSheet;
TableSheetTopPnl: TPanel;
NavPnl: TPanel;
NavPBox: TPaintBox;
TabsPnl: TPanel;
Tabs2Img: TImage;
TabsImg: TImage;
OptionsImg: TImage;
Label6: TLabel;
Bevel1: TBevel;
LinkEd: TEdit;
NavigatorPBox: TPaintBox;
InfoPBox: TPaintBox;
procedure FormResize(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure NavPBoxPaint(Sender: TObject);
procedure ZoomLblClick(Sender: TObject);
procedure ZoomEdExit(Sender: TObject);
procedure ZoomEdKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure RefreshZoomSettings;
procedure ZoomInSBtnClick(Sender: TObject);
procedure ZoomOutSBtnClick(Sender: TObject);
procedure ZoomTrackBarChange(Sender: TObject);
procedure TrackBarTimerTimer(Sender: TObject);
procedure RefreshInfo(theModel: TEERModel);
procedure NameEditExit(Sender: TObject);
procedure NameEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure LeftEditExit(Sender: TObject);
procedure LeftEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure NavPBoxMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure NavPBoxMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure NavPBoxMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure SetModelImg(theModel: TEERModel);
procedure ClearModelImg;
procedure ModelImgChangTmrTimer(Sender: TObject);
procedure OptionsImgClick(Sender: TObject);
procedure Zoom100MIClick(Sender: TObject);
procedure WidthEdExit(Sender: TObject);
procedure WidthEdKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormDeactivate(Sender: TObject);
procedure NavigatorPBoxPaint(Sender: TObject);
procedure NavigatorPBoxClick(Sender: TObject);
procedure InfoPBoxClick(Sender: TObject);
private
{ Private declarations }
ZoomTrackBarActive: Boolean;
mouse_absx,
mouse_absy,
mouse_posx,
mouse_posy: integer;
MouseIsDown: Boolean;
ModelBmp: TBitmap;
public
{ Public declarations }
EERObj: TEERObj;
EERModel: TEERModel;
end;
var
PaletteNavForm: TPaletteNavForm;
implementation
uses MainDM, Main, EER;
{$R *.xfm}
procedure TPaletteNavForm.FormCreate(Sender: TObject);
begin
DMMain.InitForm(self);
ZoomTrackBarActive:=True;
EERObj:=nil;
MouseIsDown:=False;
ModelBmp:=TBitmap.Create;
PageControl.ActivePage:=NavSheet;
end;
procedure TPaletteNavForm.FormDestroy(Sender: TObject);
begin
ModelBmp.Free;
DMMain.SaveWinPos(self, False);
end;
procedure TPaletteNavForm.FormShow(Sender: TObject);
begin
DMMain.RestoreWinPos(self, False);
end;
procedure TPaletteNavForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
CanClose:=False;
Hide;
TMainForm(Application.MainForm).NavigatorInfoMI.Checked:=False;
end;
procedure TPaletteNavForm.FormResize(Sender: TObject);
begin
OptionsImg.Left:=Width-OptionsImg.Width-1;
OptionsImg.BringToFront;
end;
procedure TPaletteNavForm.NavPBoxPaint(Sender: TObject);
var XFac, YFac: double;
x, y, w, h: integer;
begin
with NavPBox.Canvas do
begin
Pen.Color:=clWhite;
Brush.Style:=bsSolid;
Brush.Color:=clWhite;
Rectangle(0, 0, width-1, height-1);
if(Assigned(ModelBmp))then
Draw(0, 0, ModelBmp);
//When sender is set to nil, don't draw SelectionRect
if(Sender<>nil)then
if(MainForm.ActiveMDIChild<>nil)then
if(MainForm.ActiveMDIChild.Classname='TEERForm')then
begin
Pen.Color:=clNavy;
Pen.Width:=2;
Brush.Style:=bsClear;
XFac:=NavPBox.Width/MainForm.ActiveMDIChild.HorzScrollBar.Range;
YFac:=NavPBox.Height/MainForm.ActiveMDIChild.VertScrollBar.Range;
x:=Round(MainForm.ActiveMDIChild.HorzScrollBar.Position*XFac)+1;
y:=Round(MainForm.ActiveMDIChild.VertScrollBar.Position*YFac)+1;
w:=Round(MainForm.ActiveMDIChild.Width*XFac);
h:=Round(MainForm.ActiveMDIChild.Height*YFac);
if(x+w>NavPBox.Width-1)then
w:=NavPBox.Width-x;
if(y+h>NavPBox.Height-1)then
h:=NavPBox.Height-y;
Rectangle(x, y, x+w, y+h);
end;
end;
{if(MainForm.ActiveMDIChild<>nil)then
if(MainForm.ActiveMDIChild.Classname='TEERForm')then
begin
TEERForm(MainForm.ActiveMDIChild).EERModel.PaintModel(NavPBox.Canvas,
(NavPBox.Width/TEERForm(MainForm.ActiveMDIChild).EERModel.EERModel_Width)*100*2,
0, 0, 0, 0, [EERTable, EERRegion, EERNote, EERImage]);
end;}
end;
procedure TPaletteNavForm.ZoomLblClick(Sender: TObject);
begin
ZoomEd.Left:=0;
if(MainForm.ActiveMDIChild<>nil)then
if(MainForm.ActiveMDIChild.Classname='TEERForm')then
ZoomEd.Text:=FormatFloat('##0.##', TEERForm(MainForm.ActiveMDIChild).EERModel.GetZoomFac)+ '%';
ZoomEd.SelectAll;
ZoomEd.Show;
ZoomEd.SetFocus;
end;
procedure TPaletteNavForm.ZoomEdExit(Sender: TObject);
begin
ZoomEd.Hide;
Application.MainForm.SetFocus;
end;
procedure TPaletteNavForm.ZoomEdKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var theNewZoomFac: double;
begin
if(Key=Key_Return)or(Key=Key_Enter)then
begin
ZoomEdExit(self);
try
if(RightStr(ZoomEd.Text, 1)='%')then
ZoomEd.Text:=Copy(ZoomEd.Text, 1, Length(ZoomEd.Text)-1);
theNewZoomFac:=StrToFloat(ZoomEd.Text);
if(MainForm.ActiveMDIChild<>nil)then
if(MainForm.ActiveMDIChild.Classname='TEERForm')then
TEERForm(MainForm.ActiveMDIChild).EERModel.SetZoomFac(theNewZoomFac);
except
end;
end;
if(Key=Key_Escape)then
begin
ZoomEdExit(self);
end;
end;
procedure TPaletteNavForm.RefreshZoomSettings;
begin
if(MainForm.ActiveMDIChild<>nil)then
if(MainForm.ActiveMDIChild.Classname='TEERForm')then
begin
ZoomLbl.Caption:=FormatFloat('##0.##', TEERForm(MainForm.ActiveMDIChild).EERModel.GetZoomFac)+ '%';
ZoomTrackBarActive:=False;
try
ZoomTrackBar.Position:=Round(TEERForm(MainForm.ActiveMDIChild).EERModel.GetZoomFac);
finally
ZoomTrackBarActive:=True;
end;
end;
end;
procedure TPaletteNavForm.ZoomInSBtnClick(Sender: TObject);
begin
if(MainForm.ActiveMDIChild<>nil)then
if(MainForm.ActiveMDIChild.Classname='TEERForm')then
TEERForm(MainForm.ActiveMDIChild).EERModel.ZoomIn(MainForm.ActiveMDIChild.Width div 2,
MainForm.ActiveMDIChild.Height div 2);
Application.MainForm.SetFocus;
end;
procedure TPaletteNavForm.ZoomOutSBtnClick(Sender: TObject);
begin
if(MainForm.ActiveMDIChild<>nil)then
if(MainForm.ActiveMDIChild.Classname='TEERForm')then
TEERForm(MainForm.ActiveMDIChild).EERModel.ZoomOut(MainForm.ActiveMDIChild.Width div 2,
MainForm.ActiveMDIChild.Height div 2);
Application.MainForm.SetFocus;
end;
procedure TPaletteNavForm.ZoomTrackBarChange(Sender: TObject);
begin
if(ZoomTrackBarActive)then
begin
TrackBarTimer.Enabled:=False;
TrackBarTimer.Enabled:=True;
end;
end;
procedure TPaletteNavForm.TrackBarTimerTimer(Sender: TObject);
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -