Page 1 of 1

Modificar dialogo en Recurso (Tiempo de ejecucion)

Posted: Tue Dec 13, 2022 12:05 am
by Compuin
Saludos foro,

Tengo un dialogo en recurso y me gustaria saber si existe alguna forma de modificarlo en tiempo de ejecucion, es decir, sin tener que utilizar PellesC y compilar otra vez.

Gracias de antemano y atento a sus comentarios

Re: Modificar dialogo en Recurso (Tiempo de ejecucion)

Posted: Tue Dec 13, 2022 8:22 am
by Antonio Linares
Que modificaciones necesitas hacerle ?

Re: Modificar dialogo en Recurso (Tiempo de ejecucion)

Posted: Tue Dec 13, 2022 3:20 pm
by Compuin
Hola maestro,

Si deseo cambiar el tamano de un Get o un Boton luego que este dialogo en recurso ya este compilado en el .exe

A eso me refiero

Re: Modificar dialogo en Recurso (Tiempo de ejecucion)

Posted: Tue Dec 13, 2022 3:47 pm
by karinha
Compuin wrote:Hola maestro,

Si deseo cambiar el tamano de un Get o un Boton luego que este dialogo en recurso ya este compilado en el .exe

A eso me refiero
simple, crea dos GETS y dos BOTONES en las mismas coordenadas con diferentes IDs, uno encima del otro, y después de ejecutar lo que tienes que hacer, haces invisible (Hide()) el GET/BUTTON que no quieres más, y hazlo visible (Show()) lo que aparezca más tarde.

Comandos: Hide() y Show(), ok?

Regards, saludos.

Re: Modificar dialogo en Recurso (Tiempo de ejecucion)

Posted: Tue Dec 13, 2022 4:03 pm
by Compuin
karinha wrote:
Compuin wrote:Hola maestro,

Si deseo cambiar el tamano de un Get o un Boton luego que este dialogo en recurso ya este compilado en el .exe

A eso me refiero
simple, crea dos GETS y dos BOTONES en las mismas coordenadas con diferentes IDs, uno encima del otro, y después de ejecutar lo que tienes que hacer, haces invisible (Hide()) el GET/BUTTON que no quieres más, y hazlo visible (Show()) lo que aparezca más tarde.

Comandos: Hide() y Show(), ok?

Regards, saludos.
No es asi de simple como lo planteas...

Me refiero a hacer ajustes a un boton o Get o cualquien otro objeto una vez compilado el recurso con el .exe

La idea es no tener que volver a usar PellesC para hacer el cambio y luego volver a compilar

Re: Modificar dialogo en Recurso (Tiempo de ejecucion)

Posted: Tue Dec 13, 2022 4:22 pm
by karinha
Pido disculpas, pero de esta manera, no tengo ni idea con Recursos. Ni siquiera tiene sentido para mí hacer algo así.

Regards, saludos.

Re: Modificar dialogo en Recurso (Tiempo de ejecucion)

Posted: Tue Dec 13, 2022 4:23 pm
by Compuin
karinha wrote:Pido disculpas, pero de esta manera, no tengo ni idea con Recursos. Ni siquiera tiene sentido para mí hacer algo así.

Regards, saludos.
Para mi si lo tiene, por eso es que lo pregunto en el foro.

Imaginate hacer las cosas que solo tengan sentido para algunos pero no para los clientes

Re: Modificar dialogo en Recurso (Tiempo de ejecucion)

Posted: Tue Dec 13, 2022 4:26 pm
by karinha
Compuin wrote:
karinha wrote:Pido disculpas, pero de esta manera, no tengo ni idea con Recursos. Ni siquiera tiene sentido para mí hacer algo así.

Regards, saludos.
Para mi si lo tiene, por eso es que lo pregunto en el foro.

Imaginate hacer las cosas que olo tengan sentido para algunos pero no para los clientes
Si, claro. Tiens una imagen, algo concreto?

Regards, saludos.

Re: Modificar dialogo en Recurso (Tiempo de ejecucion)

Posted: Tue Dec 13, 2022 4:38 pm
by cmsoft
Compuin:
Puedes cambiar alguna propiedad de cada control, o del control que tu quieras, como por ejemplo el alto y el ancho.
Todo dependerá de lo que quieras hacer.
Siempre tené en cuenta que el dialogo ya debe estar creado y todos sus controles tambien.
Aca un ejemplo funcional, aunque sin mucho sentido, pero muestra que se pueden modificar las data de los controles dentro de un dialogo por recurso

Code: Select all | Expand

#Include "Fivewin.Ch"
#Include "TGraph.Ch"

