Oracle reports builder, printing on last page - oracle

I have margin and inside it is a frame that contains a few lines for signatures, but I want it to only be visible on the last page.
So I set it to print on last page, horizontal to variable; but I thought I'd need to add a format trigger on the frame inside the margin. What should I write in pl/sql to achieve this?

If you want a frame to only print on the last page, don't put it in the margin. Instead, put it below all other frames and (as you already have) set it to print only on the last page.

Whatever you put in Margin is always displayed on all pages. Simply move your signature frame to the main layout, below your main group frame. And set it to display on last page only. I assume your signature query is separate query that may or may not be related to other queries... You may keep it inside the main group frame making signature frame variable, for example. It all depends on your design and requirements.

I get it now, there is button in toolbar edit margin, and u can edit everything inside margin. so i put frame inside it and in properties change last page and it worked as i wanted to work. THanks on your replies.

Related

how to show a field in oracle reports at the bottom of the last page which is placed outside the border

how to show a field in oracle reports at the bottom of the last page which is placed outside the border
A trivial answer is: place it outside the border.
I presume you already did that and encountered problems. It would really help if you specified which one(s).
The most usual error is that you're referencing a column at a wrong frequency, i.e. you can't just "move" it outside of its parent frame. (I guess that the frame is what you call a "border".) If that's so, well, you can't do that.
One way out is to create a new column (in the Data Model layout editor) (be it a formula or a placeholder column) which doesn't belong to any group, but is independent. Then you can place it anywhere you want.
If, on the other hand, you do have a formula (or placeholder, or summary) column and "border" you mentioned is the margin, then - while in Paper Layout editor - click the "Margin" icon in the toolbar to switch to ... well, margin layout editor. Now place that field anywhere you want.
Or, did you try to move the field but frames were resized and other fields moved along with the movement of the field you're moving? Pay attention to "Flex" and "Confine" ON/OFF buttons in the toolbar as they make the difference.
If none of above, what is your situation, then?

How can I programmatically detect if some text is visible or has overflowed in an InDesign document using ExtendScript?

I am building an InDesign panel with ExtendScript which finds text and shows it to the user. To do this, I use the showText() method of the Character object. The problem is that sometimes the text I'm looking for doesn't appear because, even though the method does show the right page at the right place, the text has overflown and is not visible.
Is there a way to check if the text is visible or not? Ideally, I would like to be able to fall back on the story editor if the text cannot be seen as-is...
To check the situation for an individual character, see the parentTextFrames property, it returns an array with 0 or 1 frames. In rare cases of insertion points whose left side is in one frame while the right side is in the following, you get two frames.
app.selection[0].characters.item(0).parentTextFrames.length
You can also compare the index of your character against the last index in the last text container of the story, e.g.
app.selection[0].parentStory.textContainers.pop().characters.lastItem().index
Of course you should first see whether there is overflow at all ...
app.selection[0].parentStory.overflows
You may call the baseline property for the text in a try/catch statement. If text is visible, baseline will return a value, otherwise it will raise an error.
Loic

Retrieving the "highest level frame" from SHDocVw WebBrowser control

The documentation for the DocumentComplete event mentions near the end:
In the loading process, the highest
level frame, which is not necessarily
the top-level frame, fires the final
DWebBrowserEvents2::DocumentComplete
event. At this time, the pDisp
parameter is the same as the IDispatch
interface pointer of the highest level
frame.
What is the difference between the highest level frame and the top-level frame, and how do I get a reference to the highest level frame?
Assume you have a web site that has a top-level frame set that contains a banner frame on top, a menu frame on the left, and a content frame on the right. Each anchor element in the menu frame has a target attribute set to the content frame. There are some iframes on each content page that would be target pages of menu items.
Now you click a menu link on the left. The frame set itself does not change, nor does the menu frame. The only frame that is navigating is the content frame, the highest level frame in the navigation.
You can get the reference of the highest level navigating frame from the parameter of the first NavigateComplete2 event. IE then parse the frames on the content page to see if there are additional frames to load. Additional NavigateComplete2 and DocumentComplete2 events were raised when the rest of the iframes on the content page are loaded, and finally the DocumentComplete2 event is raised for the content frame.
if you are doing this to test to see if document has truely loaded, there is a better way to test for this particular event (ie: pDisp objects). Look at some of my webbrowser-control related answers.
so here, you want to run a difference counter between NavComplete and DocComplete, however, if you do it normally, it won't work, as NavComplete gets called more than once on many frames, so you need to check to see if the NavComplete being called is a unique one. In vb its just comparing one object to another using the Is operator, in C# i understand Is isn't available, so you just do a normal object comparison.
So, you keep a list of every pDisp objects that NavComplete has posted, and before adding each one, you check the entire collection to make sure the pDisp being added hasn't been added before (ie: is unique), eg: If pDisp Is pDispCollection(i) Then and "i" being your increment counter in your for each loop.
Now, the pDisp's that DocComplete posts are ALWAYS unique (so you dont have to worry about it getting called more than once for each new/unique pDisp), so every time a pDisp occurs, you just find which one it is from the collection, and remove it.
Once you are at 0, you know it has truely finished :).
There are other things you need to test for but this is a big/main important one and will increase your accuracy big time (much more than just checking for .busy and .readystate).
Let me know how it goes or if you need more help.

