I have a form in a large box, to be filled in by the user with up to 2500 characters. Currently, the cursor starts in the vertical center of the box and I would like:
a) The cursor to start at the top left of the field instead of the middle left, so that there is no whitespace above the user's entered text.
or b) Somehow enabling a field that expands to fit its text to expand as the text is being entered. As far as I can tell, text fields set to expand to fit the text inside only expand once the user has taken their cursor off the field.
Thanks for your help!
Right click on the field and go to "Palletes". Click "Paragraph". This will give you the paragraph/text alignment controls in your rightside toolbar.
Alternately, you can click "Window" at the top and choose "Paragraph" from there (Shortcut is Shift+F5).
Related
I couldn't think of a coherent search term for my problem so please forgive me if this has been asked before.
I have 24 combo boxes sitting on a panel control, displayed in 4 rows of 6.
After the user defines the value for each combo and hits the "go" button, I add all combo boxes to list so I can use the values in another section of my program.
The problem is that the order the comboboxes are added to the list is messed up, compared to their visual layout on the panel, and I would like to define the order. Currently, it adds the 9th combobox to the list first then the 20th, 2nd, 16th etc etc.
I tried TabIndex but that didnt work.
Before I manually rename and relabel all of the boxes, any other suggestions will be gratefully received.
The controls of your form exist in Controls collection of the container controls, for example when you add a Panel and a Button to a Form and two ComboBox to the Panel, then:
Form.Controls contains button1 and panel1
Panel.Controls contains comboBox1 and comboBox2
Controls are added to the Controls collection, with the same order that you add them to designer. Open designer.cs, look at the end of InitializeComponent to see the order.
You can also see/change the order using Document Outline window.
That said, now it should be obvious that panel1.Controls.OfType<ComboBox>() returns combo boxes with the same order that you see in Document Outline (or based on their z-index, and it doesn't have anything to do with their x/y placements).
You may want to order them based on TabIndex, or any other property that you like:
panel1.Controls.OfType<ComboBox>().OrderBy(x=>x.TabIndex)
Note
In general, if you are going to use those values for a search, instead of relying on the order of values, a much better idea is creating a SearchModel class which has a few properties, the set those properties to the selected value of the corresponding combo box (manually or using databinding) then pass the search model to the other classes.
I have created two APEX checkbox items on top of each other, one being the checkbox selections (complete, incomplete) and one being a select all option above it (with associated JavaScript to enable the select all functionality). Everything works great, but I am trying to remove the white space in between the page items.
The checkbox item with the selections has no label because the Select All item has the heading for both items to be treated as "one item" to the user. I think the template might still be accounting for the label padding, but I'm not sure.
Does anyone know a solution in order to remove the white space (I'd be find with a small amount of white space but right now it is very large and doesn't look visually appealing.
Open up the template options, and set the desired margin attributes to 'None'
I'm implementing show/hide column behaviour in a standard C++ Win32 application (no frameworks).
Say we've got 3 columns in a ListView control in Details view. The user has the option to show/hide the last two columns in order to see the extra detail if wanted or hide them to reduce clutter. All works well except that after the columns are deleted and then re-added, the data from the sub-items in those columns doesn't show up again, i.e. the columns are empty.
None of the items themselves have been altered in the meantime - do I lose the sub-item text when I delete the columns or I am missing something to force the columns to redraw the data?
Steps to reproduce:
1) Create a ListView32 control with 3 columns and add a bunch of items (and text to each of the items' sub-items). All good.
2) The user clicks "Hide Details", so I use LVM_DELETECOLUMN twice to remove the last two columns and they disappear. All good.
3) The user clicks "Show Details", so I use LVM_INSERTCOLUMN to add the last two columns and the headings appear, but the columns themselves are empty.
As an alternative, setting the column widths to zero is a hack and the user can still grab the re-size column splitter, so it's not a great option.
Many thanks for any suggestions.
Typically one does not store data in GUI. In case of plain listview32 you should add items specifying LPSTR_TEXTCALLBACK instead of real text and then handle LVN_GETDISPINFOW notification supplying (sub)item data. Windows will send this notification for all items. You can force Windows to retrieve data again by sending LVM_UPDATE message.
Setting the column widths is a viable solution. That is the way I do it in my UIs when columns can be shown and hidden dynamically. It works fine.
To prevent the user from resizing "hidden" columns, simply subclass the ListView using SetWindowLongPtr(GWL_WNDPROC) or SetWindowSubclass() to intercept HDN_BEGINTRACK notifications from the ListView's header control:
Notifies a header control's parent window that the user has begun dragging a divider in the control (that is, the user has pressed the left mouse button while the mouse cursor is on a divider in the header control). This notification code is sent in the form of a WM_NOTIFY message.
...
Returns FALSE to allow tracking of the divider, or TRUE to prevent tracking.
I have a table with styled column headers.
Header height is limited so the headers are actually narrow.
The header has also the sort indicator (the default arrow/triangle).
When the user changes the width of a column such that it is smaller than the text's width, the text is trimmed with 3 dots at the end. E.g. "Universi..."
So far so good.
The thing is the sort indicator hides part of the trimmed text.
Imagine wide column - the text is fully show and the sort icon is on the right and everthing looks good. Now the user resizes the column. Just before the text is trimmed with 3 dots, the sort indicator starts to hide the right side of the text. At some point the text is trimmed with the sort indicator on top of the 3 dots . E.g. "Universi.▽" or even "Univers▽".
It looks like the header does not take into account the sort sign.
Is there a simple way to set the sign indicator to not overlap the trimmed text e.g. "Univer... ▽"?
I need the columns to be resizable and sortable.
I don't want to define a special widget with push button and text box and handle events and trimming and so... it is a serious overhead.
Thanks
This is a bug https://bugreports.qt.io/browse/QTBUG-629
Which should be solved in Qt 5.4 https://codereview.qt-project.org/#/c/99900/
I often use select lists with my projects but when it comes to a huge select list, I couldn't find a solution. I need a easy, plug and play solution for solution will be used in a few places.
When you have a select box or text box to be filled from a model data, I want to show user a text box, right side of text box, there should be a button to choice the value. Upon clicking that button, popup or a modal will be opened and I filter all the records and find my value, upon clicking value, modal or popup closes and I get choosen value to form control.
İmagine you have a text box to choose your customer, and among 2500 customer,
PS:don't suggest autocomplete, don't want to accomplish it.
Why don't you look at something like Chozen plugin http://harvesthq.github.io/chosen/. It allows you to easily search large select lists