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

📄 palettenav.pas

📁 功能强大的ER图建模工具的源代码。 可以代替ERWin了
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  TrackBarTimer.Enabled:=False;

  if(MainForm.ActiveMDIChild<>nil)then
    if(MainForm.ActiveMDIChild.Classname='TEERForm')then
      TEERForm(MainForm.ActiveMDIChild).EERModel.SetZoomFac(ZoomTrackBar.Position);
end;

procedure TPaletteNavForm.RefreshInfo(theModel: TEERModel);
begin
  if(theModel.GetSelectedObjsCount<>1)then
  begin
    EERObj:=nil;

    NameEdit.Enabled:=False;
    LeftEdit.Enabled:=False;
    TopEdit.Enabled:=False;
    WidthEd.Enabled:=False;
    HeightEd.Enabled:=False;

    NameEdit.Text:='';
    LeftEdit.Text:='';
    TopEdit.Text:='';
    WidthEd.Text:='';
    HeightEd.Text:='';

    LinkEd.Text:='';
  end
  else
  begin
    EERObj:=TEERObj(theModel.GetFirstSelectedObj);

    if(Assigned(EERObj))then
    begin
      NameEdit.Enabled:=True;
      if(Not(EERObj.ClassnameIs('TEERRel')))then
      begin
        LeftEdit.Enabled:=True;
        TopEdit.Enabled:=True;
      end
      else
      begin
        LeftEdit.Enabled:=False;
        TopEdit.Enabled:=False;
      end;

      if(EERObj.ClassnameIs('TEERImage'))then
      begin
        WidthEd.Enabled:=True;
        HeightEd.Enabled:=True;
      end
      else
      begin
        WidthEd.Enabled:=False;
        HeightEd.Enabled:=False;
      end;

      NameEdit.Text:=EERObj.ObjName;
      LeftEdit.Text:=IntToStr(EERObj.Obj_X);
      TopEdit.Text:=IntToStr(EERObj.Obj_Y);
      WidthEd.Text:=IntToStr(EERObj.Obj_W);
      HeightEd.Text:=IntToStr(EERObj.Obj_H);

      if(EERObj.IsLinkedObject)then
        LinkEd.Text:=theModel.GetPlacedModelByID(EERObj.IDLinkedModel).ModelName;
    end;
  end;
end;

