I started to get weird problems. I am using a Tabpanel with 12 panels. On each of these panels I placed checkbox controls. I was starting to add them to the last, 12th, panel and now I noticed that all of the checkbox controls are showing on all the Tabpanels. Why is this?
They are not âchildrenâ of the tabpanel you believe them to be.
They are sitting on top of them.
So meaning they are not connected to a specific tab? How can I make them connected to a specific tab only?
Switch to the specific tab. Drag the checkbox out of the window, then drag it onto the tabpanel, until the tabpanel gets a red outline showing that it is the parent
That is what I did all the time. I tried it again just now and the problem stays. Also, I ONLY see this bleeding to other tabs when running the app, not in layout mode.
And yetâŠ
Is there a way to get that screen from you as a file for checking?
I have to mention that the tab panel that contains the checkbox objects is inside a tab from another panel which is again inside a tab from another panel⊠All of them have the left, right and bottom borders set to the edges of the window. Can this give this problem?
the tab panel that contains the checkbox objects is inside a tab from another panel which is again inside a tab from another panel
Yikes⊠that is asking for trouble, and I expect it is very confusing for the user.
This is what I did in Filemaker and was never a problem. For the user it should be clear, I hope⊠It looks like this:
Nesting tabpanels - is that actually supported? (Or is it just pagepanels where you canât do that?)
No idea, I assumed it was. If this isnât supported I will have to change my layout design completely. This programs is already in the shop made in Filemaker some years ago and I wanted to create it in Xojo to have more programming options. So I hope I can keep the design the same.
Every time I try to adjust the width of a tab panel, Xojo crashesâŠ
There is two ways to resize a Control:
a. By its edges,
b. Changing the values
How many TabPanel(s) you want to resize at once ?
What Xojo version ?
What is the Memory Size ? (RAM)
Is thereâs enough SSD free space ?
What macOS version ?
And I do not ask the Screen size (in inchesâŠ)
How many TabPanel(s) you want to resize at once ? One at a time.
What Xojo version? Xojo: 2019.release 3.2
What is the Memory Size ? (RAM): 64 GB. Even with this amount or ram, I stil get the spinning ball very often in Xojo. I didnât expect this on a Mac Studio to be honest.
Is thereâs enough SSD free space ?: Yes, 1,97 TB, must one enoughâŠ
Mac OS: Monterey
Iâll be honest⊠if i wanted to to make use of this to develop a story outline, I think I would struggle a bit.
But if I go down â a different design suggestionâ, then we are not addressing the checkbox issue.
I do have afeeling that nested tabpanels are a problem. Im not sure if ânot supportedâ but I am sure I have read several posts from people who ran into trouble.
I think containercontrols are your best choice here.
These are âlike a windowâ, but they can be displayed on a window.
That said, your layout is very hierarchical.
I wonder if a hierarchical listbox might be a good way to navigate?
You just display the containercontrol or the pagepanel, which corresponds to the selected rowâŠ
Best advice I can give:
Download Xojo 2022r2, open the project and try (WITHOUT SAVING).
You can do that in free mode, buy a license if it works, else continue as you wish.
If it works the way you want, you know what to do.
Remember Apple Silicon (M1, M2) and MacStudio does not exists at 2019r2 release times.
This looks really good, how do I create a hierarchical listbox?
Add a listbox
Set hierarchical = true in the IDE
Then use code like this: (the numbers on the end are 'how deep the indentation goes")
listbox1.AddFolder "Story"
listbox1.AddFolder "Category Type"
listbox1.AddFolder "Characters"
listbox1.AddFolder "Worlds"
listbox1.AddFolder "Creation Steps"
listbox1.insertfolder (listbox1.listcount, "Act 1 (25%)",1)
listbox1.insertrow (listbox1.listcount, "About Act1",2)
listbox1.insertrow (listbox1.listcount, "Step One",2)
listbox1.insertrow (listbox1.listcount, "Step Two",2)
listbox1.insertrow (listbox1.listcount, "Step Three",2)
listbox1.insertrow (listbox1.listcount, "Step Four",2)
listbox1.insertfolder (listbox1.listcount, "Act 2 (50%)",1)
listbox1.insertfolder (listbox1.listcount, "Act 3 (25%)",1)
listbox1.AddFolder "Story Clock"
Thanks, I got it to work. Maybe this is a little cleaner for the design, yes.
Great.
Later on, if you didnt realise already, you need to add the children every time a folderrow is expanded, because they are deleted if a row is collapsed.
So instead of
listbox1.insertrow (listbox1.listcount, âAbout Act1â,2)
listbox1.insertrow (listbox1.listcount, âStep Oneâ,2)
listbox1.insertrow (listbox1.listcount, âStep Twoâ,2)
at startup,
you would initialise the list with just the top level items:
listbox1.AddFolder "Story"
listbox1.AddFolder "Category Type"
listbox1.AddFolder "Characters"
listbox1.AddFolder "Worlds"
listbox1.AddFolder "Creation Steps"
listbox1.AddFolder "Story Clock"
Then you would use code like this in the expandrow event:
select case me.list(row)
case "Creation Steps"
//row is the row you are adding children to..
me.insertfolder (row+1, "Act 1 (25%)",me.RowDepth(row)+1)
case "Act 1 (25%)"
me.insertrow(row+1, "About Act1",me.RowDepth(row)+1)
me.insertrow(row+2, "Step One",me.RowDepth(row)+1)
me.insertrow(row+3, "Step Two",me.RowDepth(row)+1)
//etc
case else
end select
If you set the rowtag of each added row to be âthe panel you want to showâ
like this:
case "Creation Steps"
//row is the row you are adding children to..
me.insertfolder (row+1, "Act 1 (25%)",me.RowDepth(row)+1)
me.rowtag(me.lastindex) = "panelact1"
case "Act 1 (25%)"
me.insertrow(row+1, "About Act1",me.RowDepth(row)+1)
me.rowtag(me.lastindex) = "panelaboutact1"
me.insertrow(row+2, "Step One",me.RowDepth(row)+1)
me.rowtag(me.lastindex) = "panelaboutact1stepone"
me.insertrow(row+3, "Step Two",me.RowDepth(row)+1)
me.rowtag(me.lastindex) = "panelaboutact1steptwo"
Then when a row is selected, you can display the right panel by checking the rowtag against the control names:
//listbox changed event
for x as integer = 0 to self.ControlCount-1
if self.Control(x) isa PagePanel then
pagepanel(Control(x)).Visible = pagepanel(Control(x)).name = me.rowtag(me.listindex)
end if
next