Page 1 of 1

Rebar y Page en una dialog no parecen llevarse bien

Posted: Sun Aug 05, 2007 9:48 pm
by jose_murugosa
Intento manejar una dialog con una rebar, la dialog es de recursos y en ella hay una page, al intentar hacer funcionar el programa me da un error de creación de dialogo, sin embargo si retiro la page del recurso, anda perfectamente.

La falla se produce aún si la page no se declara en el código.

Esta dialog con botones y page anda bien, en cambio con rebar no funcionó.

Como si Rebar + Page no se lleven bien :oops: .

Alguien del foro podrá ayudarme con este asunto?, apreciaré cualquier guía, el tema es que verdaderamente necesito la page y la rebar allí.

encontrarán el código, el recurso y los exes con y sin dialog en un ejemplo bien pequeño en:

http://www.box.net/shared/hmh9urusi6

Gracias desde ya por su ayuda :wink: .

Posted: Sun Aug 05, 2007 11:29 pm
by Antonio Linares
José,

te falta el REDEFINE PAGES ... y añadirlo en el RC. Aqui funciona bien así:

Code: Select all

#include "FiveWin.ch"

static oReBar, oToolBar

function Main()

   local oDlg, oImageList, oPages

   DEFINE DIALOG oDlg RESOURCE "Dlg_Page" TITLE "FWH - Testing Win32 Toolbars"
      
   // First we build an ImageList with all the bitmaps 
   DEFINE IMAGELIST oImageList SIZE 32, 32

   DEFINE IMGBITMAP OF oImageList NAME "new"      COLOR nRGB( 255, 0, 255 )
   DEFINE IMGBITMAP OF oImageList NAME "open"     COLOR nRGB( 255, 0, 255 )
   DEFINE IMGBITMAP OF oImageList NAME "check"    COLOR nRGB( 255, 0, 255 )
   DEFINE IMGBITMAP OF oImageList NAME "search"   COLOR nRGB( 255, 0, 255 )
   DEFINE IMGBITMAP OF oImageList NAME "print"    COLOR nRGB( 255, 0, 255 )
   DEFINE IMGBITMAP OF oImageList NAME "internet" COLOR nRGB( 255, 0, 255 )
   DEFINE IMGBITMAP OF oImageList NAME "keys"     COLOR nRGB( 255, 0, 255 )
   DEFINE IMGBITMAP OF oImageList NAME "quit"     COLOR nRGB( 255, 0, 255 )

   REDEFINE PAGES oPages ID 102 OF oDlg DIALOGS "dlg1"

   ACTIVATE DIALOG oDlg CENTERED ON INIT Barra(oDlg, oImageList)
   
   oImageList:End()

return nil

FUNCTION Barra(oDlg, oImageList)
// Now we create the rebar
DEFINE REBAR oReBar OF oDlg
   
DEFINE TOOLBAR oToolBar OF oReBar SIZE 45, 34 ; // 50, 50 ; ancho/alto
      IMAGELIST oImageList BALLOON // tooltips balloon style
   
   //oToolBar:SetTextRows( 2 )
   
   DEFINE TBBUTTON OF oToolBar ;
      ACTION  MsgInfo( "Menu" );
      TOOLTIP "New" ;
         
   DEFINE TBBUTTON OF oToolBar ;
      ACTION  MsgInfo( "Menu" );
      TOOLTIP "Open" ;
            
   DEFINE TBSEPARATOR OF oToolBar
   
   DEFINE TBBUTTON OF oToolBar ;
      ACTION  MsgInfo( "Menu" ) ;
      TOOLTIP "Menu" ;
               
   DEFINE TBBUTTON OF oToolBar ;
      ACTION  MsgInfo( "Menu" );
      TOOLTIP "Search" ;
      
   DEFINE TBBUTTON OF oToolBar ;
      ACTION  MsgInfo( "Menu" );
      TOOLTIP "Print a report" ;
      
   DEFINE TBSEPARATOR OF oToolBar
      
   DEFINE TBBUTTON OF oToolBar ;
      ACTION  MsgInfo( "Menu" );
      TOOLTIP "Search for new versions" ;
            
   DEFINE TBBUTTON OF oToolBar ;
      ACTION MsgInfo( "Users" ) ;
      TOOLTIP "Users management" ;
      
   DEFINE TBSEPARATOR OF oToolBar

   DEFINE TBBUTTON OF oToolBar ;
      ACTION  oDlg:End() ;
      TOOLTIP "End Application" ;
            
      
   oToolBar:nWidth = 200
   oReBar:InsertBand( oToolBar )
  
