CLASS TMdiFolder ( a la atención de Leandro )

CLASS TMdiFolder ( a la atención de Leandro )

Postby JESUS MARIN » Mon Jun 05, 2023 5:09 pm

Buenas tardes Leandro ( y buenas tardes a todos )


Image

He convertido las funciones en una clase llamada TMdiChildFolder, que se apoya en otra TBtnBmpFolder.

Incluyo ahora los dos .prg de lo que se muestra en el video.
1) Se crea la base del programa. Ventana principal
2) Las tres opciones de menu. Ventana MDI, Ventana MDI con Icono, Ventana Mdi con icono, barra de herramientas..

La única diferencia sobre la programación en MDICHILD tradicional es que en vez de poner :

DEFINE WINDOW MDICHILD oMDI OF ....

tienes que poner

DEFINE WINDOW MDICHILDFOLDER oMDI OF ....

Tengo algunas ideas para añadir, como poner un boton [x] para cerrar una ventana al pasar el ratón por cada pestaña y que desaparezca al salir el ratón de la pestaña. [ LO EDITO ] Ya funciona, al pasar el ratón por la solapa de la ventana activa aparece el boton cerrar.
Probar abrir 100 ventanas, para ver la carga de memoria, etc.... [ LO EDITO : He abierto multiples ventanas. Al parecer a las 90 ventanas, se cae. Lo miraré ]
También poner todas las imagenes en una DLL (a ver si algún buen samaritano me puede guiar de la mano para hacerlo).

En fin, falta probarlo, logicamente y depurar código.
Me gustaría publicarlo, si os parece bién, una vez lo prueben dos o tres de vosotros.

