I'm trying to align one piece of text inline to the left and one piece of line of text to the right in a QTextEdit. The only example I've found demonstrating how to do this is this question.
However, that question appends the new text every time, which effectively creates a new block. I need to do the formatting inline, so that one piece of text is left-justified, and one piece of text is right-justified.
Is there any way to do this? I looked into using tables, but it looked like the tables had a universal alignment setting.
Related
My program uses TableWrapLayout with numColumns set to 2. I then have the following code: (background colors are set to show you that the widgets aren't using the blank space).
Label label = toolkit.createLabel(container, "Resource Type":);
label.setLayoutData(new TableWrapData(TableWrapData.LEFT,TableWrapData.MIDDLE));
label.setBackground(DiagramSettings.NODE_BACKGROUND_COLOR);
resourceComboMenu = new Combo(container, SWT.READ_ONLY);
resourceComboMenu.setBackground(DiagramSettings.NODE_BACKGROUND_COLOR);
resourceComboMenu.setLayoutData(new TableWrapData(TableWrapData.LEFT,TableWrapData.MIDDLE));
However as you can see in the picture the combo box refuses to left align properly. But that I mean I want it to start right after the label, not have a bunch of blank space.
One workaround would be to put the row inside it's own Composite just like I do Resource Icon and Geolocation. But I feel like I shouldn't need to since the widgets on this row equals the number of columns set by the layout. I've created this workaround for now but would like to understand this TableWrapData behavior for the future.
Any insight would be helpful, thanks.
I pretty much answered my question in the question. The composite that contains everything in the picture had TableWrapData with columns set to 2. TableWrapData essentially draws a straight, vertical line between each column then makes sure widgets from one column don't cross it.
So to fix this (like I mentioned in my question) you simply make another composite with nested widgets (which in the case would be the resource type label and resourceComboMenu). I just didn't realize that is what you're supposed to do.
How to vertically align the text in static text box in PowerBuilder like the following picture? It can be aligned horizontally to left, center, right. But cannot do the same thing vertically.
Thanks
As far as I know, it cannot be done out of the box.
I have made it anyway "by hand" with the help of the windows API: DrawText(), OffsetRect() and so on to create an improved rounded command button.
You can look at the code in that gist (look at the of_drawtext() method).
Can you explain the purpose of this text box?
Maybe you could use another object where you can easily move your text within.
The text in the box may have a variable number of line?
Do you use sql on the window object?
Maybe put this text between line feed in compute field within the datawindow you used can help you.(Handy Manny's style.....i agree....).
Erf....Seki answered faster
You can use a DW to vertically align a text.
An attribute of the dw static text called "font.escapement" sets the angle at which you want your text displayed.
To display text vertically, set the escapement attribute to 900 (10 * the angle) or to 2700.
Please notice that you will not see the effect in the datawindow painter, you'll have to preview your dw to see if the text is in the correct angle.
Ok, this is basically what I'm doing right now. I create the raphael text object. I use a click event to open a dialog box. Then I make the changes to the text in the dialog box. This isn't how I wish to implement this though. I want my implementation to be somewhat similar to the way text is created in MS Paint where the user can click on the text object and change the text as they're typing. Does anybody know how to implement this using a raphael text object?
A simple solution would be to create a <textarea> when the user starts editing the text. Fill it with the current text and place it over the text object. Then, when it loses focus (onblur), remove the text area and copy the text back into the text object.
If you really want to edit the text "in place" in the text object, then you can let the user type in a hidden text field. But in this case you'll have to implement all the cursor and selection logic yourself. See this fiddle (which only allows using the right and left arrows to move the cursor, with shift to select text so that you can copy and paste).
Alternately, I don't know if contenteditable works for SVG content, but that would be a very simple solution if it did work.
I asked this question on the LiveCode email list. No response, so I figure it must not be possible. I know about editing the template graphic that enables alternating row colors. That doesn't help me.
This lesson is the closest to what I have found, but it only sets the overlay color to empty cells. It also had an unwanted affect, where any data that was present in the grid no longer shows up.
http://lessons.runrev.com/s/lessons/m/datagrid/l/7327-how-do-i-override-the-default-behavior-for-rendering-data-to-a-cell
As a little experiment, since the data became invisible (note that I'm on WinXP), I tried placing an opaque graphic over the column I wish to colorize. I set the ink of the graphic to AddMax or AddOver, and it looked nice, but the text in the cells disappeared. Then I tried setting the ink to AddMin, and it still looks good, but the test shows through!!!!
So, I think this will work fine visually, but how can I pass a double-click through this graphic to the cell underneath (to allow cell editing only within this column)?
Yes, you can do this.
This suggestion comes from Trevor DeVore at http://www.bluemangolearning.com/
Create a custom column template using the property inspector. From there you can edit the behavior of the column to colorize the background color of the field for that column or just edit the field in the template group to change the color.
The background color will only show up in rows that have data, however.
This question is a follow up to my original question, I've done a bit more reseach, i narrowed a problem down quite a bit.
I've also uploaded a sample .rdl to illustrate the problem
I've got the following report setup: a header (image in the body), two textboxes, and a footer.
First textbox has a little bit of text, and second textbox has lots of text. Second textbox can fit on one page by itself, but won't fit on the page with my header and the first textbox.
The problem is that for some reason, the second textbox in the report is unaware of other contents of that same report, and as long as that one textbox fits on one page - it will be moved to the second page. (once the textbox grows larger than 1 page - it will split, and will achieve the desired behavior)
Desired behavior is to split the second textbox, and keep as much text on the first page as possible, and move the rest to the second page.
I'm not sure about v.2005 but in v.2008 you can set a textbox property: KeepTogether to false.
This will fit as much text on the first page than the rest on the second page.
This is pretty standard behaviour in SSRS. Like many issues with the Reporting engine, you have to trick it.
In this case you could try to provide the 'lines' for the second text box as individual rows in a Detail, then use a repeater or table to display them. Alternatively you could break on 'paragraph'. Unfortunately you'll have to do this in your data source, probably in a stored procedure, depending on how you're getting the data to the report.
If appropriate you could look at client-side reporting (.rdlc files), which allows you to pre-process the data in a .NET application, although setting up for printing can be more complex.