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 » Community » Newbie corner » How to use callbacks
How to use callbacks [message #45865] Fri, 15 January 2016 18:56 Go to previous message
Patisab is currently offline  Patisab
Messages: 21
Registered: December 2015
Location: France
Promising Member
Good evening,

I would like to execute a function when the value in an EditField changes. I've tried something like this :

testcallback.h :
#ifndef _testcallback_testcallback_h
#define _testcallback_testcallback_h
#include <CtrlLib/CtrlLib.h>
using namespace Upp;
#define LAYOUTFILE <testcallback/testcallback.lay>
#include <CtrlCore/lay.h>
class testcallback : public WithtestcallbackLayout<TopWindow> {
public:
	void fCalcul();
	typedef testcallback CLASSNAME;
	testcallback();
};
#endif


main.cpp :
#include "testcallback.h"
testcallback::testcallback()
{
	CtrlLayout(*this, "Test CallBack");
	go <<= THISBACK(fCalcul);
}
GUI_APP_MAIN
{
	testcallback app;
	app.Run();
}


calcul.cpp :
#include "testcallback.h"
struct Saisie : public WithsaisieLayout<TopWindow> {
	Saisie()  {
		CtrlLayoutOKCancel(*this, "Saisie des valeurs");
		vs.WhenAction <<= THISBACK(Calcul);
		vm.WhenAction <<= THISBACK(Calcul);
	}
    void Calcul()
    {
        int Vs, Vm, Vc;
    	Vs = vs.GetData();
        Vm = vm.GetData();
    	Vc = Vs * Vm;
        vc.SetData(Vc);
        vc.Refresh();
    }
};
void testcallback::fCalcul()
{
	Saisie dlg;
	dlg.Run();
}


testcallback.lay :
LAYOUT(testcallbackLayout, 200, 100)
	ITEM(Button, go, SetLabel(t_("Calcul")).LeftPosZ(72, 56).TopPosZ(80, 15))
END_LAYOUT
LAYOUT(saisieLayout, 200, 100)
	ITEM(Label, dv___0, SetLabel(t_("Valeur à saisir :")).LeftPosZ(4, 92).TopPosZ(4, 19))
	ITEM(EditInt, vs, LeftPosZ(104, 64).TopPosZ(4, 19))
	ITEM(Label, dv___2, SetLabel(t_("Valeur modifiable :")).LeftPosZ(4, 92).TopPosZ(28, 19))
	ITEM(EditInt, vm, LeftPosZ(104, 64).TopPosZ(28, 19))
	ITEM(Button, ok, SetLabel(t_("OK")).LeftPosZ(40, 56).TopPosZ(80, 15))
	ITEM(Button, cancel, SetLabel(t_("Cancel")).LeftPosZ(104, 56).TopPosZ(80, 15))
	ITEM(Label, dv___6, SetLabel(t_("Valeur calculée :")).LeftPosZ(4, 92).TopPosZ(52, 19))
	ITEM(EditInt, vc, SetEditable(false).LeftPosZ(104, 64).TopPosZ(52, 19))
END_LAYOUT


When I compile I obtain this error message :

error: 'Calcul' is not a member of 'Upp::TopWindow::CLASSNAME {aka Upp::TopWindow}'

Thank very much for your help.

Best regards.
 
Read Message
Read Message
Read Message
Previous Topic: PlotCtrl in upp-x11-src-9360.tar.gz missing
Next Topic: Empty Template vs CtrlLib application with main window
Goto Forum:
  


Current Time: Sun May 05 03:02:18 CEST 2024

Total time taken to generate the page: 0.01740 seconds