IonicWind Software

IWBasic => GUI Central => Topic started by: tbohon on December 13, 2006, 11:11:09 AM

Title: Child Windows
Post by: tbohon on December 13, 2006, 11:11:09 AM
New to EB, I'm trying to figure out how to have a different child window appear depending on which button is clicked in the main window.  In the example code below I used a group box to indicate where the two child windows would appear.  Note that each child window would have it's own set of function-specific buttons, etc.

Any help/ideas/suggestions appreciated.

Here's the sample code:

CONST BUTTON_1 = 1
CONST BUTTON_2 = 2
CONST GROUP_3 = 3
DIALOG d1
CREATEDIALOG d1,0,0,974,403,0x80C80080,0,"Main Window",&d1_handler
CONTROL d1,@BUTTON,"Window 1",30,105,70,20,0x50000000,BUTTON_1
CONTROL d1,@BUTTON,"Window 2",31,141,70,20,0x50000000,BUTTON_2
CONTROL d1,@GROUPBOX,"Group",140,21,800,364,0x50000007,GROUP_3

SUB d1_handler
        SELECT @MESSAGE
      CASE @IDINITDIALOG
         CENTERWINDOW d1
         /* Initialize any controls here */
      CASE @IDCLOSEWINDOW
         CLOSEDIALOG d1,@IDOK
      CASE @IDCONTROL
         SELECT @CONTROLID
            CASE BUTTON_1
               IF @NOTIFYCODE = 0
                  /*button clicked*/
               ENDIF
            CASE BUTTON_2
               IF @NOTIFYCODE = 0
                  /*button clicked*/
               ENDIF
         ENDSELECT
   ENDSELECT
RETURN
ENDSUB
Title: Re: Child Windows
Post by: LarryMc on December 13, 2006, 11:25:28 AM
you have to define and create the 2 other dialogs (d2 and d3) and then use domodal d2 or domodal d3 when the buttons are pressed in d1
Title: Re: Child Windows
Post by: tbohon on December 13, 2006, 11:38:48 AM
After posting this I dug back into EB docs (the conference call I was on was boring beyond belief, decided to be productiveÂÃ,  ;) ) and was reading about domodal.

Think I have it now - will find time later today or tonight to play a bit more just to confirm.

Thanks Larry!

Tom
Title: Re: Child Windows
Post by: tbohon on December 13, 2006, 01:55:01 PM
OK, that piece is working just great - thanks again.

Since I have found that I learn best by trying and then asking for help, I've been "playing" (another long conference callÂÃ,  ;D) and have two other things I don't understand.

First, although I've managed to change the background color of my main window - on which the dialog is placed - I can't seem to change the background color of the dialog itself.ÂÃ,  Is this even possible?

Second (and this is probably a glaringly naive question), how in the heck do I get the dialog to appear in response to a button click?ÂÃ,  Say I have button1 and the dialog is d1 ... what's the secret?ÂÃ,  I've tried doing a SHOWDIALOG using the left button click message as the triggerÂÃ,  but it just sits there, staring at me, making me nervous ...ÂÃ,  ???  If I didn't already know it was out to 'get' me, I'd be a bit paranoid ... !

Thanks in advance - and thanks to Paul for a terrific language, I'm really having fun blundering my way through the gui build process!

Tom
Title: Re: Child Windows
Post by: LarryMc on December 13, 2006, 02:00:28 PM
If your main dialog is d1 and you want to open d2 the code would be
QuoteDOMODAL d2, d1
Title: Re: Child Windows
Post by: LarryMc on December 13, 2006, 02:04:57 PM
Tom,
Post your current code so we can see where you are at.

Larry
Title: Re: Child Windows
Post by: Ionic Wind Support Team on December 13, 2006, 02:06:20 PM
If you are using ShowDialog then you must have a message loop in your program somewhere.  Showdialog is normally used for dialogs that are used as the main application window itself, or for a dialog that has to stick around a while like a "find and replace" dialog.
Title: Re: Child Windows
Post by: tbohon on December 13, 2006, 02:25:20 PM
Here's the code (no snickering, OK???ÂÃ,  ;D) :

def w:window
def d1:dialog
def d2:dialog
def d3:dialog

' Open window

openwindow w,0,0,800,600,@size,null,"Main Window",&wproc
control w,@button,"Button1",50,530,80,25,@tabstop,1
control w,@button,"Button2",150,530,80,25,@tabstop,2
control w,@button,"Button3",250,530,80,25,@tabstop,3
control w,@button,"Exit",660,530,80,25,@tabstop,4
createdialog d1,10,10,762,500,null,w,"Invoices",&d1handler

centerwindow w
SETWINDOWCOLOR w, RGB(175,200,226)

showdialog d1

run=1

waituntil run = 0

closewindow w

end

' Window w handler

sub wproc

select @message
   case @idclosewindow
      run = 0
endselect

return

endsub

' dialog 1 (Invoices) handler

sub d1handler

select @message
   case @idcontrol
      select @controlid
         case 1
            answer = getcontroltext(d1,10)
            closedialog d1,@idok
      endselect

endselect

return

endsub
Title: Re: Child Windows
Post by: LarryMc on December 13, 2006, 03:04:06 PM
try this version of your code and see if it gets you over the hump.
Title: Re: Child Windows
Post by: tbohon on December 13, 2006, 03:20:31 PM
Bet I'm gonna be embarassed, huh?  :-\

Thanks - I'll see how the pros do it and go from there.

Great response from all - thanks!!!

Tom
Title: Re: Child Windows
Post by: tbohon on December 13, 2006, 03:34:16 PM
OK - got it, ran it, looked at the code - I'm impressed!

I also see what was confusing me (I think, anyway).  For some strange reason (senility perhaps?) I thought that each type of object needed a different handler and each type also had it's own sequence of numbers.  For example, I could have window tag 1 and then dialog tag 1 ... with a different handler for each ... well, you see where I was wandering around in a daze, right?

Anyway, this is great - and I even understand the code you provided.

Thanks again to everyone for the assist.

Until next time ...   ;D

Tom