Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » U++ Library support » U++ Widgets - General questions or Mixed problems » ArrayCtrl with labels / layouts inside ?
Re: ArrayCtrl with labels / layouts inside ? [message #12911 is a reply to message #12894] Tue, 27 November 2007 22:55 Go to previous messageGo to previous message
mirek is currently online  mirek
Messages: 14261
Registered: November 2005
Ultimate Member
jiaif wrote on Mon, 26 November 2007 13:18

Thank you for the code, but i'm sorry, i have the same errors Sad
I don't understand why.

Maybe because myArray is added before i add buttons ?
I mean in my code, myArray is defined in the layout.

Maybe because i'm under linux ? Very Happy

[edit]
if i do :
Button b;
b.SetLabel("test");
myArray.AddColumn("test");
myArray.SetCtrl(0,0,&b);

it compile well but the button don't appear. Any idea ?


First of all, SetCtrl(..., Ctrl *ctrl);

is deprecated and should not be used in any new code, in fact, it will likely be removed.

Anyway, now I believe that the fundamental problem of your code is that you are doing something like:

MyApp::MyApp() {
   Button b;
   ...
   myArray.SetCtrl(0,0,b);
}


This cannot work (or in fact, works as expected), as Button is destroyed at the and of MyApp().

To make it more clear, have fun:

#include <CtrlLib/CtrlLib.h>

using namespace Upp;

#define LAYOUTFILE <Test/Test.lay>
#include <CtrlCore/lay.h>

class ArrayTest : public WithArrayTestLayout<TopWindow> {
public:
	typedef ArrayTest CLASSNAME;
	ArrayTest();
	
	Array<Button> btn;
	Array<Option> opt;
};

ArrayTest::ArrayTest()
{
	CtrlLayout(*this, "Window title");
	Sizeable().Zoomable();
	
	myArray.AddColumn("Column1");
	myArray.AddColumn("Column2");
	
	for(int i = 0; i < 100; i++) {
		myArray.Add("Row: " + AsString(i + 1));
		if(i & 1) {
			Button& b = btn.Add();
			b.SetLabel(Format("Button %d", i + 1));
			myArray.SetCtrl(i, 1, b);
		}
		else {
			Option& o = opt.Add();
			o.SetLabel(Format("Option %d", i + 1));
			myArray.SetCtrl(i, 1, o);
		}
	}
}

GUI_APP_MAIN
{
	ArrayTest().Run();
}


Mirek

 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: How to use WithDropChoice?
Next Topic: PromptOK - little error in textselection
Goto Forum:
  


Current Time: Sun Jun 08 20:46:11 CEST 2025

Total time taken to generate the page: 0.04341 seconds