LOS PRG`s DEL VIDEO :

TestMdiFolder.prg

Code: Select all  Expand view
#include "Fivewin.ch"


STATIC oWnd


function Main()

   errorsys()
   SetHandleCount(80)
   SET DATE TO ITALIAN
   SET CENTURY ON
   SET EPOCH TO 2000
   SET DECIMALS TO 2
   SET DATE FORMAT "dd/mm/yyyy"

   DEFINE WINDOW oWnd PIXEL MDI STYLE nOR( WS_POPUP, WS_BORDER )

   ACTIVATE WINDOW oWnd ON INIT ( My_maximized(oWnd) , Menu(oWnd) ) ;
      VALID MsgNoYes("Desea cerrar el programa","Atención")


RETURN(NIL)


// ESTA FUNCION MAXIMIZA LA VENTANA PERO TENIENDO EN CUENTA DONDE ESTA LA BARRA DE WINDOWS
FUNCTION My_maximized(oWnd)

Local aCoors := GetCoors( FindWindow("Shell_TrayWnd","") )

   oWnd:Move(0,0,aCoors[4],aCoors[1],.t.)

RETURN(NIL)
 



Menu.prg
Code: Select all  Expand view
#include "Fivewin.ch"
#include "MdiChildFolder.ch"


//-----------------------------------------------------------------------------
FUNCTION MENU(oWndPrincipal)

LOCAL oWnd
local oBt1, oBt2, oBt3

DEFINE WINDOW MDICHILDFOLDER oWnd OF oWndPrincipal TITLE "Menu"

 @100,80 BTNBMP oBt1 PROMPT "Abrir MDI Folder" of oWnd SIZE 200,100 ACTION NUEVAMDI(oWndPrincipal)
   oBt1:SetColor( CLR_WHITE, CLR_BLUE)
 @200,80 btnbmp oBt2 PROMPT "Abrir MDI Folder con Icono" OF oWnd SIZE 200,100 ACTION NUEVAMDI_ICONO(oWndPrincipal)
   oBt2:SetColor( CLR_WHITE, CLR_RED)
 @300,80 btnbmp oBt3 PROMPT "Abrir MDI Folder con ButtonBar" OF oWnd SIZE 200,100 ACTION NUEVAMDI_BAR(oWndPrincipal)
   oBt3:SetColor( CLR_WHITE, CLR_GREEN)

ACTIVATE WINDOW oWnd

return nil



FUNCTION NUEVAMDI(oWndPrincipal)

LOCAL oMDI, oFont, oSay
LOCAL oIco
LOCAL aBtn[5]


DEFINE FONT oFont NAME "Segoe UI Light" SIZE 0,-80 BOLD
DEFINE WINDOW MDICHILDFOLDER oMDI OF oWndPrincipal TITLE "MDI"

// PODEMOS COLOCAR NUESTROS CONTROLES A PARTIR DE LA FILA 40

      @43,005 BTNBMP aBtn[1] OF oMDI FILE "W11_CLOSE.bmp" SIZE 30,30 ACTION oMdi:End() NOBORDER
         aBtn[1]:cToolTip="Cerrar ventana"
      @42,040 IMAGE FILE "SEPARADOR.JPG" SIZE 1,33  OF oMdi PIXEL NOBORDER

      @43,045 BTNBMP aBtn[2] FILE "W11_GO_FIRST.BMP" SIZE 30,30 OF oMDI UPDATE NOBORDER //ACTION GoToMenu(oBar22)
         aBtn[2]:bAction := { || oMdi:GoToMenu() }
         aBtn[2]:cToolTip="Solapa Menú"
         aBtn[2]:nClrPane := RGB(240,240,240)

      @43,075 BTNBMP aBtn[3] FILE "W11_SELECT.BMP" SIZE 30,30 OF oMDI UPDATE NOBORDER //ACTION MenuFolders(oWNDC)
         aBtn[3]:bAction := { || oMdi:MenuFolders() }
         aBtn[3]:cToolTip="Seleccionar ventana"
         aBtn[3]:nClrPane := RGB(240,240,240)

      @43,105 BTNBMP aBtn[4] FILE "W11_MDI_LEFT.BMP" SIZE 30,30 OF oMDI UPDATE NOBORDER //ACTION MenuFolders(oWNDC)
         aBtn[4]:bACTION := { || oMdi:Mover_Ventanas_no_visibles(-1)  }
         aBtn[4]:cToolTip="Mover solapas a la izquierda"
         aBtn[4]:nClrPane := RGB(240,240,240)

      @43,135 BTNBMP aBtn[5] FILE "W11_MDI_RIGHT.BMP" SIZE 30,30 OF oMDI UPDATE NOBORDER //ACTION MenuFolders(oWNDC)
         aBtn[5]:bACTION := { || oMdi:Mover_Ventanas_no_visibles(1)  }
         aBtn[5]:cToolTip="Mover solapas a la derecha"
         aBtn[5]:nClrPane := RGB(240,240,240)

      @42,165 IMAGE FILE "SEPARADOR.JPG" SIZE 1,33 OF oMDI PIXEL NOBORDER



      @180,1 SAY oSay prompt "I'M "+oMdi:cCaption SIZE 1350,400 COLOR CLR_BLUE pixel FONT oFont CENTER


ACTIVATE WINDOW oMDI ON PAINT (oSay:nWidth:=oMdi:nWidth, oSay:Refresh() )

return nil

//-----------------------------------------------------------------------------
FUNCTION NUEVAMDI_ICONO(oWndPrincipal)

LOCAL oMDI, oFont, oSay
LOCAL oIco
LOCAL aBtn[5]



DEFINE FONT oFont NAME "Segoe UI Light" SIZE 0,-80 BOLD
DEFINE WINDOW MDICHILDFOLDER oMDI OF oWndPrincipal TITLE "Clientes" ICON "W11_CLIENTES.BMP"


// PODEMOS COLOCAR NUESTROS CONTROLES A PARTIR DE LA FILA 40

      @43,005 BTNBMP aBtn[1] OF oMDI FILE "W11_CLOSE.bmp" SIZE 30,30 ACTION oMdi:End() NOBORDER
         aBtn[1]:cToolTip="Cerrar ventana"
      @42,040 IMAGE FILE "SEPARADOR.JPG" SIZE 1,33  OF oMdi PIXEL NOBORDER

      @43,045 BTNBMP aBtn[2] FILE "W11_GO_FIRST.BMP" SIZE 30,30 OF oMDI UPDATE NOBORDER //ACTION GoToMenu(oBar22)
         aBtn[2]:bAction := { || oMdi:GoToMenu() }
         aBtn[2]:cToolTip="Solapa Menú"
         aBtn[2]:nClrPane := RGB(240,240,240)

      @43,075 BTNBMP aBtn[3] FILE "W11_SELECT.BMP" SIZE 30,30 OF oMDI UPDATE NOBORDER //ACTION MenuFolders(oWNDC)
         aBtn[3]:bAction := { || oMdi:MenuFolders() }
         aBtn[3]:cToolTip="Seleccionar ventana"
         aBtn[3]:nClrPane := RGB(240,240,240)

      @43,105 BTNBMP aBtn[4] FILE "W11_MDI_LEFT.BMP" SIZE 30,30 OF oMDI UPDATE NOBORDER //ACTION MenuFolders(oWNDC)
         aBtn[4]:bACTION := { || oMdi:Mover_Ventanas_no_visibles(-1)  }
         aBtn[4]:cToolTip="Mover solapas a la izquierda"
         aBtn[4]:nClrPane := RGB(240,240,240)

      @43,135 BTNBMP aBtn[5] FILE "W11_MDI_RIGHT.BMP" SIZE 30,30 OF oMDI UPDATE NOBORDER //ACTION MenuFolders(oWNDC)
         aBtn[5]:bACTION := { || oMdi:Mover_Ventanas_no_visibles(1)  }
         aBtn[5]:cToolTip="Mover solapas a la derecha"
         aBtn[5]:nClrPane := RGB(240,240,240)

      @42,165 IMAGE FILE "SEPARADOR.JPG" SIZE 1,33 OF oMDI PIXEL NOBORDER



      @180,1 SAY oSay prompt "I'M "+oMdi:cCaption+CRLF+" with Icon" SIZE 1350,400 COLOR CLR_BLUE pixel FONT oFont CENTER


ACTIVATE WINDOW oMDI ON PAINT (oSay:nWidth:=oMdi:nWidth, oSay:Refresh() )


return nil


//-----------------------------------------------------------------------------
FUNCTION NUEVAMDI_BAR(oWndPrincipal)

LOCAL oMDI, oFont, oSay
LOCAL oIco
LOCAL aBtn[5]
LOCAL oBar

DEFINE FONT oFont NAME "Segoe UI Light" SIZE 0,-80 BOLD
DEFINE WINDOW MDICHILDFOLDER oMDI OF oWndPrincipal TITLE "Clientes" ICON "W11_CLIENTES.BMP"
@40,1 BUTTONBAR oBar SIZE 1400,40 OF oMdi
   oBar:SetColor( CLR_BLACK, RGB(240,240,240) )


// PODEMOS COLOCAR NUESTROS CONTROLES EN EL BUTTONBAR

      @3,005 BTNBMP aBtn[1] OF oBar FILE "W11_CLOSE.bmp" SIZE 30,30 ACTION oMdi:End() NOBORDER
         aBtn[1]:cToolTip="Cerrar ventana"
      @2,040 IMAGE FILE "SEPARADOR.JPG" SIZE 1,33  OF oBar PIXEL NOBORDER

      @3,045 BTNBMP aBtn[2] FILE "W11_GO_FIRST.BMP" SIZE 30,30 OF oBar UPDATE NOBORDER //ACTION GoToMenu(oBar22)
         aBtn[2]:bAction := { || oMdi:GoToMenu() }
         aBtn[2]:cToolTip="Solapa Menú"
         aBtn[2]:nClrPane := RGB(240,240,240)

      @3,075 BTNBMP aBtn[3] FILE "W11_SELECT.BMP" SIZE 30,30 OF oBar UPDATE NOBORDER //ACTION MenuFolders(oWNDC)
         aBtn[3]:bAction := { || oMdi:MenuFolders() }
         aBtn[3]:cToolTip="Seleccionar ventana"
         aBtn[3]:nClrPane := RGB(240,240,240)

      @3,105 BTNBMP aBtn[4] FILE "W11_MDI_LEFT.BMP" SIZE 30,30 OF oBar UPDATE NOBORDER //ACTION MenuFolders(oWNDC)
         aBtn[4]:bACTION := { || oMdi:Mover_Ventanas_no_visibles(-1)  }
         aBtn[4]:cToolTip="Mover solapas a la izquierda"
         aBtn[4]:nClrPane := RGB(240,240,240)


      @3,135 BTNBMP aBtn[5] FILE "W11_MDI_RIGHT.BMP" SIZE 30,30 OF oBar UPDATE NOBORDER //ACTION MenuFolders(oWNDC)
         aBtn[5]:bACTION := { || oMdi:Mover_Ventanas_no_visibles(1)  }
         aBtn[5]:cToolTip="Mover solapas a la derecha"
         aBtn[5]:nClrPane := RGB(240,240,240)

      @2,165 IMAGE FILE "SEPARADOR.JPG" SIZE 1,33 OF oBar PIXEL NOBORDER



      @180,1 SAY oSay prompt "I'M "+oMdi:cCaption+CRLF+"with Icon ..."+CRLF+"and.. Fivewin ButtonBar" SIZE 1350,400 COLOR CLR_BLUE pixel FONT oFont CENTER


      @100,10 BTNBMP PROMPT "Abrir dialogo" OF oMdi SIZE 100,25 ACTION DIALOGO(oMdi)


ACTIVATE WINDOW oMDI ON PAINT (oSay:nWidth:=oMdi:nWidth, oSay:Refresh() )


return nil


STATIC FUNCTION DIALOGO(oMdi)

Local oDlg

DEFINE DIALOG oDlg TITLE "Test ...." FROM 100,100 TO 400,400 OF oMdi PIXEL

   @ 50,60 SAY "I`m a Dialog" OF oDlg PIXEL
   @120,10 BUTTON "Close" of oDlg SIZE 80,20 ACTION oDlg:End()  PIXEL

