Tengo que cerrar cada una de ellas para que se pueda abrir la siguiente...
*----------------------------------------------------------------------------------------------
Code: Select all
//[•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•]
//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
// * Ejemplo de Multiventanas CHILD desde un GRID hecho por AndyGlezL (Andrés González López) 26/NOV/2019
// * Tomado del Ejemplo compartido por EDK. https://www.hmgforum.com/viewtopic.php?f=12&t=6209&p=60105#p60105
// * ---------------------------------------------------------------------------------------------------
// * Example of CHILD Multiwindows from a GRID made by AndyGlezL (Andrés González López) 26/NOV/2019
// * Taken from the Example shared by EDK. https://www.hmgforum.com/viewtopic.php?f=12&t=6209&p=60105#p60105
// * ---------------------------------------------------------------------------------------------------
// * E-mail: andyglezl@hotmail.com - dari_disenos@hotmail.com
// * http://daridisenos.wix.com/dariweb
// * Desarrollado en HMG 3.4.4 VIVA HMG !!!
//_______________________________________________________________________________________________________
//[•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•.•]
//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
#include <hmg.ch>
#define fColor { || if ( This.CellRowIndex/2 == int(This.CellRowIndex/2) , WHITE , { 235, 245, 245 } ) }
#xtranslate _HMG_aFormNames => _HMG_SYSDATA\[66\]
FUNCTION Main()
PUBLIC nForm := 1
PUBLIC aRows [20] [3]
aRows [1] := {'Simpson','Homer','555-5555'}
aRows [2] := {'Mulder','Fox','324-6432'}
aRows [3] := {'Smart','Max','432-5892'}
aRows [4] := {'Grillo','Pepe','894-2332'}
aRows [5] := {'Kirk','James','346-9873'}
aRows [6] := {'Barriga','Carlos','394-9654'}
aRows [7] := {'Flanders','Ned','435-3211'}
aRows [8] := {'Smith','John','123-1234'}
aRows [9] := {'Pedemonti','Flavio','000-0000'}
aRows [10] := {'Gomez','Juan','583-4832'}
aRows [11] := {'Fernandez','Raul','321-4332'}
aRows [12] := {'Borges','Javier','326-9430'}
aRows [13] := {'Alvarez','Alberto','543-7898'}
aRows [14] := {'Gonzalez','Ambo','437-8473'}
aRows [15] := {'Batistuta','Gol','485-2843'}
aRows [16] := {'Vinazzi','Amigo','394-5983'}
aRows [17] := {'Pedemonti','Flavio','534-7984'}
aRows [18] := {'Samarbide','Armando','854-7873'}
aRows [19] := {'Pradon','Alejandra','???-????'}
aRows [20] := {'Reyes','Monica','432-5836'}
DEFINE WINDOW FormMain AT 0 , 0 WIDTH GetDesktopWidth() HEIGHT GetDesktopHeight()-5 NOSIZE MAIN BACKCOLOR { 230 , 230 , 250 }
DEFINE MAIN MENU
DEFINE POPUP "Menu"
MENUITEM "Open several Windows" ACTION MultiWin()
MENUITEM "Exit" ACTION ReleaseAllForms()
END POPUP
END MENU
@ 010,010 GRID Grid_1 OF FormMain WIDTH 450 HEIGHT 600 ITEMS aRows FONT "Verdana" SIZE 10 HEADERS { 'Last Name', 'First Name', 'Phone' } WIDTHS { 140 , 140 , 140 } ;
VALUE 1 DYNAMICBACKCOLOR { fColor, fColor, fColor } ON DBLCLICK ( ChildForm( GetProperty( "FormMain","Grid_1", "Value" ) ) ) ;
TOOLTIP "DblClick para Abrir" JUSTIFY { GRID_JTFY_CENTER, GRID_JTFY_RIGHT, GRID_JTFY_RIGHT }
FOR i1=1 TO 3 // Colores al ENCABEZADO de las 3 Columnas
SetProperty( "FormMain", "Grid_1", "HeaderDYNAMICFONT", i1, { || ARRAY FONT "Consolas" SIZE 12 ITALIC BOLD } )
SetProperty( "FormMain", "Grid_1", "HeaderDYNAMICFORECOLOR", i1, { || { 100 , 149 , 237 } } )
NEXT
CellNavigationColor( _SELECTEDROW_FORECOLOR, WHITE ) ; CellNavigationColor( _SELECTEDROW_BACKCOLOR, BLUE ) // Renglon seleccionado
END WINDOW
ACTIVATE WINDOW FormMain
RETURN
***************************************************************************
FUNCTION ReleaseAllForms()
LOCAL i
FOR i = Len( _HMG_aFormNames ) TO 1 STEP -1 // Ir cerrando las ventanas de la última a la primera
IF IsWindowDefined( &( _HMG_aFormNames [i] ) )
DoMethod( _HMG_aFormNames [i], "Release")
ENDIF
NEXT i
RETURN
**************************************************************************
FUNCTION ChildForm( nIndexRow )
LOCAL ChildForm :="ChildForm_", i
cNombre := GetProperty( "FormMain","Grid_1", "Cell", nIndexRow, 1 ) + " " + ;
GetProperty( "FormMain","Grid_1", "Cell", nIndexRow, 2 ) + " " + ;
GetProperty( "FormMain","Grid_1", "Cell", nIndexRow, 3 )
ChildForm := hb_StrReplace( cNombre, { ' ' => '', '-' => '', '?' => '' } ) // Dejo ChildForm sin espacios o carateres "raros"
IF ! IsWindowDefined( &( ChildForm ) )
DEFINE WINDOW &ChildForm AT 0 , 0 WIDTH 550 HEIGHT 350 CHILD NOSIZE NOMINIMIZE NOMAXIMIZE ;
ON INIT DoStoreData(ChildForm)
@ 000 , 000 LABEL Label_1 OF &ChildForm VALUE "Simple context Menu of Grid" WIDTH 550 HEIGHT 20 FONT 'Arial' SIZE 9 CENTERALIGN
SetProperty( ChildForm, "Title", "#" + Alltrim( Str( nForm )+SPACE(15)+cNombre ) )
SetProperty( ChildForm, "Col", 440 + (25 * nForm ) )
SetProperty( ChildForm, "Row", 30 + (25 * nForm ) )
nForm ++
@ 060,125 TEXTBOX TEXT_1 ;
MAXLENGTH 40
@ 090,125 TEXTBOX TEXT_2 ;
MAXLENGTH 40
@ 120,125 TEXTBOX TEXT_3 ;
MAXLENGTH 40
@ 150,125 BUTTON SaveButton ;
PARENT ChildForm ;
CAPTION "&Save" ;
WIDTH 40 ;
HEIGHT 40 ;
ONCLICK DoReplaceData(ChildForm,nIndexRow)
END WINDOW
ACTIVATE WINDOW &ChildForm
ELSE
FOR i = 1 TO Len( _HMG_aFormNames )
IF ChildForm = GetProperty( _HMG_aFormNames[i], "Title" )
DoMethod( ChildForm, "SetFocus")
EXIT
ENDIF
NEXT i
ENDIF
RETURN NIL
****************************************************************
PROCEDURE DoStoreData(ChildForm)
LOCAL nRow := Getproperty("FormMain", "Grid_1", "Value")
SetProperty( ChildForm, "TEXT_1", "Value", GetProperty( "FormMain","Grid_1", "Cell", nRow, 1 ) )
SetProperty( ChildForm, "TEXT_2", "Value", GetProperty( "FormMain","Grid_1", "Cell", nRow, 2 ) )
SetProperty( ChildForm, "TEXT_3", "Value", GetProperty( "FormMain","Grid_1", "Cell", nRow, 3 ) )
RETURN
****************************************************************
PROCEDURE DoReplaceData(ChildForm,nID)
FormMain.Grid_1.Cell( nID , 1 ) := GetProperty( ChildForm, "TEXT_1", "Value" )
FormMain.Grid_1.Cell( nID , 2 ) := GetProperty( ChildForm, "TEXT_2", "Value" )
FormMain.Grid_1.Cell( nID , 3 ) := GetProperty( ChildForm, "TEXT_3", "Value" )
FormMain.Grid_1.refresh
DoMethod( ChildForm, "Release")
RETURN
****************************************************************
FUNCTION MultiWin( )
aNombMulti := { 2, 4, 6, 8 }
FOR i1 = 1 TO HMG_LEN( aNombMulti )
ChildForm( aNombMulti[i1] )
*MSGDEBUG( aNombMulti, aNombMulti[i1] )
NEXT
RETURN
***************************************************************************