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

📄 frmdrawgridstaticgridsetupunt.pas

📁 EAComps手工画报表 对写报表编辑器有一定的参考价值
💻 PAS
📖 第 1 页 / 共 2 页
字号:
begin
  if lbTitleList.SelCount = 0 then
    Exit;

  for I := lbTitleList.Count - 1 downto 0 do
  begin
    if (I = lbTitleList.Count - 1) and lbTitleList.Selected[I] then
      Exit;
    if lbTitleList.Selected[I] then
    begin
      lbTitleList.Items.Move(I, I + 1);
      FParam.StaticGrid.MoveTitle(I, I + 1);
    end;
  end;
end;

procedure TfrmDrawGridStaticGridSetup.btnTitleFontSetClick(
  Sender: TObject);
var
  I: Integer;
begin
  if lbTitleList.SelCount = 0 then
    Exit;
    
  dlgFont.Font := labTitleTest.Font;
  if dlgFont.Execute then
  begin
    labTitleTest.Font := dlgFont.Font;
    for I := 0 to lbTitleList.Count - 1 do
      if lbTitleList.Selected[I] then
        FParam.StaticGrid.Titles[I].Font := dlgFont.Font;
    LoadOneTitleInfo;
  end;
end;

procedure TfrmDrawGridStaticGridSetup.btnDataFontSetClick(Sender: TObject);
var
  I: Integer;
begin
  if lbTitleList.SelCount = 0 then
      Exit;

  dlgFont.Font := labDataTest.Font;
  if dlgFont.Execute then
  begin
    labDataTest.Font := dlgFont.Font;   
    for I := 0 to lbTitleList.Count - 1 do
      if lbTitleList.Selected[I] then
        FParam.StaticGrid.Titles[I].ValueInfo.Font := dlgFont.Font;
  end;
end;

procedure TfrmDrawGridStaticGridSetup.edtTitleValueChange(Sender: TObject);
var
  vIndex: Integer;
begin
  vIndex := lbTitleList.ItemIndex;
  if lbTitleList.SelCount > 1 then
    Exit;
  FParam.StaticGrid.Titles[vIndex].Text := edtTitleValue.Text;
end;

procedure TfrmDrawGridStaticGridSetup.cboTitleHAlignChange(
  Sender: TObject);
var
  I: Integer;
begin
  if lbTitleList.SelCount = 0 then
    Exit;
  for I := 0 to lbTitleList.Count - 1 do
    if lbTitleList.Selected[I] then
      FParam.StaticGrid.Titles[I].HorzPos :=
        TEAHorzPos(cboTitleHAlign.ItemIndex);
  LoadOneTitleInfo;
end;

procedure TfrmDrawGridStaticGridSetup.cboTitleVAlignChange(
  Sender: TObject);
var
  I: Integer;
begin
  if lbTitleList.SelCount = 0 then
    Exit;
  for I := 0 to lbTitleList.Count - 1 do
    if lbTitleList.Selected[I] then
       FParam.StaticGrid.Titles[I].VertPos :=
         TEAVertPos(cboTitleVAlign.ItemIndex);
  LoadOneTitleInfo;
end;

procedure TfrmDrawGridStaticGridSetup.cboCellTypeChange(Sender: TObject);
var
  I: Integer;
begin
  if lbTitleList.SelCount = 0 then
    Exit;
  for I := 0 to lbTitleList.Count - 1 do
    if lbTitleList.Selected[I] then
      FParam.StaticGrid.Titles[I].FieldType :=
        TEAFieldType(cboCellType.ItemIndex);
  LoadOneTitleInfo;
end;

procedure TfrmDrawGridStaticGridSetup.labTitleTestDblClick(
  Sender: TObject);
begin
  btnTitleFontSetClick(btnTitleFontSet);
end;

procedure TfrmDrawGridStaticGridSetup.labDataTestDblClick(Sender: TObject);
begin
  btnDataFontSetClick(btnDataFontSet);
end;

procedure TfrmDrawGridStaticGridSetup.edtTitleValueButtonClick(
  Sender: TObject; ClickObject: TEAButtonClickObject);
var
  vIndex: Integer;
  P: TEAPubMemoEditParam;
begin
  vIndex := lbTitleList.ItemIndex;
  if lbTitleList.SelCount > 1 then
    Exit;
    
  P.ReadOnly := False;
  P.Caption := '标题文字';
  P.EditValue := edtTitleValue.Text;
  P.ShowStatus := False;
  P.IsDelimited := False;
  if ShowEAPubMemoEditDlg(P) then
  begin
    edtTitleValue.Text := P.EditValue;
    FParam.StaticGrid.Titles[vIndex].Text := P.EditValue;
  end;
end;

procedure TfrmDrawGridStaticGridSetup.edtDataFmtChange(Sender: TObject);
var
  I: Integer;
begin
  if lbTitleList.SelCount = 0 then
    Exit;
  for I := 0 to lbTitleList.Count - 1 do
    if lbTitleList.Selected[I] then
      FParam.StaticGrid.Titles[I].ValueInfo.FormatStr :=
        edtDataFmt.Text;
end;

