On Thu, 30 Aug 2001, Chris Milne wrote: > Hi there, > > I have the following function which produces a TGTransientFrame with a > TGPictureButton in it. I would like to add a small area below the Picture button > in which I can add text. > > The TGTransientFrame is display whilst some calculations occur in the background > and I'd like to output what is going on at the bottom, ie. "Loading file xxx" > etc. Hi, The following example is a root macro, which displays an icon (the picture is from $ROOTSYS/icons) and a text label below. The label is updated all 200 ms. ------------------------------------------------------------------------- { Char_t Text[10]; TGTransientFrame *fMain; TGIcon *Icon; TGPicture *IconPicture; TGLayoutHints *IconLayout; TGLayoutHints *LabelLayout; TGLabel *Label; // Initialize main frame; fMain = new TGTransientFrame(gClient->GetRoot(), gClient->GetRoot(), 320, 240); fMain->SetWindowName("Countdown..."); fMain->Move(320, 240); // Add Icon: TString IconString("$(ROOTSYS)/icons/root_s.xpm"); gSystem->ExpandPathName(IconString); IconPicture = gClient->GetPicture(IconString); Icon = new TGIcon(fMain, IconPicture, IconPicture->GetWidth(), IconPicture->GetHeight()); IconLayout = new TGLayoutHints(kLHintsCenterX, 0, 0, 50, 10); fMain->AddFrame(Icon, IconLayout); // Add Label: Label = new TGLabel(fMain, "Starting countdown..."); LabelLayout = new TGLayoutHints(kLHintsCenterX, 0, 0, 10, 50); fMain->AddFrame(Label, LabelLayout); // Bring everything to the screen fMain->MapSubwindows(); fMain->MapWindow(); fMain->Layout(); // Update the Label periodically gSystem->ProcessEvents(); for (Int_t i = 60; i > 0; i--) { sprintf(Text, "%i", i); Label->SetText(Text); gSystem->ProcessEvents(); gSystem->Sleep(200); } Label->SetText("Liftoff!"); } ------------------------------------------------------------------------- Hope this helps, Andreas
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:59 MET