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

📄 jvgreporteditorform.pas

📁 East make Tray Icon in delphi
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    OnMouseUp_(Sender, Button, Shift, X, Y);
  end;

  if Assigned(FSelectedControl) then
    if ssShift in Shift then
    begin
      TJvgReportItem(Sender).Selected := not TJvgReportItem(Sender).Selected;
      FMouseDown := False;
      if FSelectedControl = Sender then
        Exit;
    end
    else
    begin
      if TJvgReportItem(Sender).Selected then
        Exit;
      with FScrollBox do
        for I := 0 to ControlCount - 1 do
          if (Controls[I] is TJvgReportItem) and
            TJvgReportItem(Controls[I]).Selected then
            TJvgReportItem(Controls[I]).Selected := False;
      FSelectedControl.Selected := False;
      FSelectedControl.Invalidate;
    end;

  FSelectedControl := TJvgReportItem(Sender);
  FSelectedControl.Selected := True;

  UpdateToolBar(FSelectedControl);
  FSelectedControlLastPos.X := FSelectedControl.Left;
  FSelectedControlLastPos.Y := FSelectedControl.Top;
end;

procedure TJvgReportEditorForm.OnMouseUp_(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ScrollBox_MouseUp(Sender, Button, Shift, X, Y);
  FMouseDown := False;
  if not Assigned(FSelectedControl) then
    Exit;
  FUndoPosShift.X := FSelectedControlLastPos.X - FSelectedControl.Left;
  FUndoPosShift.Y := FSelectedControlLastPos.Y - FSelectedControl.Top;
  FCanUndo := True;
  //if not Assigned(FSelectedControl) then Exit;
  //if TControl(Sender).Tag = 0 then Exit;
{  DrawFocusRect( TControl(Sender).Parent.Handle, FocusRect );
  R := Rect( 0, 0, Screen.Width, Screen.Height );
  ClipCursor(@R);
  TControl(Sender).Left := TControl(Sender).Left + X - FControlPos.X;
  TControl(Sender).Top := TControl(Sender).Top + Y - FControlPos.Y;
  if TControl(Sender).Tag = 2 then//...was moved
    TJvgReportItem(Sender).RepaintBorder;}
  TControl(Sender).Tag := 0;
end;

procedure TJvgReportEditorForm.OnMouseMove_(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var
  I: Integer;
begin
  if FSelection then
    ScrollBox_MouseMove(Sender, Shift, X, Y);
  if sb_FixAllMoving.Down then
    Exit;
  //  if TControl(Sender).Tag = 0 then Exit;
  if not FMouseDown then
    Exit;
  with FScrollBox do
    for I := 0 to ControlCount - 1 do
      if Controls[I] is TJvgReportItem then
        with TJvgReportItem(Controls[I]) do
          if Selected and (Fixed = 0) then
          begin
            Left := ((Left + X - FControlPos.X) div FStep.X) * FStep.X;
            Top := ((Top + Y - FControlPos.Y) div FStep.Y) * FStep.Y;
          end;
  FSkipSizeUpdate := True;
  ShowComponentPos(FSelectedControl);
  //TControl(Sender).Left := TControl(Sender).Left + X - FControlPos.X;
  //TControl(Sender).Top := TControl(Sender).Top + Y - FControlPos.Y;
  {
  TControl(Sender).Tag := 2;//...on moving
  DC := GetDC( TControl(Sender).Parent.Handle );
  DrawFocusRect( DC, FocusRect );
  FocusRect := Bounds( TControl(Sender).Left+X-FControlPos.X, TControl(Sender).Top+Y-FControlPos.Y,  FSelectedControl.Width, FSelectedControl.Height );
  DrawFocusRect( DC, FocusRect );
  ReleaseDC( TControl(Sender).Parent.Handle, DC );
  }
end;

procedure TJvgReportEditorForm.OnResize_(Sender: TObject);
begin
  FSkipSizeUpdate := True;
  if Sender = FSelectedControl then
    ShowComponentPos(TControl(Sender));
end;

procedure TJvgReportEditorForm.Read(FileName: string; ParentWnd: TWinControl);
begin
  FScrollBox.HorzScrollBar.Position := 0;
  FScrollBox.VertScrollBar.Position := 0;
  FSelectedControl := nil;
  UpdateToolBar(nil);
  Component.LoadFromFile(FileName);
  Component.CreateReport(ParentWnd, True);
  AssignEventsToAllComponents;
  RemakeComponentsList;
end;

procedure TJvgReportEditorForm.Save(FileName: string);
begin
  FScrollBox.HorzScrollBar.Position := 0;
  FScrollBox.VertScrollBar.Position := 0;
  Component.SaveToFile(FileName);
end;

procedure TJvgReportEditorForm.OpenClick(Sender: TObject);
begin
  OpenDialog1.InitialDir := ExtractFilePath(ParamStr(0));
  if OpenDialog1.Execute then
    Read(OpenDialog1.FileName, FScrollBox);
end;

procedure TJvgReportEditorForm.Save1Click(Sender: TObject);
begin
  SaveDialog1.InitialDir := ExtractFilePath(ParamStr(0));
  if SaveDialog1.Execute then
    Save(SaveDialog1.FileName);
end;

procedure TJvgReportEditorForm.ScrollBox_MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  Compon: TJvgReportItem;
  R: TRect;
  Pt: TPoint;
begin
  if ssCtrl in Shift then
  begin
    FSelectionRect := Rect(0, 0, 0, 0);
    FSelPt.X := X - FScrollBox.HorzScrollBar.Position;
    FSelPt.Y := Y - FScrollBox.VertScrollBar.Position;
    FSelPt := FScrollBox.ClientToScreen(FSelPt);
    FSelection := True;
  end;
  if B_Label.Down or B_Bevel.Down or sb_OLE.Down then
  begin
    Compon := Component.AddComponent;
    with Compon do
    begin
      Left := X - FScrollBox.HorzScrollBar.Position;
      Top := Y - FScrollBox.VertScrollBar.Position;
      if B_Label.Down then
      begin
        Text := 'Label'; // do not localize
        SideLeft := 0;
        SideTop := 0;
        SideRight := 0;
        SideBottom := 0;
      end;
      OnMouseDown := OnMouseDown_;
      OnMouseUp := OnMouseUp_;
      OnMouseMove := OnMouseMove_;
      OnResize := OnResize_;
      ContainOLE := sb_OLE.Down;
      B_Label.Down := False;
      B_Bevel.Down := False;
      sb_OLE.Down := False;
      RemakeComponentsList;
    end;
  end
  else
  begin
    R := FScrollBox.ClientRect;
    Pt.X := 0;
    Pt.Y := 0;
    Pt := FScrollBox.ClientToScreen(Pt);
    OffsetRect(R, Pt.X, Pt.Y);
    ClipCursor(@R);
  end;
end;

procedure TJvgReportEditorForm.ScrollBox_MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var
  DC: HDC;
  Pt: TPoint;
begin
  if not FSelection then
    Exit;
  DC := GetDC(HWND_DESKTOP);
  DrawFocusRect(DC, FSelectionRect);
  Pt.X := X - FScrollBox.HorzScrollBar.Position;
  Pt.Y := Y - FScrollBox.VertScrollBar.Position;
  Pt := FScrollBox.ClientToScreen(Pt);
  FSelectionRect := Bounds(Min(FSelPt.X, Pt.X), Min(FSelPt.Y, Pt.Y),
    Abs(FSelPt.X - Pt.X), Abs(FSelPt.Y - Pt.Y));
  DrawFocusRect(DC, FSelectionRect);
  ReleaseDC(HWND_DESKTOP, DC);
end;

procedure TJvgReportEditorForm.ScrollBox_MouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  DC: HDC;
  R: TRect;
  I: Integer;
begin
  if FSelection then
  begin
    DC := GetDC(HWND_DESKTOP);
    DrawFocusRect(DC, FSelectionRect);
    ReleaseDC(HWND_DESKTOP, DC);
    FSelection := False;
    //...select all in rect
    with Component.ParentWnd do
      for I := 0 to ControlCount - 1 do
        if Controls[I] is TJvgReportItem then
          with TJvgReportItem(Controls[I]) do
          begin
            R := ClientRect;
            OffsetRect(R, ClientOrigin.X, ClientOrigin.Y);
            Selected := IntersectRect(R, R, FSelectionRect);
          end;
  end;
  R := Rect(0, 0, Screen.Width, Screen.Height);
  ClipCursor(@R);
end;

procedure TJvgReportEditorForm.FormCreate(Sender: TObject);
var
  R: TRect;
begin

   VRuler := TJvgRuler.Create(Self);
   HRuler := TJvgRuler.Create(Self);
   with HRuler do
   begin
     Parent := P_HRuler;
     Orientation := goHorizontal;
     Left := 17;
      Top := 0;
      Width := 550;
      Height := 16;
   end;

   with VRuler do
   begin
     Parent := P_VRuler;
      Left := 1;
      Top := 0;
      Width := 15;
      Height := 231;
      Orientation := goVertical;
   end;

  R := Rect(0, 0, Screen.Width, Screen.Height);
  ClipCursor(@R);
  FScrollBox := TJvgReportScrollBox.Create(Self);
  FScrollBox.Align := alClient;
  //  FScrollBox.Color := clWhite;
  ShapeSize.Parent := FScrollBox;
  FScrollBox.OnDraw := OnDrawScrollBox;
  FScrollBox.Parent := P_Main;
  FScrollBox.Tag := 1; //...1 - draw report controls with dot bevel
  FScrollBox.OnMouseDown := ScrollBox_MouseDown;
  //  FScrollBox.VertScrollBar.Tracking := True;
  //  FScrollBox.HorzScrollBar.Tracking := True;
  ShapeSize.Parent := FScrollBox;
  ShapeSize.Left := 0;
  ShapeSize.Top := 0;
  //  LaccReport := TJvgReport.Create;
  FGrid.X := 8;
  FGrid.Y := 8;
  FStep.X := 1;
  FStep.Y := 1;
  {  HRuler := TJvgRuler.Create(Self);
    HRuler.Orientation := goHorizontal;
    HRuler.Parent := P_HRuler;
    HRuler.Top := 0;
    HRuler.Height := P_HRuler.Height;

    VRuler := TJvgRuler.Create(Self);
    VRuler.Orientation := goVertical;
    VRuler.Parent := P_VRuler;
    VRuler.Top := 0;
    VRuler.Width := P_VRuler.Width;}
end;

procedure TJvgReportEditorForm.Edit1Change(Sender: TObject);
begin
  Memo1.Text := TMemo(Sender).Text;
  if Assigned(FSelectedControl) then
    FSelectedControl.Text := TMemo(Sender).Text;
end;

procedure TJvgReportEditorForm.Memo1Change(Sender: TObject);
begin
  Edit1.Text := TMemo(Sender).Text;
  if Assigned(FSelectedControl) then
    FSelectedControl.Text := TMemo(Sender).Text;
end;

procedure TJvgReportEditorForm.SB_LeftClick(Sender: TObject);
begin
  if Assigned(FSelectedControl) then
    with FSelectedControl do
      case TControl(Sender).Tag of
        1:
          SideLeft := 1 - SideLeft;
        2:
          SideRight := 1 - SideRight;
        3:
          SideTop := 1 - SideTop;
        4:
          SideBottom := 1 - SideBottom;
        5:
          begin
            SideLeft := 0;
            SideTop := 0;
            SideRight := 0;
            SideBottom := 0;
            SB_Left.Down := False;
            SB_Top.Down := False;
            SB_Right.Down := False;
            SB_Bottom.Down := False;
          end;
      else
        begin
          SideLeft := 1;
          SideTop := 1;
          SideRight := 1;
          SideBottom := 1;
          SB_Left.Down := True;
          SB_Top.Down := True;
          SB_Right.Down := True;
          SB_Bottom.Down := True;
        end;
      end;
end;

procedure TJvgReportEditorForm.FontComboBox1Change(Sender: TObject);
begin
  // (rom) following two lines disabled
  //if not Assigned(FSelectedControl) then
  //  Exit;
  //-----!  FSelectedControl.FName := TFontComboBox(Sender).FontName;
end;

procedure TJvgReportEditorForm.ColorComboBox1Change(Sender: TObject);
begin
  // (rom) following two lines disabled
  //if not Assigned(FSelectedControl) then
  //  Exit;
  //-----!  FSelectedControl.FColor := TColorComboBox(Sender).ColorValue;
end;

procedure TJvgReportEditorForm.FormShow(Sender: TObject);
begin
  Component.OwnerWnd := Self;
  Component.ParentWnd := FScrollBox;
  if Component.FReportList.Count > 0 then
    Component.CreateReport(FScrollBox, True);
  //  Randomize;
  UpdatePageSize;
  AssignEventsToAllComponents;
  RemakeComponentsList;
  //  ShapeSize.Width := Printer.PageWidth; //f_PrintReport.CBReport1.Width;
  //  ShapeSize.Height := Printer.PageHeight; //f_PrintReport.CBReport1.Height;
end;

procedure TJvgReportEditorForm.sb_BookClick(Sender: TObject);
begin
  {  if TControl(Sender).Tag = 1 then
      f_PrintReport.CBReport1.Orientation := f_PrintReport.PrintWin1.Orientation
      else  f_PrintReport.CBReport1.Orientation := f_PrintReport.PrintWin2.Orientation;}
  if TControl(Sender).Tag = 1 then
    Printer.Orientation := poPortrait
  else
    Printer.Orientation := poLandscape;
  UpdatePageSize;
end;

procedure TJvgReportEditorForm.N1Click(Sender: TObject);
begin
  FScrollBox.RemoveControl(FSelectedControl);
  FScrollBox.InsertControl(FSelectedControl);
end;

procedure TJvgReportEditorForm.sb_FontBoldClick(Sender: TObject);
begin
  if Assigned(FSelectedControl) then
    with FSelectedControl do
      case TControl(Sender).Tag of
        1:
          FStyle := FStyle xor 1;
        2:
          FStyle := FStyle xor 2;
        3:
          FStyle := FStyle xor 4;
      end;
end;

procedure TJvgReportEditorForm.sb_AlignLClick(Sender: TObject);
begin
  if Assigned(FSelectedControl) then
    FSelectedControl.Alignment := TControl(Sender).Tag;
end;

procedure TJvgReportEditorForm.sbFontColorClick(Sender: TObject);
var
  I: Integer;
begin
  if not Assigned(FSelectedControl) then
    Exit;
  with ColorDialog1 do
  begin
    case TControl(Sender).Tag of
      0:
        Color := FSelectedControl.FColor;
      1:
        Color := FSelectedControl.BkColor;
    else
      Color := FSelectedControl.BvColor;
    end;

    if Execute then
      for I := 0 to FScrollBox.ControlCount - 1 do
        if FScrollBox.Controls[I] is TJvgReportItem then
          with TJvgReportItem(FScrollBox.Controls[I]) do
            if TJvgReportItem(FScrollBox.Controls[I]).Selected then
              case TControl(Sender).Tag of
                0:
                  TJvgReportItem(FScrollBox.Controls[I]).FColor := Color;
                1:
                  TJvgReportItem(FScrollBox.Controls[I]).BkColor := Color;
              else
                TJvgReportItem(FScrollBox.Controls[I]).BvColor := Color;
              end;
  end;
end;

procedure TJvgReportEditorForm.N_DeleteObjectClick(Sender: TObject);
begin
  if Assigned(FSelectedControl) then
  begin
    if Windows.MessageBox(0, PChar(RsDeleteObject), PChar(RsConfirm), MB_OKCANCEL) <> IDOK then
      Exit;
    if FSelectedControl.ContainOLE then
      FScrollBox.RemoveControl(FSelectedControl.OLEContainer);
    FScrollBox.RemoveControl(FSelectedControl);
    FSelectedControl.Free;

⌨️ 快捷键说明

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