ACTIVATE DIALOG oDlg CENTER

RETURN(NIL)

 


Y como final el include MdiChildFolder.ch utilizado

Code: Select all  Expand view
# include "fivewin.ch"


#xcommand DEFINE WINDOW MDICHILDFOLDER [<oWnd>] ;
             [ MDICHILD ] ;
             [ FROM <nTop>, <nLeft> TO <nBottom>, <nRight> ] ;
             [ TITLE <cTitle> ] ;
             [ BRUSH <oBrush> ] ;
             [ CURSOR <oCursor> ] ;
             [ MENU <oMenu> ] ;
             [ MENUINFO <nMenuInfo> ] ;
             [ ICON <oIco> ] ;
             [ OF <oParent> ] ;
             [ <vscroll: VSCROLL, VERTICAL SCROLL> ] ;
             [ <hscroll: HSCROLL, HORIZONTAL SCROLL> ] ;
             [ <color: COLOR, COLORS> <nClrFore> [,<nClrBack>] ] ;
             [ <pixel: PIXEL> ] ;
             [ STYLE <nStyle> ] ;
             [ <HelpId: HELPID, HELP ID> <nHelpId> ] ;
             [ BORDER <border: NONE, SINGLE> ] ;
             [ <NoSysMenu:  NOSYSMENU, NO SYSMENU> ] ;
             [ <NoCaption:  NOCAPTION, NO CAPTION, NO TITLE> ] ;
             [ <NoIconize:  NOICONIZE, NOMINIMIZE> ] ;
             [ <NoMaximize: NOZOOM, NO ZOOM, NOMAXIMIZE, NO MAXIMIZE> ] ;
       => ;
          [<oWnd> := ] TMdiChildFolder():New( <nTop>, <nLeft>, <nBottom>, <nRight>,;
             <cTitle>, <nStyle>, <oMenu>, <oParent>, <oIco>, <.vscroll.>, <nClrFore>,;
             <nClrBack>, <oCursor>, <oBrush>, <.pixel.>, <.hscroll.>,;
             <nHelpId>, [Upper(<(border)>)], !<.NoSysMenu.>, !<.NoCaption.>,;
             !<.NoIconize.>, !<.NoMaximize.>, [<nMenuInfo>] )