FUNCTION DlgTest()
   LOCAL oDlg, oFont, oGraph1, oGraph2
   LOCAL aPers
   aPers:={"Ene","Feb","Mar","Abr","May","Jun","Jul"}

   DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0,-10
   DEFINE DIALOG oDlg RESOURCE "TG_Test" FONT oFont

   oGraph1 := TGraph():ReDefine(100,oDlg)

   With Object oGraph1
      :nType   := GRAPH_TYPE_PIE
      :l3D     := .T.
      :lPopUp  := .T.
      :lLegends:= .F.
      :nClrX   := CLR_WHITE
      :nClrY   := CLR_WHITE
      :nClrV   := CLR_WHITE
      :nMaxVal := 50
      :cBitmap := ".\Bacalar.Bmp"
      :AddSerie({-30,-20, 40, 15, 20,  5, 10},"Serie1",RGB(200, 50, 50),1,.T.)
      :AddSerie({ 10,  5, 20, 15, 40,-20,-30},"Serie2",RGB( 50, 50,200),3,.F.)
      :SetYVals(aPers)
   End With

   oGraph2 := TGraph():ReDefine(105,oDlg)

   With Object oGraph2
      :nType   := GRAPH_TYPE_BAR
      :l3D     := .F.
      :lPopUp  := .T.
      :lDegrade:= .T.
      :lLegends:= .F.
      :nMaxVal := 50
      :nMinVal :=-40
      :cBitmap := ".\Brush.Bmp"
      :AddSerie({-30,-20, 40, 15, 20,  5, 10},"Serie1",CLR_GREEN       ,2,.F.)
      :AddSerie({ 10,  5, 20, 15, 40,-20,-30},"Serie2",RGB(218,181, 28),1,.F.)
      :SetYVals(aPers)
   End With

   REDEFINE BUTTON ID 110 OF oDlg ACTION Accion(oDlg)

   ACTIVATE DIALOG oDlg 
   oFont:End()

RETURN (NIL)


STATIC FUNCTION Accion(oDlg)
LOCAL oDlg1, oBot := ARRAY(3), lSalir := .f., lSumar := .f., i
DEFINE DIALOG oDlg1 FROM 1,1 TO 300, 600 PIXEL TITLE "Seleccione Ciudad y Comuna" OF oDlg

   @ 20, 10 BUTTON oBot[1] PROMPT "Terminar" SIZE 30,10 PIXEL OF oDlg1 ACTION (lSalir := .t.,oDlg1:End())

   @ 50, 10 BUTTON oBot[1] PROMPT "Sumar 10" SIZE 30,10 PIXEL OF oDlg1 ACTION (lSumar := .t.,oDlg1:End())
  
ACTIVATE DIALOG oDlg1 CENTERED 
IF lSalir 
   oDlg:End()
ENDIF
IF lSumar
   FOR i := 1 TO LEN(oDlg:aControls)
       oDlg:aControls[i]:nHeight := oDlg:aControls[i]:nHeight + 10
       oDlg:aControls[i]:nWidth := oDlg:aControls[i]:nWidth + 10
       oDlg:aControls[i]:Refresh()
   NEXT i     
   oDlg:nWidth := oDlg:nWidth + 10
ENDIF   
RETURN nil
 
Este es el .rc

Code: Select all | Expand

/****************************************************************************


dlgtest.rc

produced by Borland Resource Workshop


*****************************************************************************/

LANGUAGE LANG_SPANISH,SUBLANG_SPANISH_MEXICAN