Dynamics AX 2009 Report: LabelPosition above does not work?

I'm just in the process of changing the SalesInvoice Report. One thing I'm trying to do is show the label of some items not left of the item value but above it instead.
Seems easy enough: just change the LabelPosition (for example from CustInvoiceJour_InvoiceId) setting from "left" to "above" and voila: the label has vanished. It is just shown nowhere at all.
Strange. I would have expected the label to show up, well, above the content. Not to vanish.
Am I missing something (there is no label height to set), or is this functionality broken?
I'm not sure if this functionality is broken. But in generated design, these elements will not show the label if it's set to above:
Prolog
PageHeader
Header
Footer
Epilog
ProgrammableSection
If the item you're trying to change is in one of those, then the label position above will, from my experience, not work.
My tip is to create a new control of the text type and then use the same label that the extended data type for the field uses under the "text" property and then adjust the position so it is positioned above the field you're trying to set a label on.
From what I have noticed for a ProgrammableSection the column name labels are not shown only on the first page of the report. The labels are shown on the next pages.

Win32 List-View Control SubItem padding for custom-drawn SubItems?

When using custom-draw (NM_CUSTOMDRAW) to draw the entire contents of a ListView SubItem (in Report/Details view), it would be nice to be able to apply the same left and right
padding in my custom paint method that is applied by the control itself for non-custom-drawn items.
Is there a way to programmatically retrieve this padding value? Is it
related to the width of a particular character (" " or "w" or something?) or
is it a fixed value (6px on left and 3px on right or something) or...?
EDIT: To clarify, I want to add the same padding to my NM_CUSTOMDRAWn SubItems that the control adds to items that it draws, and the metric that I'm looking for, for example, is the white space between the beginning of the 2nd column and the word "Siamese" in the following screenshot (Note: screenshot from MSDN added to help explain my question):
(source: microsoft.com)
Note that the word "Siamese" is aligned with the header item ("Breed"). I would like to be able to guarantee the same alignment for custom-drawn items.
use ListView Header message HDM_GETBITMAPMARGIN
see link text
ListView_GetSubItemRect (LVM_GETSUBITEMTECT)
http://msdn.microsoft.com/en-us/library/ms930172.aspx
Despite what the documentation says I suspect LVIR_LABEL returns just the returns the bounding rectangle of the item text, as per ListView_GetItemRect.
(This just kept niggling me as I though I had actually seen an answer somewhere when playing with NM_CUSTOMDRAW).
Edit After Comment 2:
I imagine you have seen NMLVCUSTOMDRAW which if you are willing to use Version 6.0. has rcText. I wouldn't since I use Win2K.
Given what you have found I would go back to the suggestion of using
ListView_GetItemRect to get LVIR_LABEL and compare that with LVIR_BOUNDS and use the difference.
the way for doing this is retrieving the format of the corresponding column with
ListView_GetColumn()
then check the retrieved myLVCOLUMN.mask
LVCOLUMN myLVCOLUMN;
myLVCOLUMN.mask=LVCF_FMT;
ListView_GetColumn(hwnd,nCol,&myLVCOLUMN);
then when we draw the corresponding label belonging to that column
if(myLVCOLUMN.fmt & LVCFMT_CENTER)
DrawText(x,x,x,x, DT_CENTER | DT_WORD_ELLIPSIS );
else if (myLVCOLUMN.fmt & LVCFMT_RIGHT)
DrawText(x,x,x,x, DT_RIGHT | DT_WORD_ELLIPSIS );
else
DrawText(x,x,x,x, DT_LEFT | DT_WORD_ELLIPSIS );
I would assume that GetSystemMetrics() is that you need to look at. I think that SM_CXEDGE and SM_CYEDGE are probably the values you want, but don't quote me on that. ;-)
Can only guess without seeing your output.
A few suggestions: If you are using the DrawTextEx function, have you have experimented with DT_INTERNAL et al?
Are you accidentally putting in a blank image/icon.
Does it look ok in classic screen mode? If so I would look at XP Theme functions to see if some thing is going on.
Late edit after first comment:
I wonder if the size of rectangle matches the space required for the LVN_ENDLABELEDIT edit box around the text so the text doesn't move (or for a focus rectangle)?
I guess you could compare the result of LVM_GETITEMRECT with LVIR_LABEL on the first column and use the difference as your left border.

Resources