Solved

rave , page margins -code based report

Posted on 2011-03-22
11
1,284 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
VMware Disaster Recovery and Data Protection

In this expert guide, you’ll learn about the components of a Modern Data Center. You will use cases for the value-added capabilities of Veeam®, including combining backup and replication for VMware disaster recovery and using replication for data center migration.

 
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

ScreenConnect 6.0 Free Trial

Check out the updates in one game-changing release, ScreenConnect 6.0, based on partner feedback. New features include a redesigned UI that improves session organization and overall user experience. See the enhancements for yourself!

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Path  to current project in Delphi. 2 79
Best Firemonkey component pack 1 104
Delphi Firemonkey Need Sample for Online Shopping Example. 2 142
update joined tables 2 46
Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

770 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