Programmatically move a FormulaFieldDefinition object - crystal-reports

Given that FormulaFieldDefinition does not have a Top, Bottom, Left, or Right properties...is there any way to move/resize the formula at runtime?

You're looking at it the wrong way - a FormulaFieldDefinition is simply the definition of the formula itself, and not an object on the report. Therefore manipulating the size or position of it makes no sense.
What is actually shown on the report is an IFieldObject which displays the result for the given formula. This is how you can (if needed) show the same formula several times on a report.
You need to find the name of the IFieldObject that is displaying the formula, and manipulate the location of that instead. This can be done using ReportDefinition.ReportObjects("NameOfIFieldObject") and the Top, Left, Width and Height properties of it. Remember that the Top and Left values are relative to the section the object is in, not to the report.

Related

Coordinate system in Crystal Reports

I'm working with CR version 13.0.25 - I believe the actual latest version as of this date is 13.0.26, so, basically the latest version of CR. What I am working with is re-positioning elements on the report dynamically from the C# code.
There are a couple of the reports where the original rpt (designed a number of years ago) spans multiple pages. These in particular are giving me issues, but they are not the only ones. The issue here focuses on the y (vertical) dimension.
CR documents use a coordinate system that is based in the upper left corner of the document, and is also based on twips (1440 twips/in). So, in theory, I should be able to set the Top value for a ReportObject to 1440 and that element should be printed 1" from some benchmark (either top of the page or bottom of the margin - I'm fairly sure it's bottom of the margin).
My results do not seem to reflect this - at least not exactly.
When I set the Top value, it appears that with some of the documents, the y dimension is scaled. In fact, I can apply a constant scaling factor (it varies according to the document) and I can make the fields appear with a relative 1" spacing all of the way to the bottom of the page. However, that scaling factor varies from document to document.
So, besides experimenting in our production code, I have also done the following:
I created a C# console app that opens an rpt file, grabs some of the elements on it, and re-positions them, then sends it to the printer. I designed a new rpt file with headers and footers sized as small as I could get them, and put 10 text fields in the details section. I iterate through the fields (via ReportDocument and ReportObjects and re-position them at 0, 1440 (1"), 2880 (2") etc.
This works perfectly with a document that has the default margins (.167 inches by default on each side). The first element has its top butted against the bottom of the margin, the second element is 1" from the top of the first element to the top of the second element, and so on down the page. If, however, I reduce the margins to zero - either programmatically or in the design, I get this scaling effect. The elements are all now about 7/8" or so apart, instead of the 1" that I would expect.
Does anyone know of any magic formula(s) or documentation on why the coordinate system appears to be changing? I could understand that if I change the margin that could offset everything on the page (assuming that the margin is our baseline) but it would seem to me that the inter-element spacing, being 1440 should still render at 1".
I believe Y is the vertical distance from the top of that section, not from the top of the page.

Vertically center report footer in remaining space on page

Is it possible to vertically center my report footer in the leftover space at the end of the page? The size of this leftover section depends on number of data rows.
There's no easy way to vertically center things in Crystal. Frustrating as it may be, there's no Vertical Alignment property on most things, and the Size/Position of things is static except when other objects push them around to make room for themselves.
However there is a ridiculously silly hack you can do to make this work.
Write a formula, let's call it SillySpaceFormula, that uses a loop to generate a certain number of return characters. Based on the number of records on this page, SillySpaceFormula will grow or shrink inversely. Set Silly's font size to be half the size of your details section. Then place this formula in a section above the orange-outlined box and set "Can Grow" to True.
If you do this just right, SillySpaceFormula will grow by one line when a record is removed and shrink by one line when a record is added. Because the formula field Can Grow, the orange box in your screenshots will be moved up and down automatically.

Crystal Reports fields won't align

I have several items that I want to line up. The Width and Height of all fields match. Usually I just use the Align, but it's making it worse. My out of line field which is slighly lower, moves way up, way out of line (with align tops)
So I tried using the Size and Position to set it manually. Several objects have a Y of 0.056, but my last one has 0.061. I change the last one to 0.056 and save it. It doesn't appear to be different, and when I look at it again, it's still 0.061. (When I used align, it went up to 0.028!)
I do NOT have Snap to Grid set (my grid size is 0.083). (Nor does turning on Snap to Grid make them align.) The fields have exactly the same formatting. But unless I can magically make them align by hand, they refuse to align. Why?
You've already done a lot of the regular troubleshooting steps. One more ting that I sometimes do is to select all the fields I want to align, then use the arrow keys and move them up into the section above and then back down into their original section. That usually puts them all into the 0 position. If it dosn't work with all of them selected, try each one separately.

iReport Designer - dynamic list and page number

I have put a list inside a rectangle with Relative to Tallest Object property which is inside a frame with Float property. All the components are inside the detail band. The size of the list component depends on the list which is sent from my Java application.
When I print a report with 100 objects inside a list, all records are not printed inside a rectangle. I don not know how I can fix it. Just the first page has a rectangle.
Also, I have a problem with page number. I put the page number variable at the bottom of the detail band with maximum height, but it is printed just on the first page. On other pages there is no any page number.
It would great if someone can help me.

How to create vertical line in iReport?

I'm using iReport-3.7.4 ,
I want to make table in detail like this ,
but , the line in this table can't longwise until the end of the table,
I've placed this table in detail ..
In iReport, Right Click on a Field, and goto Padding and Borders and set Line width to 1. As shown below:
Put the repetitive things in sub-report and draw the vertical lines in appropriate margins. Load the sub-report in the main window with its width tallies with the parent width. Test & modify the report again an again till you get the lines in the correct places. Moreover make sure you have checked on Print Repeated Values property for the line.
I've attached some reports I've created for my project, hope they can explain you well.
The Parent Report
The Sub-Report
The Final Output
If you really want to draw a line then just drag line element from palette and drag the bottom middle point of that tile element to increase the size and then decrease the width by dragging left middle point.