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 » ArrayCtrl, HeaderCtrl & GridCtrl » Embed editfields in ArrayCtrl
Re: Embed editfields in ArrayCtrl [message #24274 is a reply to message #24271] Fri, 08 January 2010 13:57 Go to previous messageGo to previous message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
This seems to work quite nicely:

#include <CtrlLib/CtrlLib.h>

using namespace Upp;

struct EditStringSpecial : EditString {
	ArrayCtrl *GetArrayCtrl() {
		for(Ctrl *q = GetParent(); q; q = q->GetParent())
			if(ArrayCtrl *a = dynamic_cast<ArrayCtrl *>(q))
				return a;
		return NULL;
	}
	
	static void DoRemove(ArrayCtrl *a) {
		a->DoRemove();
	}
	
	static void DoMenu(EditStringSpecial *x) {
		MenuBar bar;
		x->StdBar(bar);
		ArrayCtrl *a = x->GetArrayCtrl();
		if(a) {
			bar.Separator();
			bar.Add("Append a line", callback(a, &ArrayCtrl::DoAppend));
			bar.Add(a->IsCursor(), "Delete a line", callback1(DoRemove, a));
		}
		bar.Execute();
	}

	void MyBar(Bar& bar)
	{
		PostCallback(callback1(DoMenu, this));
	}

	typedef EditStringSpecial CLASSNAME;

	EditStringSpecial() {
		WhenBar = THISBACK(MyBar);		
	}
};

GUI_APP_MAIN
{
	ArrayCtrl a;
	a.AddColumn("Text").Ctrls<EditStringSpecial>();
	for(int i = 0; i < 300; i++)
		a.Add(AsString(i));
	a.SetLineCy(Draw::GetStdFontCy() + 8);

	TopWindow app;
	app.Add(a.SizePos());
	app.Sizeable();
	app.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
Previous Topic: problems with ArrayCtrl and SetFont
Next Topic: Assertion in GridCtrl
Goto Forum:
  


Current Time: Tue Apr 23 23:20:42 CEST 2024

Total time taken to generate the page: 0.01810 seconds