Hello Rene,
Rene Brun <Rene.Brun_at_cern.ch> writes:
> see tutorial Slider3Demo.C (introduced a few weeks ago in CVS)
>
> Rene Brun
Thanks for your reply. I had a look through that tutorial and I think I understand much of its workings.
perhaps I should be more specific about the problem I'm having. I have the following code fragment in a class MyMainFrame:
  // Vertical frame
  fMainV = new TGVerticalFrame(fMainH,w/3,h);
  fMainH->AddFrame(fMainV, new TGLayoutHints(kLHintsExpandY | kLHintsExpandX,10,10,10,1));
  fComboFuncNames = new TGComboBox(fMainV,100);
  for (Int_t i = 0; i < 4; i++) {
    fComboFuncNames->AddEntry(funcnames[i], i+1);
  }
  fComboFuncNames->Resize(w/10,h/20);
  fComboFuncNames->Select(1);
  fComboFuncNames->Connect("Selected(Int_t)","MyMainFrame",this,"DoComboSelect(Int_t)");
  fLcombo = new TGLayoutHints(kLHintsTop | kLHintsLeft,5,5,5,5);
  fMainV->AddFrame(fComboFuncNames,fLcombo);
  // Sliders should be added here but defer until the selection is made in
  // fComboFuncNames so we know how many to create.
When an item is selected in fComboFuncNames the following function is called. It is intended that this function should create a number of sliders, the number created being dependent on the selected function.
void MyMainFrame::DoComboSelect(Int_t sel) { // Update the sliders depending on which function gets selected in // the function selection combo.
  Int_t nparm;
  switch (sel) {
  case 1 : nparm = 3;		// Gaussian
    break;
  case 2 : nparm = 3;		// Lorentzian
    break;
  case 3 : nparm = 5;		// Voigtian
    break;
  case 4 : nparm = 10;	        // Background (max order)
    break;
  default: nparm = 9;
  }
  //  cout << "nparm = " << nparm << endl;
  for (Int_t i = 0; i < nparm; i++ ) {
    VSid[i] = i;
    TEid[i] = i;
    fVSparms[i] = new TGVSlider(fMainV, 100, kSlider2, VSid[i]);
    fTEparms[i] = new TGTextEntry(fMainV, fTBparms[i] = new TGTextBuffer(10), TEid[i]);
    fTBparms[i]->AddText(0, "0");
  //--- layout for sliders
  fLslider = new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 0, 3, 0);
  for (Int_t i = 0; i < nparm; i++ ) {
    fMainV->AddFrame(fVSparms[i], fLslider);
    fMainV->AddFrame(fTEparms[i], fLslider);
    fTEparms[i]->Connect("TextChanged(char*)", "MyMainFrame", this, "DoText(char*)");
  }
}
The combo box is drawn correctly but when I make a selection the following error is returned:
root [0] .x MyExample.C
.x MyExample.C
root [1] Error: Can't call TGVerticalFrame::AddFrame(fVSparms[i],fLslider) in current scopePossible candidates are...
filename line:size busy function type and name (in TGVerticalFrame) filename line:size busy function type and name (in TGCompositeFrame) /usr/local/lib/root/libGui.so -1:-1 0 public: virtual void AddFrame(TGFrame* f,TGLayoutHints* l=0); filename line:size busy function type and name (in TGFrame) filename line:size busy function type and name (in TGWindow) filename line:size busy function type and name (in TGObject) filename line:size busy function type and name (in TObject) filename line:size busy function type and name (in TQObject)Error: Can't call TGVerticalFrame::AddFrame(fVSparms[i],fLslider) in current scope /home/rmason/Programming/rootmac/MyExample.C:265: Possible candidates are...
filename line:size busy function type and name (in TGVerticalFrame) filename line:size busy function type and name (in TGCompositeFrame) /usr/local/lib/root/libGui.so -1:-1 0 public: virtual void AddFrame(TGFrame* f,TGLayoutHints* l=0); filename line:size busy function type and name (in TGFrame) filename line:size busy function type and name (in TGWindow) filename line:size busy function type and name (in TGObject) filename line:size busy function type and name (in TObject) filename line:size busy function type and name (in TQObject)Error: Symbol fMainV is not defined in current scope /home/rmason/Programming/rootmac/MyExample.C:265: Error: Failed to evaluate fMainV->AddFrame(fVSparms[i],fLslider)Possible candidates are... filename line:size busy function type and name
I'm sure my poor understanding of C++ is responsible for the problem. Any help you can offer will be most appreciated.
Thanks,
Roger Received on Wed Feb 22 2006 - 14:46:37 MET
This archive was generated by hypermail 2.2.0 : Mon Jan 01 2007 - 16:31:57 MET