#xcommand @ <nRow>, <nCol> BTNBMPFOLDER [<oBtn>] ;
             [ <resource: NAME, RESNAME, RESOURCE> <cResName1> ;
                [,<cResName2>[,<cResName3>] ] ] ;
             [ <file: FILE, FILENAME, DISK> <cBmpFile1> ;
                [,<cBmpFile2>[,<cBmpFile3>] ] ] ;
             [ SIZE <nWidth>, <nHeight> ] ;
             [ ACTION <uAction,...> ] ;
             [ <of:OF, WINDOW, DIALOG> <oWnd> ] ;
             [ MESSAGE <cMsg> ] ;
             [ WHEN <uWhen> ] ;
             [ <adjust: ADJUST> ] ;
             [ <lUpdate: UPDATE> ] ;
             [ PROMPT <cPrompt> ] ;
             [ FONT <oFont> ] ;
             [ <lNoBorder: NOBORDER> ] ;
             [ <layout: CENTER, TOP, LEFT, BOTTOM, RIGHT> ] ;
      => ;
         [ <oBtn> := ] TBtnBmpFolder():New( <nRow>, <nCol>, <nWidth>, <nHeight>,;
            <cResName1>, <cResName2>, <cBmpFile1>, <cBmpFile2>,;
            [{|Self|<uAction>}], <oWnd>, <cMsg>, <{uWhen}>, <.adjust.>,;
            <.lUpdate.>, <cPrompt>, <oFont>, [<cResName3>], [<cBmpFile3>],;
            !<.lNoBorder.>, [ Upper(<(layout)>) ] )

 