procedure TfrmDrawGridStaticGridSetup.cboDataHAlignChange(Sender: TObject);
var
  I: Integer;
begin
  if lbTitleList.SelCount = 0 then
    Exit;
  for I := 0 to lbTitleList.Count - 1 do
    if lbTitleList.Selected[I] then
      FParam.StaticGrid.Titles[I].ValueInfo.HorzPos :=
        TEAHorzPos(cboDataHAlign.ItemIndex);
end;

procedure TfrmDrawGridStaticGridSetup.cboDataVAlignChange(Sender: TObject);
var
  I: Integer;
begin
  if lbTitleList.SelCount = 0 then
    Exit;
  for I := 0 to lbTitleList.Count - 1 do
    if lbTitleList.Selected[I] then
      FParam.StaticGrid.Titles[I].ValueInfo.VertPos :=
        TEAVertPos(cboDataHAlign.ItemIndex);
end;

procedure TfrmDrawGridStaticGridSetup.chkDataWordWrapClick(
  Sender: TObject);
var
  I: Integer;
begin
  if lbTitleList.SelCount = 0 then
    Exit;
  for I := 0 to lbTitleList.Count - 1 do
    if lbTitleList.Selected[I] then
      FParam.StaticGrid.Titles[I].ValueInfo.WordWrap :=
        chkDataWordWrap.Checked;
end;

procedure TfrmDrawGridStaticGridSetup.chkDataShowZeroValueClick(
  Sender: TObject);
var
  I: Integer;
begin
  if lbTitleList.SelCount = 0 then
    Exit;
  for I := 0 to lbTitleList.Count - 1 do
    if lbTitleList.Selected[I] then
      FParam.StaticGrid.Titles[I].ValueInfo.ShowZeroValue :=
        chkDataShowZeroValue.Checked;
end;

procedure TfrmDrawGridStaticGridSetup.lbTitleListClick(Sender: TObject);
begin
  LoadOneTitleInfo;
end;

procedure TfrmDrawGridStaticGridSetup.bwWizardPageChange(Sender: TObject);
begin
  if pcMain.ActivePageIndex = 0 then
  begin
    labTitle.Caption := '第一步 数据信息设置';
    labExplain.Caption := '设置要显示的标题头及数据区域格式信息。';
  end
  else begin
    labTitle.Caption := '第二步 大小设置';
    labExplain.Caption := '设置要静态表的显示大小信息。';
  end;
end;

