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

📄 rm_prxctls.pas

📁 report machine 2.3 功能强大
💻 PAS
字号:

{*****************************************}
{                                         }
{         Report Machine v2.0             }
{          RxRich Add-In Object           }
{                                         }
{*****************************************}

unit RM_PRxCtls;

interface

{$I RM.inc}

{$IFDEF RX}
uses
  SysUtils, Windows, Messages, Classes, Graphics, Controls, Menus, Db,
  Forms, Dialogs, StdCtrls, RM_DBRel, RM_Class, RM_FormReport;

type
  TRMPrintRxControls = class(TComponent) // fake component
  end;

 { TRMPrintRxRichEdit }
  TRMPrintRxRichEdit = class(TRMFormReportObject)
  public
    procedure OnGenerate_Object(aFormReport: TRMFormReport; Page: TRMPage;
      Control: TControl; var t: TRMView); override;
  end;

	{ TRMPrintRxCustomComboEdit }
  TRMPrintRxCustomComboEdit = class(TRMPrintEdit)
  public
    procedure OnGenerate_Object(aFormReport: TRMFormReport; Page: TRMPage;
      Control: TControl; var t: TRMView); override;
  end;

{$ENDIF}

implementation

{$IFDEF RX}
uses RM_rxrtf, ToolEdit, RxRiched, DBRichEd, RxLookup, RxDBCtrl, RxDBComb;

type
  THackFormReport = class(TRMFormReport)
  end;

{------------------------------------------------------------------------------}
{------------------------------------------------------------------------------}
{TRMPrintRxRichEdit}

procedure TRMPrintRxRichEdit.OnGenerate_Object(aFormReport: TRMFormReport;
  Page: TRMPage; Control: TControl; var t: TRMView);
var
  ds: TDataSource;
begin
  t := RMCreateObject(gtAddin, 'TRMRxRichView');
  t.CreateUniqueName;
  t.x := Control.Left + THackFormReport(aFormReport).OffsX;
  t.y := Control.Top + THackFormReport(aFormReport).OffsY;
  t.dx := Control.Width + 2;
  t.dy := Control.Height + 2;
  if Control is TRxDBRichEdit then
  begin
    try
      ds := TRxDBRichEdit(Control).DataSource;
      t.Memo.Text := Format('[%s.%s."%s"]', [ds.DataSet.Owner.Name, ds.DataSet.Name, TRxDBRichEdit(Control).DataField]);
    except
    end;
  end
  else
    TRMRxRichView(t).RichEdit.Lines.Assign(TRxCustomRichEdit(Control).Lines);
  if rmgoDrawBorder in aFormReport.ReportOptions then
    t.Prop['FrameTyp'] := $F
  else
  	t.Prop['FrameTyp'] := 0;

  Page.Objects.Add(t);
  if aFormReport.DrawOnPageFooter then
    aFormReport.ColumnFooterViews.Add(t)
  else
    aFormReport.PageHeaderViews.Add(t);
end;

type
	THackDBComboBox = class(TCustomDBComboBox)
  end;

{------------------------------------------------------------------------------}
{------------------------------------------------------------------------------}
{TRMPrintRxCustomComboEdit}

procedure TRMPrintRxCustomComboEdit.OnGenerate_Object(aFormReport: TRMFormReport;
  Page: TRMPage; Control: TControl; var t: TRMView);
var
  ds: TDataSource;
begin
  inherited;
	if Control is TRxDBLookupCombo then
  begin
  try
    ds := TRxDBLookupCombo(Control).LookupSource;
    t.Memo.Text := Format('[%s.%s."%s"]', [ds.DataSet.Owner.Name, ds.DataSet.Name,
      RMGetOneField(TRxDBLookupCombo(Control).LookupDisplay)]);
  except
  end;
  end
  else if Control is TDBDateEdit then
  begin
    try
      ds := TDBDateEdit(Control).DataSource;
      t.Memo.Text := Format('[%s.%s."%s"]', [ds.DataSet.Owner.Name, ds.DataSet.Name,
        TDBDateEdit(Control).DataField]);
    except
    end;
  end
  else if Control is TRxDBCalcEdit then
  begin
    try
      ds := TRxDBCalcEdit(Control).DataSource;
      t.Memo.Text := Format('[%s.%s."%s"]', [ds.DataSet.Owner.Name, ds.DataSet.Name,
        TRxDBCalcEdit(Control).DataField]);
    except
    end;
  end
  else if Control is TRxDBComboEdit then
  begin
    try
      ds := TRxDBComboEdit(Control).DataSource;
      t.Memo.Text := Format('[%s.%s."%s"]', [ds.DataSet.Owner.Name, ds.DataSet.Name,
        TRxDBComboEdit(Control).DataField]);
    except
    end;
  end
  else if Control is TCustomDBComboBox then
  begin
    try
      ds := THackDBComboBox(Control).DataSource;
      t.Memo.Text := Format('[%s.%s."%s"]', [ds.DataSet.Owner.Name, ds.DataSet.Name,
        THackDBComboBox(Control).DataField]);
    except
    end;
  end
end;

initialization
  RMRegisterFormReportControl(TRxCustomRichEdit, TRMPrintRxRichEdit);
  RMRegisterFormReportControl(TRxDBLookupCombo, TRMPrintRxCustomComboEdit);
  RMRegisterFormReportControl(TCustomComboEdit, TRMPrintRxCustomComboEdit);
  RMRegisterFormReportControl(TCustomDBComboBox, TRMPrintRxCustomComboEdit);

finalization

{$ENDIF}
end.

⌨️ 快捷键说明

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