1 24 LOADONCALL MOVEABLE
{
 '3C 3F 78 6D 6C 20 76 65 72 73 69 6F 6E 3D 22 31'
 '2E 30 22 20 65 6E 63 6F 64 69 6E 67 3D 22 55 54'
 '46 2D 38 22 20 73 74 61 6E 64 61 6C 6F 6E 65 3D'
 '22 79 65 73 22 3F 3E 0D 0A 3C 61 73 73 65 6D 62'
 '6C 79 20 78 6D 6C 6E 73 3D 22 75 72 6E 3A 73 63'
 '68 65 6D 61 73 2D 6D 69 63 72 6F 73 6F 66 74 2D'
 '63 6F 6D 3A 61 73 6D 2E 76 31 22 20 6D 61 6E 69'
 '66 65 73 74 56 65 72 73 69 6F 6E 3D 22 31 2E 30'
 '22 3E 0D 0A 3C 61 73 73 65 6D 62 6C 79 49 64 65'
 '6E 74 69 74 79 0D 0A 20 20 20 20 76 65 72 73 69'
 '6F 6E 3D 22 31 2E 30 2E 30 2E 30 22 0D 0A 20 20'
 '20 20 70 72 6F 63 65 73 73 6F 72 41 72 63 68 69'
 '74 65 63 74 75 72 65 3D 22 58 38 36 22 0D 0A 20'
 '20 20 20 6E 61 6D 65 3D 22 55 74 6F 70 69 61 50'
 '6C 61 6E 69 74 69 61 2E 4D 45 44 2E 4D 45 44 22'
 '0D 0A 20 20 20 20 74 79 70 65 3D 22 77 69 6E 33'
 '32 22 0D 0A 2F 3E 0D 0A 3C 64 65 73 63 72 69 70'
 '74 69 6F 6E 3E 59 6F 75 72 20 61 70 70 6C 69 63'
 '61 74 69 6F 6E 20 64 65 73 63 72 69 70 74 69 6F'
 '6E 20 68 65 72 65 2E 3C 2F 64 65 73 63 72 69 70'
 '74 69 6F 6E 3E 0D 0A 3C 64 65 70 65 6E 64 65 6E'
 '63 79 3E 0D 0A 20 20 20 20 3C 64 65 70 65 6E 64'
 '65 6E 74 41 73 73 65 6D 62 6C 79 3E 0D 0A 20 20'
 '20 20 20 20 20 20 3C 61 73 73 65 6D 62 6C 79 49'
 '64 65 6E 74 69 74 79 0D 0A 20 20 20 20 20 20 20'
 '20 20 20 20 20 74 79 70 65 3D 22 77 69 6E 33 32'
 '22 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 6E'
 '61 6D 65 3D 22 4D 69 63 72 6F 73 6F 66 74 2E 57'
 '69 6E 64 6F 77 73 2E 43 6F 6D 6D 6F 6E 2D 43 6F'
 '6E 74 72 6F 6C 73 22 0D 0A 20 20 20 20 20 20 20'
 '20 20 20 20 20 76 65 72 73 69 6F 6E 3D 22 36 2E'
 '30 2E 30 2E 30 22 0D 0A 20 20 20 20 20 20 20 20'
 '20 20 20 20 70 72 6F 63 65 73 73 6F 72 41 72 63'
 '68 69 74 65 63 74 75 72 65 3D 22 58 38 36 22 0D'
 '0A 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62'
 '6C 69 63 4B 65 79 54 6F 6B 65 6E 3D 22 36 35 39'
 '35 62 36 34 31 34 34 63 63 66 31 64 66 22 0D 0A'
 '20 20 20 20 20 20 20 20 20 20 20 20 6C 61 6E 67'
 '75 61 67 65 3D 22 2A 22 0D 0A 20 20 20 20 20 20'
 '20 20 2F 3E 0D 0A 20 20 20 20 3C 2F 64 65 70 65'
 '6E 64 65 6E 74 41 73 73 65 6D 62 6C 79 3E 0D 0A'
 '3C 2F 64 65 70 65 6E 64 65 6E 63 79 3E 0D 0A 3C'
 '2F 61 73 73 65 6D 62 6C 79 3E 0D 0A 0D 0A 0D 0A'
}


TG_TEST DIALOG 49, 91, 409, 194
STYLE DS_MODALFRAME | 0x4L | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Distribución de saldos"
FONT 8, "MS Sans Serif"
LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_MEXICAN
{
 CONTROL "", 100, "TGraph", 0 | WS_CHILD | WS_VISIBLE, 5, 7, 196, 162
 CONTROL "", 105, "TGraph", 0 | WS_CHILD | WS_VISIBLE, 207, 7, 196, 162
 DEFPUSHBUTTON "&Salir", 110, 342, 174, 61, 14
 __CLASS "Button"
}
 

Re: Modificar dialogo en Recurso (Tiempo de ejecucion)

Posted: Tue Dec 13, 2022 5:03 pm
by Compuin
Muchas gracias Cesar,

La mitad del problema esta respondido con este ejemplo, es decir, poder cambiar las propiedades de los objetos del Dialogo en Recursos sin hacerlo con PellesC.

Mi otra parte es como hacerlo sin tener que recompilar el codigo, es decir, cambio las propiedades del dialogo en el .PRG pero como lo hago en tiempo de ejecucion?

Re: Modificar dialogo en Recurso (Tiempo de ejecucion)

Posted: Tue Dec 13, 2022 9:06 pm
by Antonio Linares
Desde la claúsula ON INIT del diálogo puedes acceder a los controles y modificarlos antes de que se muestren

Posteriormente puedes hacerlo accediendo a oDlg:aControls, localizas el control que buscas y lo modificas

Re: Modificar dialogo en Recurso (Tiempo de ejecucion)

Posted: Tue Dec 13, 2022 9:09 pm
by Compuin
Maestro, Cesar

Muchas gracias a ambos