procedure TPaletteNavForm.NameEditExit(Sender: TObject);
begin
  if(Assigned(EERObj))then
  begin
    if(NameEdit.Text<>EERObj.ObjName)then
    begin
      EERModel.LogAction(at_RenameObj, EERObj.Obj_id,
        'NewObjName='+NameEdit.Text+#13#10+
        'OldObjName='+EERObj.ObjName+#13#10);

      EERObj.ObjName:=NameEdit.Text;
      EERObj.RefreshObj;
      EERObj.DoPaint(self);
    end;
  end;
end;

procedure TPaletteNavForm.NameEditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if(Assigned(EERObj))and
    ((Key=Key_Return)or(Key=Key_Enter))then
  begin
    if(NameEdit.Text<>EERObj.ObjName)then
    begin
      EERModel.LogAction(at_RenameObj, EERObj.Obj_id,
        'NewObjName='+NameEdit.Text+#13#10+
        'OldObjName='+EERObj.ObjName+#13#10);
            
      EERObj.ObjName:=NameEdit.Text;
      EERObj.RefreshObj;
      EERObj.DoPaint(self);
    end;

    PageControl.SetFocus;
  end;
end;

procedure TPaletteNavForm.NavPBoxMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var XFac, YFac: double;
  w, h: integer;
begin
  if(MainForm.ActiveMDIChild<>nil)then
    if(MainForm.ActiveMDIChild.Classname='TEERForm')then
      if(Button=mbLeft)then
      begin
        mouse_absx:=Mouse.CursorPos.X;
        mouse_absy:=Mouse.CursorPos.Y;

        XFac:=NavPBox.Width/MainForm.ActiveMDIChild.HorzScrollBar.Range;
        YFac:=NavPBox.Height/MainForm.ActiveMDIChild.VertScrollBar.Range;

        {mouse_posx:=Round(MainForm.ActiveMDIChild.HorzScrollBar.Position*XFac)+1;
        mouse_posy:=Round(MainForm.ActiveMDIChild.VertScrollBar.Position*YFac)+1;}

        w:=Round(MainForm.ActiveMDIChild.Width*XFac);
        h:=Round(MainForm.ActiveMDIChild.Height*YFac);

        mouse_posx:=x-w div 2;
        mouse_posy:=y-h div 2;

        MouseIsDown:=True;

        NavPBoxMouseMove(Sender, [ssLeft], X, Y);
      end;
end;

procedure TPaletteNavForm.NavPBoxMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var XFac, YFac: double;
  newXpos, newYpos: integer;
begin
  if(Shift=[ssLeft])and(MouseIsDown)then
  begin
    XFac:=NavPBox.Width/MainForm.ActiveMDIChild.HorzScrollBar.Range;
    YFac:=NavPBox.Height/MainForm.ActiveMDIChild.VertScrollBar.Range;

    newXpos:=Round((mouse_posx+Mouse.CursorPos.X-mouse_absx)/XFac);
    newYpos:=Round((mouse_posy+Mouse.CursorPos.Y-mouse_absy)/YFac);

    if(newXpos<0)then
      newXpos:=0;

    if(newYpos<0)then
      newYpos:=0;

    if(newXpos>MainForm.ActiveMDIChild.HorzScrollBar.Range-MainForm.ActiveMDIChild.Width)then
      newXpos:=MainForm.ActiveMDIChild.HorzScrollBar.Range-MainForm.ActiveMDIChild.Width;

    if(newYpos>MainForm.ActiveMDIChild.VertScrollBar.Range-MainForm.ActiveMDIChild.Height)then
      newYpos:=MainForm.ActiveMDIChild.VertScrollBar.Range-MainForm.ActiveMDIChild.Height;


    MainForm.ActiveMDIChild.HorzScrollBar.Position:=newXpos;
    MainForm.ActiveMDIChild.VertScrollBar.Position:=newYpos;

    NavPBoxPaint(self);
  end;
end;

procedure TPaletteNavForm.NavPBoxMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  MouseIsDown:=False;

  Application.MainForm.SetFocus;
end;

procedure TPaletteNavForm.ClearModelImg;
begin
  EERModel:=nil;

  NavPBoxPaint(self);
end;

procedure TPaletteNavForm.SetModelImg(theModel: TEERModel);
var PreviewZoomFactor: double;
begin
  if(theModel<>nil)then
  begin
    EERModel:=theModel;

    //Set Bitmap size
    ModelBmp.Width:=NavPBox.Width;
    PreviewZoomFactor:=ModelBmp.Width/EERModel.EERModel_Width;
    ModelBmp.Height:=Round(EERModel.EERModel_Height*PreviewZoomFactor);


    //Draw to Model onto the Bitmap
    ModelBmp.Canvas.Pen.Color:=clWhite;
    ModelBmp.Canvas.Brush.Color:=clWhite;
    ModelBmp.Canvas.Rectangle(Rect(0, 0, ModelBmp.Width-1, ModelBmp.Height-1));

    //Paint with no text output
    EERModel.PaintModel(ModelBmp.Canvas,
      PreviewZoomFactor*100,
      0, 0, 0, 0, [EERTable, EERRegion, EERNote], 72, False);

    NavPBoxPaint(self);
  end
  else
  begin
    //Draw to Model onto the Bitmap
    ModelBmp.Canvas.Pen.Color:=clWhite;
    ModelBmp.Canvas.Brush.Color:=clWhite;
    ModelBmp.Canvas.Rectangle(Rect(0, 0, ModelBmp.Width-1, ModelBmp.Height-1));

    NavPBoxPaint(nil);
  end;
end;

procedure TPaletteNavForm.ModelImgChangTmrTimer(Sender: TObject);
begin
  if(MainForm.ActiveMDIChild<>nil)then
    if(MainForm.ActiveMDIChild.Classname='TEERForm')then
      if(TEERForm(MainForm.ActiveMDIChild).EERModel.Need2RefreshNavImg)then
      begin
        TEERForm(MainForm.ActiveMDIChild).EERModel.Need2RefreshNavImg:=False;
        SetModelImg(TEERForm(MainForm.ActiveMDIChild).EERModel);
      end;
end;

procedure TPaletteNavForm.OptionsImgClick(Sender: TObject);
begin
  NavPopupMenu.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
end;

procedure TPaletteNavForm.Zoom100MIClick(Sender: TObject);
begin
  if(MainForm.ActiveMDIChild<>nil)then
    if(MainForm.ActiveMDIChild.Classname='TEERForm')then
      TEERForm(MainForm.ActiveMDIChild).EERModel.SetZoomFac(TMenuItem(Sender).Tag, 0, 0);
end;

procedure TPaletteNavForm.LeftEditExit(Sender: TObject);
begin
  if(Assigned(EERObj))then
  begin
    try
      StrToInt(LeftEdit.Text);
      StrToInt(TopEdit.Text);
    except
      LeftEdit.Text:=IntToStr(EERObj.Obj_X);
      TopEdit.Text:=IntToStr(EERObj.Obj_Y);
    end;

    EERModel.StartSubActionLog(at_MoveObj);
    EERModel.LogSubAction(sa_MoveFrom, EERObj.Obj_id,
      'Obj_X='+IntToStr(EERObj.Obj_X)+#13#10+'Obj_Y='+IntToStr(EERObj.Obj_Y));
    EERModel.LogSubAction(sa_MoveTo, EERObj.Obj_id,
      'Obj_X='+LeftEdit.Text+#13#10+'Obj_Y='+TopEdit.Text);
    EERModel.EndSubAction;

    EERObj.Obj_X:=StrToInt(LeftEdit.Text);
    EERObj.Obj_Y:=StrToInt(TopEdit.Text);
    EERObj.RefreshObj;
  end;
end;

procedure TPaletteNavForm.LeftEditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if(Assigned(EERObj))and
    ((Key=Key_Return)or(Key=Key_Enter))then
  begin
    LeftEditExit(self);
  end;
end;

procedure TPaletteNavForm.WidthEdExit(Sender: TObject);
begin
  if(Assigned(EERObj))then
  begin
    try
      StrToInt(WidthEd.Text);
      StrToInt(HeightEd.Text);
    except
      WidthEd.Text:=IntToStr(EERObj.Obj_W);
      HeightEd.Text:=IntToStr(EERObj.Obj_H);
    end;

    EERModel.StartSubActionLog(at_ScaleObj);
    EERModel.LogSubAction(sa_ScaleFrom, EERObj.Obj_id,
      'Obj_W='+IntToStr(EERObj.Obj_W)+#13#10+'Obj_H='+IntToStr(EERObj.Obj_H));
    EERModel.LogSubAction(sa_ScaleTo, EERObj.Obj_id,
      'Obj_W='+WidthEd.Text+#13#10+'Obj_H='+HeightEd.Text);
    EERModel.EndSubAction;

    EERObj.Obj_W:=StrToInt(WidthEd.Text);
    EERObj.Obj_H:=StrToInt(HeightEd.Text);
    EERObj.RefreshObj;
  end;
end;

procedure TPaletteNavForm.WidthEdKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if(Assigned(EERObj))and
    ((Key=Key_Return)or(Key=Key_Enter))then
  begin
    WidthEdExit(self);
  end;
end;

procedure TPaletteNavForm.FormDeactivate(Sender: TObject);
begin
  if(Visible)then
    if(Not(DMMain.IsFormStayingOnTop(self)))then
      sendCLXEvent(Application.MainForm.Handle, QCustomEvent_create(QEventType_RestoreStayOnTopForms, self));
end;

procedure TPaletteNavForm.NavigatorPBoxPaint(Sender: TObject);
begin
  //Paint Text (for XTF smooth fonts)
  TPaintBox(Sender).Canvas.Font.Color:=clBlack;
  TPaintBox(Sender).Canvas.TextOut(0, 0,
    DMMain.GetTranslatedMessage('', TPaintBox(Sender).Tag));
end;

procedure TPaletteNavForm.NavigatorPBoxClick(Sender: TObject);
begin
  TabsImg.BringToFront;
  NavigatorPBox.BringToFront;
  InfoPBox.BringToFront;
  PageControl.ActivePage:=NavSheet;
  BottomPnl.Show;
end;

procedure TPaletteNavForm.InfoPBoxClick(Sender: TObject);
begin
  Tabs2Img.BringToFront;
  NavigatorPBox.BringToFront;
  InfoPBox.BringToFront;
  PageControl.ActivePage:=InfoSheet;
  BottomPnl.Hide;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -