Hey guys, I am pretty new to programming and Xojo as well, so hopefully you can enlighten me…
I am trying to display (in a window) a dynamic matrix/array of bevel buttons that represent the rooms of a hotel. Some hotels may have 20 rooms, some may have 400.
If you click in one of this buttons the room properties/details should pop up.
I have it kind of working now, but the problem is, If I display more than 200 buttons the display process becomes slow and sluggish. And every time the window (and the buttons) updates it becomes even slower. I am not sure what would be the best way to either code this OR maybe find other solution to display 400 clickable objects on an eventually scrolling pane.
PS. I Tried to make an array of buttons on a canvas (to be able to scroll) but it was EVEN slower.
Use a CANVAS… and what I would do (based on what you said above)… it not create a bazillon of them… but just one, and then use the X,Y coordinates of a mouse click within the canvas to determine what “room”. If done properly, the hotel layout can be stored in a database or XML file, and the actual code doesn’t change … just the contents of the database depending on the hotel involved.
Hey Dave, thanks for the reply… ! Not sure I got your idea…
Use a canvas… ok… and then… draw as many “buttons” I want and get the coordinates of the mouse click to determine what “button” was pressed ? Is this your suggestion ?
If that is the case… it is mucho more work… because also these “buttons” (or clickable surfaces) should have some properties, like a label, a color… etc… just like… a button !
But I can imagine that drawing that on a canvas and getting the mouse clicks programmatically will be faster than deploying hundreds of colored buttons… Am I right ?
You can write a function to draw each state of the button. Then you can pass the appropriate function the room number and it can draw that button for you.
I would like the user to have a fast visual feedback about the whole room situation. With different colors having different meanings, locked rooms, empty rooms, “to be cleaned” rooms, etc…