RETURN NIL

Code: Select all

#ifdef __FLAT__
   1 24 "./WinXP/WindowsXP.Manifest"
#endif

#define DIALOG_1	1
new      BITMAP "./bitmaps/32x32/new.bmp"
open     BITMAP "./bitmaps/32x32/open.bmp"
check    BITMAP "./bitmaps/32x32/check.bmp"
search   BITMAP "./bitmaps/32x32/search.bmp"
print    BITMAP "./bitmaps/32x32/print.bmp"
internet BITMAP "./bitmaps/32x32/internet.bmp"
keys     BITMAP "./bitmaps/32x32/keys.bmp"
quit     BITMAP "./bitmaps/32x32/quit.bmp"


DLG_PAGE DIALOG 23, 25, 457, 304
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
FONT 8, "MS Sans Serif"
{
 EDITTEXT 101, 96, 41, 77, 11, ES_LEFT | ES_UPPERCASE | ES_READONLY | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_TABSTOP
 CONTROL "TPages", 102, "TPages", WS_CHILD | WS_VISIBLE | WS_TABSTOP, 6, 60, 445, 242
 RTEXT "#", 200, 7, 41, 84, 10
 LTEXT "", 201, 392, 38, 57, 9
}

dlg1 DIALOG 18, 18, 142, 67
STYLE WS_CHILD | 4
{
 PUSHBUTTON "&First", 104, 93, 26, 32, 12
}

Posted: Sun Aug 05, 2007 11:32 pm
by Antonio Linares
Image

Posted: Mon Aug 06, 2007 3:43 pm
by Vikthor
Antonio :

Se podrá hacer uso de los aceleradores de una toolbar, estoy trabajando en ello, ...... sin éxito :)

Saludos

Posted: Mon Aug 06, 2007 5:10 pm
by Antonio Linares
Vikthor,

No lo hemos probado. Supongo que te refieres a asignar aceleradores a los botones de la toolbar, si ?

Posted: Mon Aug 06, 2007 10:51 pm
by Vikthor
Antonio Linares wrote:Vikthor,

No lo hemos probado. Supongo que te refieres a asignar aceleradores a los botones de la toolbar, si ?

sí, a eso me refiero :)

Posted: Tue Aug 07, 2007 5:58 pm
by jose_murugosa
Antonio,

Gracias, para este ejemplo se me pasó, pero de todos modos encontré el problema.

En mi programa uso dos dlls una contiene los recursos de la rutina de altas bajas y modificaciones y el otro la del sistema.

Si la dialog hija que va en la page no está en la dll donde está la dialog madre (la que tiene la page) , me da error al crear la dialog madre, sin embargo, si dialogs madre e hija están en la misma dll, no se produce el error, porqué puede ser esto siendo que cargo ambas dlls?

Gracias por la ayuda, de momento lo he solucionado manteniendo los rc separados pero incluyendo el rc de la rutina de bajas altas y modificaciones en el de la aplicación (es decir manejando todo en una sola dll, pero 2 rc para crearlas).

Posted: Tue Aug 07, 2007 6:03 pm
by jose_murugosa
Antonio Linares wrote:Vikthor,

No lo hemos probado. Supongo que te refieres a asignar aceleradores a los botones de la toolbar, si ?
Ya que estamos para preguntar, que es esto de los aceleradores?

Posted: Tue Aug 07, 2007 8:07 pm
by Antonio Linares
Jose,

Cuando se van a cargar los recursos, se utiliza el handle del módulo en donde estan. Por eso no puedes cargar desde dos sitios a la vez.

Vikthor está intentando asignarle aceleradores a los botones de la toolbar, y estamos viendo si se puede hacer

Posted: Tue Aug 07, 2007 8:10 pm
by jose_murugosa
Eso explica porqué tenía el problema....

Muchas gracias por la explicación y por la pronta respuesta.