⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 palettenav.pas

📁 功能强大的ER图建模工具的源代码。 可以代替ERWin了
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -