Solved

rave , page margins -code based report

Posted on 2011-03-22
11
1,288 Views
Last Modified: 2012-05-11
can I set with rave the page margins ?  


(eg. the foot is cutrrently set to close to the paper boarder)
0
Comment
Question by:BdLm
11 Comments
 
LVL 24

Expert Comment

by:jimyX
ID: 35188498
You control the margins by using SectionTop, SectionLeft, SectionRight & SectionBottom.
So you can try and put PrintFooter() under this line:

SectionBottom := 10;
0
 
LVL 8

Author Comment

by:BdLm
ID: 35188551
unit is pixel ?
0
 
LVL 8

Author Comment

by:BdLm
ID: 35188694

i play around ...  but the command does not seem to be effective ....
///
///   support :  http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_26902682.html?cid=239#a35188192
///

procedure TMainForm.LibRvSystemPrintFooter(Sender: TObject);
begin



   With Sender as TBaseReport do
    begin
      //...
      PrintFooter('Page : '+ IntToStr(CurrentPage), pjCenter); // or pjLeft/pjRight

      //...
    end
end;



function TMainForm.LibRvSystemPrintPage(Sender: TObject;
  var PageNum: Integer): Boolean;
begin
   With Sender as TBaseReport do
    begin
      //...

      SectionTop := 30 ;
      SectionLeft:= 30;
      SectionRight   := 30;
      SectionBottom  := 30;


      //...
    end
end;

Open in new window

0
Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

 
LVL 19

Assisted Solution

by:Thommy
Thommy earned 31 total points
ID: 35188805
You can set the margins as follows:

with BaseReport do begin
  Margin Left := 0.5;
  Margin Right := 0.5;
  Margin Top := 0.5;
  Margin Bottom := 0.5;
  Orientation := poPortrait;
end;

0
 
LVL 24

Assisted Solution

by:jimyX
jimyX earned 94 total points
ID: 35188833
The measures are inches. Set the ruler to inches then when you set SectionBottom to 10 then the bottom of the page will be at 10 on that ruler. So it did not work out for you because 30 is out of the page's border. The maximum you can set is 11.

Try this way:
function TMainForm.LibRvSystemPrintPage(Sender: TObject;
  var PageNum: Integer): Boolean;
begin
   With Sender as TBaseReport do
    begin
      SectionTop := 1.5;
      SectionBottom := 10;
      PrintFooter('Page : '+ IntToStr(CurrentPage), pjLeft);
    end
end;

Open in new window

0
 
LVL 8

Author Comment

by:BdLm
ID: 35192698

is there a drawing showing the difference between margin and sectionTop, sectionBottom ....

0
 
LVL 8

Author Comment

by:BdLm
ID: 35192893
problem solving progress :

---------------------------------
///
///   support :  http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_26902682.html?cid=239#a35188192
///   procedure :  Pass

procedure TMainForm.LibRvSystemPrintFooter(Sender: TObject);
begin

   With Sender as TBaseReport do
    begin

      PrintFooter('Page : '+ IntToStr(CurrentPage), pjCenter); // or pjLeft/pjRight

    end
end;

///
///  support  http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_26902799.html
///
///  margin setting, orientation and Section do not seem to be functional !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
///  procedure : fail

function TMainForm.LibRvSystemPrintPage(Sender: TObject;
  var PageNum: Integer): Boolean;
begin
   With Sender as TBaseReport do
    begin
      //...

      SectionTop := 2 ;
      SectionLeft:= 2;
      SectionRight   := 2;
      SectionBottom  := 2;

      MarginLeft := 0.5;
      MarginRight := 0.5;
      MarginTop := 0.5;
      MarginBottom := 0.5;

      Orientation := poLandscape;

      //...
    end
end;
0
 
LVL 32

Expert Comment

by:ewangoya
ID: 35195346

You can find your margins from RpDev.Waste property
Left := RpDev.Waste.Left / RpDev.XDPI;
    Top := RpDev.Waste.Top / RpDev.YDPI;
    Right := RpDev.Waste.Right / RpDev.XDPI;
    Bottom := RpDev.Waste.Bottom / RpDev.YDPI;

Open in new window

0
 
LVL 24

Assisted Solution

by:jimyX
jimyX earned 94 total points
ID: 35196234
Please could you use the event OnPrint:
function TMainForm.LibRvSystemPrint(Sender: TObject;
  var PageNum: Integer): Boolean;
begin
   With Sender as TBaseReport do
    begin
      SectionTop := 2 ;
      SectionBottom  := 10.5;
      PrintFooter('Page : '+ IntToStr(CurrentPage), pjCenter);
    end
end;

Open in new window


Orientation will not work in the Print events. If you want to change the orientation, set it either at the object inspector or using the TRvSystem property (RvSystem.SystemPrinter.Orientation) but the most important thing is to set it before executing the report:
procedure TForm1.Button1Click(Sender: TObject);
begin
  RvSystem1.SystemPrinter.Orientation := poLandScape;
  RvSystem1.Execute;
end;

Open in new window

0
 
LVL 8

Author Comment

by:BdLm
ID: 35238779
is there a way to change all units from inches to mm ?
0
 
LVL 24

Accepted Solution

by:
jimyX earned 94 total points
ID: 35238809
Click on the RvSystem and from the object inspector go to SystemPrinter and set the property Units to unMM.

By code:
RvSystem1.SystemPrinter.Units := unMM;
0

Featured Post

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Virtuailstring tree compare node issue 14 125
Delphi application Soap connection 5 121
How to convert memory stream to PDF file 6 116
Firemonkey android show image from resource ? 1 46
A lot of questions regard threads in Delphi.   One of the more specific questions is how to show progress of the thread.   Updating a progressbar from inside a thread is a mistake. A solution to this would be to send a synchronized message to the…
This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question