P.d.: Se aceptan sugerencias, ideas .....
Last edited by JESUS MARIN on Wed Jun 07, 2023 7:23 am, edited 1 time in total.
Jesús Marín
JESUS MARIN
 
Posts: 174
Joined: Wed Jan 02, 2019 8:36 am

Re: CLASS TMdiFolder ( a la atención de Leandro )

Postby Antonio Linares » Mon Jun 05, 2023 6:11 pm

Muy buen trabajo!

Muchas gracias por compartirlo :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: CLASS TMdiFolder ( a la atención de Leandro )

Postby leandro » Wed Jun 07, 2023 11:34 am

Jesus wow, que buen aporte, excelente desarrollo.

En un rato intento compilar el ejemplo que publicaste.

Y luego en estos días te molesto para que me ayudes con la implementación en la aplicación principal.

Muchas gracias por tu tiempo.

De antemano gracias.
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1481
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: CLASS TMdiFolder ( a la atención de Leandro )

Postby JESUS MARIN » Fri Jun 09, 2023 4:34 am

Buenos dias Leandro.

Ya lo tienes en tu correo.

Ahora la clase tiene dos nuevas variables :

::nTopFolderPosition que te permite poner los folder a la altura que desees. Así puedes poner la ButtonBar o la RibbonBar en la parte superior

::nTopGlobalFolderPosition que si lo pones en el primer MDI, todas las pestañas estarán a la misma altura. Solo es necesario ponerlo una vez

Te pongo dos videos para ver la diferencia

Image

Image

Saludos
Jesús Marín
JESUS MARIN
 
Posts: 174
Joined: Wed Jan 02, 2019 8:36 am

Re: CLASS TMdiFolder ( a la atención de Leandro )

Postby Silvio.Falconi » Fri Jun 09, 2023 12:42 pm

disculpa mi ignorancia pero no entendí muy bien para que seria, me puedes mostrar un ejemplo de aplicación?
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 6768
Joined: Thu Oct 18, 2012 7:17 pm

Re: CLASS TMdiFolder ( a la atención de Leandro )

Postby JESUS MARIN » Fri Jun 09, 2023 3:32 pm

Ciao Silvio
Chiaro. Nessun problema. Ti dico.
Ogni folder è una finestra figlio MDI.
Invece di essere mostrata come una finestra di Windows, (con le sue vecchie icone di Windows di cui già conosci il problema perché ne hai discusso più volte in questo forum) viene mostrata ingrandita all'interno di un Frame.

Ha tutte le caratteristiche (o almeno ci sto provando) di una finestra di Windows: move, minimizza, ripristina, massimizza, chiudi, ridimensiona...

Puoi aprire la stessa opzione di menu più volte. Se esiste già, aprirà una finestra Mdi Child, con un numero in più... quindi, ad esempio, puoi avere la manutenzione clienti aperta due volte. (ovviamente bisogna programmarlo come se fosse un ambiente di rete).

Quindi ho aggiunto alcune funzionalità: icona MDI visualizzata nell folder, miniature dell'ultima azione di ogni finestra quando si passa con il mouse sopra il folder... ecc...

Ora, l'amico Leandro vuole metterci sopra un RibonBar. Ho creato le variabili necessarie per testarlo.

Tutto questo nasce da una domanda che ha fatto Leandro.
https://forums.fivetechsupport.com/viewtopic.php?f=6&t=42657&p=256856&sid=dfea683816604365a6dc936587427e86&sid=dfea683816604365a6dc936587427e86#p256856

Salutti

-------------------------

Hola Silvio
Claro. No hay problema. Te cuento.
Cada folder es una ventana MDI Child.
En vez de mostrarse como una ventana windows, ( con sus iconos del viejo windows cuyo problema tu ya conoces pues lo has hablado en este foro varias veces)se muestra maximizada dentro de un Frame.

