Home » Community » Newbie corner » How to use callbacks
How to use callbacks [message #45865] |
Fri, 15 January 2016 18:56  |
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.
|
|
|
Goto Forum:
Current Time: Mon May 05 06:25:05 CEST 2025
Total time taken to generate the page: 0.00509 seconds
|