procedure TfrmDrawGridStaticGridSetup.grdSizeSetDrawCell(Sender: TObject;
  ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  vTop: Integer;
begin
  if (ARow = 0) or (ACol = 0) then
  begin
    grdSizeSet.Canvas.Pen.Color := clWindow;
    TEAPaintFun.Draw_Line(grdSizeSet.Canvas, Rect.Left, Rect.Top, Rect.Left, Rect.Bottom + 1);
    TEAPaintFun.Draw_Line(grdSizeSet.Canvas, Rect.Left, Rect.Top, Rect.Right, Rect.Top);
    grdSizeSet.Canvas.Pen.Color := clGray;
    TEAPaintFun.Draw_Line(grdSizeSet.Canvas, Rect.Right, Rect.Top, Rect.Right, Rect.Bottom + 1);
    TEAPaintFun.Draw_Line(grdSizeSet.Canvas, Rect.Left + 1, Rect.Bottom, Rect.Right + 1, Rect.Bottom);
    Rect := TEARectFun.ZoomRect(Rect, -1, 0);
    if ACol = 0 then
      grdSizeSet.Canvas.Brush.Color := clBtnFace
    else
      grdSizeSet.Canvas.Brush.Color := pnlTitleColor.Color;
    grdSizeSet.Canvas.FillRect(Rect);
    vTop := Rect.Top + Round((TEARectFun.GetRectHeight(Rect) - grdSizeSet.Canvas.TextHeight('整')) / 2);
    if vTop < Rect.Top then
      vTop := Rect.Top;   
    grdSizeSet.Canvas.TextOut(Rect.Left + 2, vTop, grdSizeSet.Cells[ACol, ARow]);
  end
  else begin
    grdSizeSet.Canvas.Brush.Color := grdSizeSet.Color;
    grdSizeSet.Canvas.FillRect(Rect);
  end;
end;

procedure TfrmDrawGridStaticGridSetup.bwWizardNextClick(Sender: TObject;
  CurrPageIndex: Integer; var NewPageIndex: Integer;
  var AllowChange: Boolean);
var
  I: Integer;
begin
  if FParam.StaticGrid.TitleCount = 0 then
  begin
    AllowChange := False;
    ea.Dlg.MsgInfo('没有设置标题头。');
    Exit;
  end;

  grdSizeSet.ColCount := FParam.StaticGrid.TitleCount + 1;
  for I := 0 to FParam.StaticGrid.TitleCount - 1 do
  begin
    grdSizeSet.Cells[I + 1, 0] := FParam.StaticGrid.Titles[I].Text;
    grdSizeSet.ColWidths[I + 1] := FParam.StaticGrid.Titles[I].Width;
  end;
  grdSizeSet.RowHeights[0] := FParam.StaticGrid.TitleHeight;
  grdSizeSet.RowHeights[1] := FParam.StaticGrid.DataHeight;
  if FParam.StaticGrid.ColWidthSet = ecwsScale then
    rdoWidthScale.Checked := True
  else
    rdoWidthAbs.Checked := True;
  case FParam.StaticGrid.DataFillMode of
    edfmAutoHeight: rdoHeightAuto.Checked := True;
    edfmFixHeight:  rdoHeightFix.Checked := True;
  else
    rdoHeightDynamic.Checked := True;
  end;
  chkShowLine.Checked := FParam.StaticGrid.ShowLine;
  chkShowTitle.Checked := FParam.StaticGrid.ShowTitle;
  pnlTitleColor.Color := FParam.StaticGrid.TitleBackColor;
  pnlLineColor.Color := FParam.StaticGrid.LineColor;
  speTitleHeight.Value := FParam.StaticGrid.TitleHeight;
end;

procedure TfrmDrawGridStaticGridSetup.lbTitleListDrawItem(
  Control: TWinControl; Index: Integer; Rect: TRect;
  State: TOwnerDrawState);
begin
  if odSelected in State then
  begin
    lbTitleList.Canvas.Font.Color := clWindow;
    lbTitleList.Canvas.Brush.Color := clHighlight;
  end
  else begin
    lbTitleList.Canvas.Font.Color := clWindowText;
    lbTitleList.Canvas.Brush.Color := clWindow;
  end;

  lbTitleList.Canvas.FillRect(Rect);
  ImgList.Draw(lbTitleList.Canvas, Rect.Left + 2, Rect.Top, cSTitleImg);
  Rect.Left := Rect.Left + 20;
  lbTitleList.Canvas.TextOut(Rect.Left, Rect.Top + 1, lbTitleList.Items[Index]);
end;

procedure TfrmDrawGridStaticGridSetup.rdoWidthScaleClick(Sender: TObject);
begin
  FParam.StaticGrid.ColWidthSet := ecwsScale;
end;

procedure TfrmDrawGridStaticGridSetup.rdoWidthAbsClick(Sender: TObject);
begin
  FParam.StaticGrid.ColWidthSet := ecwsAbs;
end;

procedure TfrmDrawGridStaticGridSetup.rdoHeightAutoClick(Sender: TObject);
begin
  FParam.StaticGrid.DataFillMode := edfmAutoHeight;
end;

procedure TfrmDrawGridStaticGridSetup.rdoHeightFixClick(Sender: TObject);
begin
  FParam.StaticGrid.DataFillMode := edfmFixHeight;
end;

procedure TfrmDrawGridStaticGridSetup.rdoHeightDynamicClick(
  Sender: TObject);
begin
  FParam.StaticGrid.DataFillMode := ecwsDynamic;
end;

procedure TfrmDrawGridStaticGridSetup.chkShowLineClick(Sender: TObject);
begin
  FParam.StaticGrid.ShowLine := chkShowLine.Checked;
end;

procedure TfrmDrawGridStaticGridSetup.chkShowTitleClick(Sender: TObject);
begin
  FParam.StaticGrid.ShowTitle := chkShowTitle.Checked;
end;

procedure TfrmDrawGridStaticGridSetup.bwWizardBackClick(Sender: TObject;
  CurrPageIndex: Integer; var NewPageIndex: Integer;
  var AllowChange: Boolean);
var
  I: Integer;
begin
  for I := 0 to FParam.StaticGrid.TitleCount - 1 do
    FParam.StaticGrid.Titles[I].Width := grdSizeSet.ColWidths[I + 1];
  FParam.StaticGrid.TitleHeight := grdSizeSet.RowHeights[0];
  FParam.StaticGrid.DataHeight := grdSizeSet.RowHeights[1];
end;

procedure TfrmDrawGridStaticGridSetup.FormShow(Sender: TObject);
begin
  lbTitleList.SetFocus;
end;

procedure TfrmDrawGridStaticGridSetup.pnlTitleColorClick(Sender: TObject);
begin
  dlgColor.Color := pnlTitleColor.Color;
  if dlgColor.Execute and (dlgColor.Color <> pnlTitleColor.Color) then
  begin
    pnlTitleColor.Color := dlgColor.Color;
    FParam.StaticGrid.TitleBackColor := dlgColor.Color;
    grdSizeSet.Invalidate;
  end;
end;

procedure TfrmDrawGridStaticGridSetup.speTitleHeightChange(
  Sender: TObject);
begin
  grdSizeSet.RowHeights[0] := speTitleHeight.Value;
  FParam.StaticGrid.TitleHeight := speTitleHeight.Value;
end;

procedure TfrmDrawGridStaticGridSetup.pnlLineColorClick(Sender: TObject);
begin
  dlgColor.Color := pnlLineColor.Color;
  if dlgColor.Execute and (dlgColor.Color <> pnlLineColor.Color) then
  begin
    pnlLineColor.Color := dlgColor.Color;
    FParam.StaticGrid.LineColor := dlgColor.Color;
  end;
end;

end.

⌨️ 快捷键说明

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