FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Modificar dialogo en Recurso (Tiempo de ejecucion)
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Modificar dialogo en Recurso (Tiempo de ejecucion)
Posted: Tue Dec 13, 2022 12:05 AM

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

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Modificar dialogo en Recurso (Tiempo de ejecucion)
Posted: Tue Dec 13, 2022 08:22 AM

Que modificaciones necesitas hacerle ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Modificar dialogo en Recurso (Tiempo de ejecucion)
Posted: Tue Dec 13, 2022 03:20 PM

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

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Modificar dialogo en Recurso (Tiempo de ejecucion)
Posted: Tue Dec 13, 2022 03:47 PM
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.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Modificar dialogo en Recurso (Tiempo de ejecucion)
Posted: Tue Dec 13, 2022 04:03 PM
karinha 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

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Modificar dialogo en Recurso (Tiempo de ejecucion)
Posted: Tue Dec 13, 2022 04:22 PM

Pido disculpas, pero de esta manera, no tengo ni idea con Recursos. Ni siquiera tiene sentido para mí hacer algo así.

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Modificar dialogo en Recurso (Tiempo de ejecucion)
Posted: Tue Dec 13, 2022 04:23 PM
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

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Modificar dialogo en Recurso (Tiempo de ejecucion)
Posted: Tue Dec 13, 2022 04:26 PM
Compuin 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.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Modificar dialogo en Recurso (Tiempo de ejecucion)
Posted: Tue Dec 13, 2022 04:38 PM
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 (fw): Select all Collapse
#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 (fw): Select all Collapse
/****************************************************************************


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"
}
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Modificar dialogo en Recurso (Tiempo de ejecucion)
Posted: Tue Dec 13, 2022 05:03 PM

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?

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Modificar dialogo en Recurso (Tiempo de ejecucion)
Posted: Tue Dec 13, 2022 09:06 PM

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

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Modificar dialogo en Recurso (Tiempo de ejecucion)
Posted: Tue Dec 13, 2022 09:09 PM

Maestro, Cesar

Muchas gracias a ambos

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Continue the discussion