Hi Fons,
Thank you for all your help. It is working fine now.
Thanks,
Michael
On 14 Feb 2003, Fons Rademakers wrote:
> Hi Michael,
>
> sorry I was not clear enough, the embedded object TGNumberEntryField
> derives from TGTextEntry and has the SetFocus() method. Therefore,
> create a TGNumberEntry object and then get its entry field via
> GetNumberEntry(). Notice that slot methods like FChangeFocus() must have
> a dictionary. So when run from the interpreter this is always the case
> but when from compiled code you have to first generate a dictionary for
> the class which has the FChangeFocus method.
>
> Cheers, Fons.
>
>
>
> On Fri, 2003-02-14 at 00:13, Michael T. Gericke wrote:
> > Hi Fons,
> >
> > Thank you for your quick help.
> > Unfortunately, the TGNumberEntry class does not have a member
> > SetFocus(). So I changed from TGNumberEntry to TGTextEntry and
> > converted the strings to numbers after reading them.
> > But now when I run the program, I get the following error
> > message:
> >
> > Error in <TQObject::CheckConnectArgs>: slot FChangeFocus() does not
> > exist
> >
> >
> > I believe that I included all the necessary function calls, judging from
> > you example.
> >
> > Do you know what this means?
> >
> > Thanks,
> >
> > Michael Gericke
> >
> >
> >
> > On Wed, 2003-02-12 at 16:04, Fons Rademakers wrote:
> > > Hi Michael,
> > >
> > > use the SetFocus() method of TGTextEntry of which TGNumberEntry
> > > derives. See the attached example.
> > >
> > > Cheers, Fons.
> > >
> > >
> > > On Wed, 2003-02-12 at 22:58, Michael T. Gericke wrote:
> > > > Hi,
> > > >
> > > > I was wondering if anyone knows how to force a dialog box
> > > > (TGTransientFrame) to switch focus from one of its widgets
> > > > (say a TGNumberEntry widget) to another using the "Tab"
> > > > button....
> > > >
> > > >
> > > > Thanks,
> > > >
> > > > Michael Gericke
> > > --
> > > Org: CERN, European Laboratory for Particle Physics.
> > > Mail: 1211 Geneve 23, Switzerland
> > > E-Mail: Fons.Rademakers@cern.ch Phone: +41 22 7679248
> > > WWW: http://root.cern.ch/~rdm/ Fax: +41 22 7679480
> > > ----
> > >
> >
> > >
> > > //--------------------------------------//
> > > // macro gui1.C //
> > > //--------------------------------------//
> > > #include <stdio.h>
> > > #include <stdlib.h>
> > > #include <iostream.h>
> > >
> > > #include <TROOT.h>
> > > #include <TApplication.h>
> > > #include <TVirtualX.h>
> > >
> > > #include <RQ_OBJECT.h>
> > > #include <TGFrame.h>
> > > #include <TGMenu.h>
> > > #include <TGTextEntry.h>
> > > #include <TGTextBuffer.h>
> > > #include <TGListBox.h>
> > > #include <TGFileDialog.h>
> > > #include <TSystem.h>
> > > #include <TEnv.h>
> > >
> > >
> > > const char *filetypes[] = { "All files", "*",
> > > "ROOT files", "*.root",
> > > "ROOT macros", "*.C",
> > > 0, 0 };
> > >
> > > class TNewDlog {
> > >
> > > RQ_OBJECT()
> > >
> > > private:
> > > TGMainFrame *fMain;
> > > TGCompositeFrame *fFrameLT;
> > > TGGroupFrame *fFrameInfo;
> > > TGTextEntry *fNameF;
> > > TGTextBuffer *fBufF;
> > > TGTextEntry *fNameL;
> > > TGTextBuffer *fBufL;
> > > TGGroupFrame *fFrameDir;
> > > // TGListBox *fDir;
> > > TGTextEntry *fDir;
> > > TGTextBuffer *fBufDir;
> > > TGButton *fBrowseBtn;
> > > TGCompositeFrame *fFrameLB;
> > > TGButton *fOkBtn;
> > > TGButton *fCancelBtn;
> > >
> > > public:
> > > TNewDlog(const TGWindow *vWindow,
> > > UInt_t vWidth, UInt_t vHeight, UInt_t vOptions =
> > > kVerticalFrame);
> > > virtual ~TNewDlog();
> > >
> > > // slots
> > > void FCloseWindow();
> > > void FBrowse();
> > > void FPressOK();
> > > void FCancel();
> > > void FChangeFocus();
> > > };
> > >
> > >
> > > TNewDlog::TNewDlog(const TGWindow *vWindow,
> > > UInt_t vWidth, UInt_t vHeight, UInt_t
> > > vOptions)
> > > {
> > > fMain = new TGMainFrame(vWindow, vWidth, vHeight, vOptions);
> > > fMain->Connect("CloseWindow()", "TNewDlog", this, "FCloseWindow()");
> > >
> > > // FrameLT for subframes
> > > fFrameLT = new TGCompositeFrame(fMain, 200, 20, kVerticalFrame);
> > > fMain->AddFrame(fFrameLT, new TGLayoutHints(kLHintsLeft |
> > > kLHintsTop));
> > >
> > > // Subframe Project Info
> > > fFrameInfo = new TGGroupFrame(fFrameLT, "Author Info",
> > > kVerticalFrame);
> > > // fFrameInfo->SetLayoutManager(new TGTableLayout(fFrameInfo,2,2));
> > > //error
> > > fFrameInfo->SetLayoutManager(new TGMatrixLayout(fFrameInfo,0,2,10));
> > > fFrameLT->AddFrame(fFrameInfo,
> > > new TGLayoutHints(kLHintsTop | kLHintsLeft |
> > > kLHintsExpandX,5,5,5,5));
> > >
> > > fFrameInfo->AddFrame(new TGLabel(fFrameInfo,new TGString("First
> > > Name")),
> > > new TGLayoutHints(kLHintsTop | kLHintsLeft));
> > >
> > > fNameF = new TGTextEntry(fFrameInfo, fBufF = new TGTextBuffer(100),
> > > -1);
> > > fNameF->Connect("ReturnPressed()", "TNewDlog", this, "FPressOK()");
> > > fNameF->Connect("TabPressed()", "TNewDlog", this, "FChangeFocus()");
> > > fFrameInfo->AddFrame(fNameF,
> > > new TGLayoutHints(kLHintsTop | kLHintsLeft, 2, 2, 2, 2));
> > >
> > > fNameF->Resize(250, fNameF->GetDefaultHeight());
> > >
> > > fFrameInfo->AddFrame(new TGLabel(fFrameInfo,new TGString("Last
> > > Name")),
> > > new TGLayoutHints(kLHintsTop | kLHintsLeft));
> > >
> > > fNameL = new TGTextEntry(fFrameInfo, fBufL = new TGTextBuffer(100),
> > > -1);
> > > fNameL->Connect("ReturnPressed()", "TNewDlog", this, "FPressOK()");
> > > fNameL->Connect("TabPressed()", "TNewDlog", this, "FChangeFocus()");
> > > fFrameInfo->AddFrame(fNameL,
> > > new TGLayoutHints(kLHintsTop | kLHintsLeft, 2, 2, 2, 2));
> > >
> > > fNameL->Resize(250, fNameL->GetDefaultHeight());
> > >
> > > // Subframe Directory
> > > fFrameDir = new TGGroupFrame(fFrameLT, "Directory",
> > > kHorizontalFrame);
> > > fFrameLT->AddFrame(fFrameDir,
> > > new TGLayoutHints(kLHintsTop | kLHintsLeft |
> > > kLHintsExpandX,5, 5, 5, 5));
> > >
> > > fDir = new TGTextEntry(fFrameDir, fBufDir = new TGTextBuffer(255),
> > > -1);
> > > fDir->Connect("ReturnPressed()", "TNewDlog", this, "FPressOK()");
> > > fDir->Connect("TabPressed()", "TNewDlog", this, "FChangeFocus()");
> > > // fDir = new TGListBox(fFrameDir,-1);
> > > fDir->Resize(400,20);
> > > char tmp[255];
> > > sprintf(tmp,"%s",gSystem->WorkingDirectory());
> > > fDir->SetText(tmp);
> > > // fDir->AddEntry(tmp,1);
> > > fFrameDir->AddFrame(fDir, new
> > > TGLayoutHints(kLHintsLeft|kLHintsTop,2,2,2,2));
> > >
> > > fBrowseBtn = new TGTextButton(fFrameDir, "&Browse...", 1);
> > > fBrowseBtn->Connect("Clicked()", "TNewDlog", this, "FBrowse()");
> > > fFrameDir->AddFrame(fBrowseBtn, new TGLayoutHints(kLHintsRight |
> > > kLHintsTop));
> > >
> > > // FrameLB for OK, Cancel
> > > fFrameLB = new TGHorizontalFrame(fMain, 200, 20, kFixedWidth);
> > > fMain->AddFrame(fFrameLB, new TGLayoutHints(kLHintsLeft |
> > > kLHintsBottom));
> > >
> > > fOkBtn = new TGTextButton(fFrameLB, "&OK", 1);
> > > fOkBtn->Connect("Clicked()", "TNewDlog", this, "FPressOK()");
> > > //fOkBtn->Resize(150,20); // does not work
> > > fFrameLB->AddFrame(fOkBtn,
> > > new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX,
> > > 5, 5, 5, 5));
> > >
> > > fCancelBtn = new TGTextButton(fFrameLB, "&Cancel", 1);
> > > fCancelBtn->Connect("Clicked()", "TNewDlog", this, "FCancel()");
> > > fFrameLB->AddFrame(fCancelBtn,
> > > new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX,
> > > 5, 5, 5, 5));
> > >
> > > fFrameLB->Resize(150, fOkBtn->GetDefaultHeight());
> > >
> > > fMain->MapSubwindows();
> > > fMain->Resize(fMain->GetDefaultSize());
> > > fMain->SetWMPosition(140,120);
> > > fMain->Move(140,120);
> > > // fMain->Resize(400,220);
> > >
> > > fMain->SetWindowName("New Dialog");
> > >
> > > fMain->MapWindow();
> > > }//Constructor
> > >
> > > //----------------------------------------------------------------------//
> > >
> > > TNewDlog::~TNewDlog()
> > > {
> > > delete fOkBtn; delete fCancelBtn; delete fFrameLB;
> > > delete fBrowseBtn; delete fDir; delete fFrameDir;
> > > delete fNameL; delete fNameF; delete fFrameInfo;
> > > delete fFrameLT;
> > >
> > > delete fMain;
> > > }//Destructor
> > >
> > > //----------------------------------------------------------------------//
> > >
> > > void TNewDlog::FCloseWindow()
> > > {
> > > delete this;
> > > }//FCloseWindow
> > >
> > > //----------------------------------------------------------------------//
> > >
> > > void TNewDlog::FBrowse()
> > > {
> > > printf("Browse\n");
> > >
> > > TGFileInfo fi;
> > > fi.fFileTypes = filetypes;
> > > fi.fIniDir = StrDup(fBufDir->GetString());
> > > printf("fIniDir = %s\n", fi.fIniDir);
> > > new TGFileDialog(gClient->GetRoot(), fMain, kFDOpen, &fi);
> > > printf("Open file: %s (dir: %s)\n", fi.fFilename, fi.fIniDir);
> > > fDir->SetText(fi.fIniDir);
> > > }//FBrowseProject
> > >
> > > //----------------------------------------------------------------------//
> > >
> > > void TNewDlog::FCancel()
> > > {
> > > // Clear entries
> > > fBufF->Clear();
> > > fBufL->Clear();
> > >
> > > printf("Cancel\n");
> > > }//FCancel
> > >
> > > //----------------------------------------------------------------------//
> > >
> > > void TNewDlog::FPressOK()
> > > {
> > > cout << "First Name: " << fBufF->GetString() << endl;
> > > cout << "Last Name: " << fBufL->GetString() << endl;
> > > cout << "Directory: " << fBufDir->GetString() << endl;
> > >
> > > fMain->SendCloseMessage();
> > > }//FPressOK
> > >
> > > //----------------------------------------------------------------------//
> > >
> > > void TNewDlog::FChangeFocus()
> > > {
> > > if (gTQSender == fNameF)
> > > fNameL->SetFocus();
> > >
> > > if (gTQSender == fNameL)
> > > fDir->SetFocus();
> > >
> > > if (gTQSender == fDir)
> > > fNameF->SetFocus();
> > > }
> > >
> > > //----------------------------------------------------------------------//
> > >
> > > void guiex2()
> > > {
> > > new TNewDlog(gClient->GetRoot(), 400, 220);
> > > }
> > >
> > > //-------------------------END-------------------
> > >
>
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:09 MET