Ok, so I have a grid with lots of controls. And oops, I missed something and need to move everything down one row...
type type type
My mistake, I needed two rows...
type type type
Ok, this really sucks. So, how do I insert a row in a way that will move everything down.
Not sure which version of Blend you are on, but in version 4 I can click to the left of the grid to divide a row into two. This has three effects:
creates a new row in the Grid.RowDefinitions section
adds 1 to the Grid.Row attributes of all rows beneath your division (moves them all down a row)
adds 1 to the Grid.RowSpan attribute of all controls in the row you have divided
You can now manually change the the RowSpans back to their original value and voila - you have a blank row.
Related
I'm building a tree store with GTK3 in C in which there are primary rows that are always displayed, and by clicking on the little triangle icon to the left of a primary row, additional secondary (child) rows expand below the primary. As an example, consider that the primary rows could be directories, and when they're expanded, rows below that show the files in those directories. I'm doing this to allow a user to select primary items to be deleted, while the secondary rows are just informational, telling, for example, what files are in the directory, so they'll know if they really want to delete the whole thing.
To enable selection for deletion, the first column contains a GTK_CELL_RENDERER_TOGGLE, and I have a callback associated with the checkbox toggle. Everything works nicely except for one thing. When the user clicks the little triangle item to expand a row, most of the content of the primary row does not appear in the secondary rows (this is expected and desired), but... the checkbox toggle does appear in the first column. Although in a directories/files example that might be meaningful, in my case it makes no sense to think of deleting the content of the secondary rows.
When building the secondary rows, I've tried things like just:
gtk_tree_store_set(TS,&J,2,"filename",-1);
or
gtk_tree_store_set(TS,&J,0,NULL,2,"filename",-1);
hoping that NULL would cause the toggle to be suppressed, but to no avail. GTK still displays a checkbox, probably just interpreting the NULL as a zero.
Is there a way to control (and in my case, suppress) display of the toggle? Or more generally, is there a clean way to control which columns are displayed in child rows? It seems to work with TEXT, but just not with TOGGLE.
A little later: There is a potentially useful function called gtk_cell_renderer_set_visible(), but it requires a reference to the cell renderer. How to acquire that on a per-row or per-cell basis when all I have during construction is the GtkTreeStore and a GtkTreeIter?
There are (at least) 2 solutions:
Base class GtkCellRenderer has visible property. You can add extra field to your model which indicates, whether Toggle should be visible for this row.
If there are other fields in you model which indicate whether it's a primary or secondary row but not directly you can use gtk_tree_view_column_set_cell_data_func to set a function to be called before rendering. There you can call gtk_cell_renderer_set_visible or any other function to set renderer's properties manually.
I have a tablix, one with dynamic columns. The order is fine ("total" shows up last) but the problem is that, for scanning purposes, the last column needs to always be aligned right and any additional columns have to be to the left of that origin point. How to accomplish this?
I've tried setting the "Direction" of the column to RTL and tried putting another object on the right of the tablix but that just gets pushed to the right for every extra column. Is there some sort of anchor property I'm missing or something that'll keep the tablix from growing on the right side?
There aren't any properties that allow you to dynamically change the width of columns or the position of tables etc. As a table grouping grows, it pushes other elements out of the way. First thing to try is put both of the tables in a rectangle. This can help keep them in position.
Another option is to use visibility to change where your values appear, while maintaining the same underlying layout. Depending on the specifics of how you're trying to lay things out, this may be difficult to use for your purposes.
I have a dynamically filled GridPane, where I'm animating the first row and column, so if there is a lot of information, the user doesn't get lost, because the row and column jumps to the selected area.
(Animating: I created two GridPanes, one for the first row and the second one for the first column, then I move the labels into the new GridPanes and finally starts the animation.)
It looks like this:
The user can also select some cells and change the content (using KeyEvents).
But there is a problem, when I change the text of a label, the animated row and column jumps back to their first position, but I don't understand why. It happens only, when I change the text, the CSS style for example is not causing the issue.
I’ve come across a problem with Windows list controls (I am specifically using MFC, but it looks like it applies to all list controls in the Windows common controls library).
In my specific case, I want to create a list control that has two or more columns. The first column (0) is text-only and is used to allow the user to jump to entries by typing the text in that row. Column two (or three, or four, or whatever) has an image (or an image and text; either way).
This much is all well and good and can be done easily without problem, however the final list control then ends up having a space to the left of the text in column 0 (it may be on the right on an RTL system). This spacer appears to be reserved for an image and I cannot figure out a way to prevent it. (Arranging the specific order of the columns did not change anything.)
Looking around, I found some other people complaining of the same thing, specifically this thread which leads to this thread. The proposed solution does not work because as was stated, simply shrinking the width of column zero merely cuts off the text rather than the image spacer (plus, you then have to prevent and/or process any changes to column widths that the user tries to make).
Does anyone have any ideas of how to fix this bug short of writing a list control from scratch or using one of the too-fancy grid controls on CodeProject/CodeGuru/etc.?
Thanks a lot.
Did you try to change the iIndent member of the LVITEM struct? MSDN says this:
iIndent Version 4.70. Number of image widths to indent the item. A
single indentation equals the width of
an item image. Therefore, the value 1
indents the item by the width of one
image, the value 2 indents by two
images, and so on. Note that this
field is supported only for items.
Attempting to set subitem indentation
will cause the calling function to
fail.
Column 0 is special in a ListView. As soon as you assign a small image list to the ListView, the control expects you to show an image in column 0, so it leaves space for it.
Solutions:
make column 0 zero-width, give it the value you want the user to be able to type. Column 1 becomes your "first" text column. Columns 2+ are for your images. You need full row select style for this to work. Yes, you have to prevent the user from resizing column 0. Yes, that is a pain.
make a column that does have an image to be column 0 and use LVM_SETCOLUMNORDERARRAY to rearrange the display order
owner draw the items.
give column 0 an icon (just to cover all bases)
I have a rdlc report in which I have a table with 6 columns. Of these 6 columns, the visibility of the 2nd and 4th column are toggled. i.e. if 2nd column is visible, 4th is not visible and vice versa. The report displayed properly with these settings.
Then a new row was added to the table. All the cells in this row were merged and a rectangle added to this row. Then a few textboxes were added to this rectangle. Now when this report is run, the display of the table is disturbed. An empty column in shown before the last column and the header of the last column also appears displaced.
After a few permutations, I zeroed in the actual problem.
If you have a table with a row with merged cells and a rectangle in the merged cells, then hiding any column does not disturb the display, but if you add a textbox to the rectangle, the display of the table is disturbed as mentioned above.
Is this an inherent problem in RDLC reports or I am missing something here ?
Note, the reports are run in local mode and environment is Visual Studio 2005.
This seems to be defect in ReportViewer. Setting a column's hidden property to true should be sufficient to complelety obscure the column. However in this case, along with setting its hidden property to true you also have to set its width to 0.0 inches to completely obscure it.
I am discarding my earlier answer. The solution described above does work but has some glitches.
A more proper method is allocating a new column array to the column collection of the RDLC report table via deserialization and then serializing the report back. Deserializing an RDLC report exposes it as an Object. This column array will contain the original table columns except the ones that are to be hidden.
The solution is complicated but effective.