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

📄 rm_editorbandtype.pas

📁 这是一个功能强大
💻 PAS
字号:

{*****************************************}
{                                         }
{          Report Machine v2.0            }
{           Select Band dialog            }
{                                         }
{*****************************************}

unit RM_EditorBandType;

interface

{$I RM.inc}

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, RM_Class, RM_Const;

type
  TRMBandTypesForm = class(TForm)
    btnOK: TButton;
    grbBands: TGroupBox;
    btnCancel: TButton;
    GroupBox1: TGroupBox;
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
    procedure bClick(Sender: TObject);
    procedure bDblClick(Sender: TObject);
    procedure Localize;
  public
    { Public declarations }
    SelectedTyp: TRMBandType;
    IsSubreport: Boolean;
  end;

implementation

uses RM_Designer, RM_Utils;

{$R *.DFM}

procedure TRMBandTypesForm.FormShow(Sender: TObject);
var
  lWidth: Integer;

  function _FindMaxLen: Integer;
  var
    lBandType: TRMBandType;
  begin
    Result := 0;
    for lBandType := rmbtReportTitle to rmbtNone do
    begin
      if Canvas.TextWidth(RMBandNames[lBandType]) > Result then
        Result := Canvas.TextWidth(RMBandNames[lBandType]);
    end;

    Result := Result;
  end;

  procedure _SetButtons(aIsCrossBand: Boolean; aParent: TGroupBox);
	var
	  i, j: Integer;
  	lFirstFlag: Boolean;
	  lButton: TRadioButton;
  begin
	  lFirstFlag := True; j := 0;
    for i := Ord(rmbtReportTitle) to Ord(rmbtNone) - 1 do
    begin
    	if aIsCrossBand and (not (TRMBandType(i) in [rmbtCrossHeader..rmbtCrossChild])) then Continue;
      if (not aIsCrossBand) and (TRMBandType(i) in [rmbtCrossHeader..rmbtCrossChild]) then Continue;

      lButton := TRadioButton.Create(aParent);
      lButton.Parent := aParent;
      lButton.Left := lWidth * (j div 6) + 12 + 30 * (j div 6);
      lButton.Top := (j mod 6) * 20 + 20;

      lButton.Width := Canvas.TextWidth(RMBandNames[TRMBandType(i)]) + 20;
      lButton.Tag := i;
      lButton.Caption := RMBandNames[TRMBandType(i)];
      lButton.OnClick := bClick;
      lButton.OnDblClick := bDblClick;
      lButton.Enabled := (TRMBandType(i) in [rmbtHeader, rmbtFooter, rmbtMasterData, rmbtDetailData,
        rmbtGroupHeader, rmbtGroupFooter, rmbtChild, rmbtCrossHeader..rmbtCrossChild]) or
        (not TRMDesignerForm(RMDesigner).RMCheckBand(TRMBandType(i)));
      if IsSubreport and (TRMBandType(i) in
        [rmbtReportTitle, rmbtReportSummary, rmbtPageHeader, rmbtPageFooter,
       {rmbtGroupHeader, rmbtGroupFooter,}rmbtColumnHeader, rmbtColumnFooter]) then
        lButton.Enabled := False;

      if (not aIsCrossBand) and lButton.Enabled and lFirstFlag then
      begin
        lButton.Checked := True;
        SelectedTyp := TRMBandType(i);
        lFirstFlag := False;
      end;

      Inc(j);
    end;
  end;

begin
  Localize;

  lWidth := _FindMaxLen;
  grbBands.ClientWidth := lWidth * 3 + 12 + 30 * 3;
  GroupBox1.ClientWidth := grbBands.ClientWidth;
  ClientWidth := grbBands.Width + grbBands.Left * 3;
  _SetButtons(False, grbBands);
  _SetButtons(True, GroupBox1);

  btnOK.Left := ClientWidth - btnOK.Width - btnCancel.Width - 10;
  btnCancel.Left := ClientWidth - btnOK.Width - 5;
end;

procedure TRMBandTypesForm.bClick(Sender: TObject);
begin
  SelectedTyp := TRMBandType((Sender as TComponent).Tag);
end;

procedure TRMBandTypesForm.bDblClick(Sender: TObject);
begin
  btnOK.Click;
end;

procedure TRMBandTypesForm.Localize;
begin
  Font.Name := RMLoadStr(SRMDefaultFontName);
  Font.Size := StrToInt(RMLoadStr(SRMDefaultFontSize));
  Font.Charset := StrToInt(RMLoadStr(SCharset));

  RMSetStrProp(Self, 'Caption', rmRes + 510);
  RMSetStrProp(grbBands, 'Caption', rmRes + 511);
  RMSetStrProp(GroupBox1, 'Caption', rmRes + 512);

  btnOK.Caption := RMLoadStr(SOk);
  btnCancel.Caption := RMLoadStr(SCancel);
end;

end.

⌨️ 快捷键说明

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