RM (Report Machine)은 강력한 델파이 보고서 제어 패키지입니다. 이를 사용하여 매우 복잡한 보고서를 작성하십시오. 가장 간단한 사용법은 다음과 같습니다.
두 개의 데이터베이스 컨트롤을 양식에 넣습니다 : Adoconnection의 연결 스트링을 설정하기위한 Adoconnection 및 AdoQuery. loginprompt = false. AdoQuery의 연결은 Adoconnection을 가리 킵니다. AdoQuery의 SQL은 데이터 쿼리 문을 설정합니다.
RMDBDATASET 및 RMREPORT의 양식에 두 개의 RM 보고서 컨트롤을 넣습니다. RMDBDATASET의 데이터 세트는 AdoQuery를 가리 킵니다. rmreport 데이터 세트는 RMDBDATASET을 가리 킵니다.
(최종 생성 된 응용 프로그램에 보고서 설계 기능이 있으려면 RMDesigner를 제어하고 속성을 설정하지 않아야합니다).
RMReport 컨트롤을 두 번 클릭하여 보고서 템플릿 설계를 시작하십시오.
일반적으로 규칙과 비교되는 보고서의 경우 템플릿에 4 개의 밴드 객체를 추가하면됩니다 : 1), 페이지 헤더 : 일반적으로 보고서 이름, 시간 등을 표시하는 데 사용됩니다. 2), 메인 항목 헤더 : 일반적으로 사용됩니다. 열 이름 표시. 3) 기본 항목 데이터 : 데이터를 표시하는 데 사용됩니다. 4) 페이지 각주 : 페이지 번호, 날짜 등을 표시하는 데 사용됩니다.
설계된 템플릿은 DFM 또는 Extension RMF가있는 독립 템플릿 파일에 저장 될 수 있으며 런타임에 호출됩니다. 다음은 몇 가지 코드 스 니펫입니다.
절차 tbrowseform.button5click (sender : tobject); varrmreport : trmreport; beginif adoquery1.isempty thatexit; trmreport.create (self); rmreport.loadfromfile ( 'match.rmf'); rmreporperport; .free; 끝; 끝;
절차 tform1.button1click (sender : tobject);
// 템플릿 절차 tform1.button2click (발신자 : tobject);
대부분의 규칙보고의 경우 위의 지식만으로도 충분합니다. 그러나 이것은 RM을 사용하는 가장 간단한 방법이며 RM 함수의 힘을 반영하는 것과는 거리가 멀다.
RM에는 현재 가장 필요한 두 가지 매력적인 기능이 있습니다.
1) 데이터는 데이터베이스 또는 파일, 메모리 등과 같은 다른 곳에서 나올 수 있습니다. 2) 실행 시간에 코드를 통해 템플릿을 생성 할 필요는 없으며, 이는 데이터의 필드 수가 확실하지 않은 상황에 매우 유용합니다.
RM은 강력하지만 사용하기가 복잡하지 않습니다.
1. 종이 조각의 양면이 필요한 보고서를위한 좋은 해결책은 무엇입니까? 인쇄 할 때 홀수 또는 페이지를 입력하도록 선택할 수 있습니다. 2. 한 페이지에 고정 된 수의 줄을 인쇄 할 수 있습니까? 보고서를 클릭하여 디자인 보고서 인터페이스를 입력 하시겠습니까? RMREPORT1. MODIFYPREPARED : FALSE4 보고서에 테이블을 추가하는 방법 ?? 보고서에 매개 변수를 전달하십시오. trmmemoview를 수행하는 방법? rmreport1.findobject ( 'memo1'). memo.text : = 'ddddd'또는 rmvariables [ 'a1'] : 'ddddd'; 6. 중복 컨텐츠를 어떻게 인쇄 할 수 없습니까? suppres = true7 인쇄시기를 두 번 클릭하는 방법은 보고서 편집기를 입력 할 수 없습니다! RMREPORT.MODIFYPREVIEW = FALSE8 설정 보고서 프로그램에서 메모 경계가 표시되는지를 제어하는 방법 : = FalSememo1.Topframe.Visible : = false; memo1.rightframe.visible : = false; .BOTTOMFRAME. Visible : = 보고서의 스크립트 memo1.frametyp : // frametyp을 설정하는 방법을 알고 있습니다. // 이름을 변경하는 방법 페이지가 표시되지만 Page1의 onbeforeprint에서는 괜찮습니다 메인 항목 데이터 열 : LinesperPage = 3 라인에서 한 줄로의 방법이있는 경우 : 기본 항목 데이터 열을 설정하는 경우 3 개의 라인을 설정하는 방법이 있다면 기본 항목 데이터 열 = 3 그룹화, 그룹화 조건 : nowline> 3 onbeforeprint : beginnowline : = 1; onbeforeprint : 그룹화 + 1; 그룹화 데이터를 표시하지 않고 그룹화 통계 값을 표시 할 수 있습니까? 예, 기본 항목 데이터 열을 설정하십시오. Visible = False Statistics Box : calcnovisible = true12는 길이를 초과하는 단일 레코드 만 접을 수 있습니까? 예, 텍스트 상자를 설정하십시오. Stretched = true 텍스트 상자가 위치한 열을 설정하십시오. // 보고서 rmreport1.showport1.printreport; 2. 그룹 헤더가 각 그룹의 페이지를 변경하는지 여부. 1.RMREPORT1.PAGE [0] .CHANGEPAPER () 2.RMREPORT1.PAGE [0] .FindObject (Group Header Column Name) .Prop [ 'NewPage'] : = False; 15는 무엇입니까? rmreport1.showprintdialog : = false; rmreport1.printreport; 16은 모든 컨트롤이 그에 따라 위치를 변경해야합니다. 페이지 설정 또는 rmreport1.pages에서 인쇄 가능한 영역을 선택할 필요는 없습니다. Richedit1.lines.savetoStream (tempStream); tempStream.Position : = 0; rmformreport1.pageheader.caption.loadfromStream (TempStream); end; 18. TRMDESIGNER의 TEMPLATEDIR19 설정 가상 데이터 세트를 동적으로 설정하고 싶습니다! (rmreport1.findobject ( 'band1')로서의 dataset : = 'rmdbdataset1'; 20. 왼쪽 거리 : CurRreport.Pages [0] .pgmargins.left : = Round (rmconvertTopixels (mm*10, rmsumm)) 22.rmvariables [ 'brand'] : = true; rmvariables [ 'Product Name'] : = 'Computer' Page1의 OnbeforPrint 이벤트의 코드는 다음과 같습니다. 기본 데이터 열 선수 페이지 = 1024. ? ? 열의 각주 열을 사용하고 통계 상자를 넣은 다음 Calctype 25를 설정하는 것이 가장 좋습니다. RM의 페이지 마진을 동적으로 생성 할 때 PGMARGINS : = rect (30, 30, 40, 40); 26. 미리보기 또는 인쇄 창에서 한 번에 여러 보고서 파일을 엽니 다. rmcompositereport1.reports.add (rmreport2); Showport; 27.RM Page1은 배경 속성이 없습니다. 예, A3 Content [Memo1.CalcValue + Memo2.calcValue] 29는 인쇄에 영향을 미치지 않는 두 번의 페이지를 선택해야합니다. 그리고 한 번만 인쇄한다 .30. [ ';
rmvariables [ 'a2'
보고서 개발 사용자 설명서-보고서 작성 2010-02-10 13:08
보고서 작성 :
보고서 작성은 다음 단계로 구성됩니다.
1. 데이터 선택 : 보고서에 사용 된 데이터 소스를 선택하십시오.
2. 디자인 보고서 템플릿 : 영역 (밴드라고 함)을 사용하여 보고서의 다른 부분을 배포하여 보고서 스타일을 결정합니다.
3. 처리 : 보고서의 내장 스크립트 언어를 사용하거나 델파이 보고서에 사용 된 데이터, 보고서 템플릿 등을 처리합니다.
4. 보고서 생성 : 보고서 템플릿 + 데이터 소스를 기반으로 최종 보고서를 생성합니다.
데이터 소스 선택 :
대부분의 보고서에 필요한 데이터는 데이터베이스에서 제공됩니다. ttable 및 tquery 구성 요소는 보고서의 데이터 소스 역할을 할 수 있습니다. 일반적으로 Tdataset 구성 요소에서 상속 된 서브 클래스를 사용할 수 있습니다. 각 보고서에 사용 된 TDATASET에는 해당 TRMDBDATASET이 있어야합니다.
TDATASET 외에도 ReportMachine 페이지는 데이터 소스 (배열, 파일, 문자 그리드 등)를 사용할 수 있습니다. 이 경우 프로그램은 비-다 바이스 소스의 액세스를 그 자체로 제어해야합니다. TrmuserDataset을 사용하여 데이터를 보고서로 쉽게 전송할 수 있습니다.
디자인 보고서 템플릿 :
보고서 템플릿 자체는 올바른 보고서를 보는 방법을 설명합니다. 각 보고서 템플릿은 여러 영역으로 구성되며, 보고서는 밴드를 호출합니다. 고정 영역 밴드 (예 : 보고서 제목, 페이지 헤더, 페이지 각주 등)와 데이터 세트의 모든 레코드 (예 : 기본 항목 데이터 열)의 두 가지 유형의 밴드가 있습니다. 데이터 밴드는 데이터 소스에 연결되어야하며 컨텐츠는 데이터 소스의 레코드입니다.
ReportMachine은 보고서 개발을위한 시각적 환경을 제공합니다 (보고서 디자이너, 최종 사용자에게 최종 사용자에게 보고서 템플릿을 직접 수정할 수 있도록 최종 사용자에게 제공 할 수 있음)를 제공합니다. 보고서 디자이너는 강력하고 간단하며 사용하기 쉽습니다. 보고서 디자이너 인터페이스는 플로팅 도구 모음으로 만들어졌으며, 객체 검사관을 사용하여 델파이드의 특성과 유사하게 객체의 특성을 제어 할 수 있습니다.
거래 :
보고서를 생성 할 때는 입력 데이터 (예 : 형식)를 처리해야하며 보고서 템플릿을 수정해야합니다 (예 : 보고서 템플릿의 텍스트 상자는 글꼴을 변경해야합니다).
이 처리를 통해 델파이에서 TRMREPORT의 이벤트 처리에서 코드를 작성할 수 있습니다. 그렇기 때문에 ReportMachinet의 내장 스크립팅 언어 인 reportmachine의 내장 스크립팅 언어는 Object Pascal과 매우 유사하며 강력합니다. 이 스크립팅 언어로 이벤트 처리 코드를 작성하면 델파이에서 코드를 작성하지 않고 복잡한 처리를 만들 수 있습니다. 프로젝트에서 보고서를 분리 할 수 있습니다.
보고서 스크립트 예 :
단위 보고서;
인터페이스
절차 memo1onbeforeprint (sender : tobject);
절차 memo1onbeforeprint (sender : tobject);
절차 메인; 시작;
끝;
끝.
보고서 생성 :
보고서 생성은 보고서 마카인이 보고서 템플릿에 따라 데이터 소스를 처리하여 최종 보고서를 생성하고 "미리보기"버튼을 클릭 한 후 미리 볼 수있는 프로세스입니다. ReportMachine에서 준비된 보고서는 보고서가 처리 된 후 각 페이지에 포함 된 내용을 설명하는 객체 모음입니다. 이를 통해 디자이너에서 원하는 페이지를 호출하여 생성 된 보고서 페이지를 수정할 수 있습니다. 또한 미리보기 창에서 객체를 클릭하는 마우스의 반응도 설명 할 수 있습니다. 이렇게하면 작업을보다 쉽게 구성 할 수 있습니다 (보고서 개체를 클릭하면 더 자세한 새 보고서가 생성 될 수 있습니다).
ReportMachine의 미리보기는 Microsoft Word와 유사합니다. 한 창에서 여러 페이지를 볼 수 있으며 필요한 경우에 편집기를 클릭하여 현재 페이지를 수정할 수 있습니다.