Tiene todas las particularidades ( o al menos eso estoy intentando) de una ventana windows : Mover, minimizar, restaurar, maximizar, cerrar, cambiar tamaño....

Puedes abrir la misma opción de menu varias veces. Si ya existe abrirá una ventana Mdi Child, con un numero mas.... con lo que, por ejemplo, puedes tener dos veces abierto el mantenimiento de clientes. (obviamente tienes que programarlo como si fuera un entorno de red).

Luego he añadido algunas caracteristicas : icono del MDI mostrado en el folder, miniaturas de la ultima acción de cada ventana al pasar el ratón por la solapa.... etc...

Todo esto nace de una pregunta que hizo Leandro
https://forums.fivetechsupport.com/viewtopic.php?f=6&t=42657&p=256856&sid=dfea683816604365a6dc936587427e86&sid=dfea683816604365a6dc936587427e86#p256856

Ahora, el amigo Leandro, quiere poner un RibonBar en la parte superior. He creado las variables necesarias para que lo pruebe.

Saludos
Jesús Marín
JESUS MARIN
 
Posts: 174
Joined: Wed Jan 02, 2019 8:36 am

Re: CLASS TMdiFolder ( a la atención de Leandro )

Postby Silvio.Falconi » Fri Jun 09, 2023 4:51 pm

JESUS MARIN wrote:Ciao Silvio
Chiaro. Nessun problema. Ti dico.
Ogni folder è una finestra figlio MDI.
Invece di essere mostrata come una finestra di Windows, (con le sue vecchie icone di Windows di cui già conosci il problema perché ne hai discusso più volte in questo forum) viene mostrata ingrandita all'interno di un Frame.

Ha tutte le caratteristiche (o almeno ci sto provando) di una finestra di Windows: move, minimizza, ripristina, massimizza, chiudi, ridimensiona...

Puoi aprire la stessa opzione di menu più volte. Se esiste già, aprirà una finestra Mdi Child, con un numero in più... quindi, ad esempio, puoi avere la manutenzione clienti aperta due volte. (ovviamente bisogna programmarlo come se fosse un ambiente di rete).

Quindi ho aggiunto alcune funzionalità: icona MDI visualizzata nell folder, miniature dell'ultima azione di ogni finestra quando si passa con il mouse sopra il folder... ecc...

Ora, l'amico Leandro vuole metterci sopra un RibonBar. Ho creato le variabili necessarie per testarlo.

Tutto questo nasce da una domanda che ha fatto Leandro.
https://forums.fivetechsupport.com/viewtopic.php?f=6&t=42657&p=256856&sid=dfea683816604365a6dc936587427e86&sid=8d63f8f3c58ceebd1424dff88aac419d#p256856

Salutti

-------------------------

Hola Silvio
Claro. No hay problema. Te cuento.
Cada folder es una ventana MDI Child.
En vez de mostrarse como una ventana windows, ( con sus iconos del viejo windows cuyo problema tu ya conoces pues lo has hablado en este foro varias veces)se muestra maximizada dentro de un Frame.

Tiene todas las particularidades ( o al menos eso estoy intentando) de una ventana windows : Mover, minimizar, restaurar, maximizar, cerrar, cambiar tamaño....

Puedes abrir la misma opción de menu varias veces. Si ya existe abrirá una ventana Mdi Child, con un numero mas.... con lo que, por ejemplo, puedes tener dos veces abierto el mantenimiento de clientes. (obviamente tienes que programarlo como si fuera un entorno de red).

Luego he añadido algunas caracteristicas : icono del MDI mostrado en el folder, miniaturas de la ultima acción de cada ventana al pasar el ratón por la solapa.... etc...

Todo esto nace de una pregunta que hizo Leandro
https://forums.fivetechsupport.com/viewtopic.php?f=6&t=42657&p=256856&sid=dfea683816604365a6dc936587427e86&sid=8d63f8f3c58ceebd1424dff88aac419d#p256856

Ahora, el amigo Leandro, quiere poner un RibonBar en la parte superior. He creado las variables necesarias para que lo pruebe.

Saludos



sin embargo somos. Volvamos al punto de partida, ya que no podemos tener el niño de Windows con el tema correcto, sino el tema antiguo, que entonces no entiendo si no podemos hacer lo que hacen otros lenguajes de programación para obtener el tema correcto también para el niño. ventanas hay algo que me falta....
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 6768
Joined: Thu Oct 18, 2012 7:17 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 54 guests