Simplemente COMBOBOX NO FUNCIONA CON MSG

Post Reply
remtec
Posts: 431
Joined: Fri May 12, 2017 2:50 pm

Simplemente COMBOBOX NO FUNCIONA CON MSG

Post by remtec »

Me he convencido que COMBOBOX no funciona con mensajes al usuario y dar boton Salir, para cerrar el Dialog.

Pongo un pequeño ejemplo para los Guru, a ver si existe alguna posibilidad de corregir el Error.
El ejemplo es simple, un recurso RES, realizado el Pelles c, con solo un Dialog el cual tiene un Combobox y un Boton de Salida.

El Problema es que al se selecciona un dato del combobox emite un mensaje de prueba al Usuario y luego doy Boton Salir y arroja el error que se detalla.

Saludos
Antonio

Codigo:

Code: Select all

#include "FiveWin.ch"


Function Consu()
     Local oDlg1,oSay2
     Static cCod_pro1:="",nCod_pro1
     Static aProfe:= {},oPaci,oCod_pro1

   aProfe:= {{"BUST","ARTURO BUSTIOS"},{"AREL","ARNALDO ARELLANO"},{"OLMO","JORGE OLMO"}}


     ASORT( aProfe,,, { |x,y| x[2] < y[2] } )

     nCod_pro1=1


   DEFINE DIALOG oDlg1 RESOURCE "#10"

     REDEFINE COMBOBOX oCod_pro1 VAR nCod_pro1 ITEMS ArrTranspose(aProfe)[2] ID 12 OF oDlg1 ;
                        ON CHANGE (cCod_pro1:=ArrTranspose(aProfe)[1][oCod_pro1:nAt],Car())

     REDEFINE BUTTON ID 15  OF oDlg1 ;
            ACTION (oDlg1:END())

   ACTIVATE DIALOG oDlg1 CENTERED         <----  Aqui Error Linea 25



Return nil

Static Function  Car()
   
      MsgStop("No ha Seleccionado Profesional Medico")
      Return  nil


 
Codigo Error:

Code: Select all

Time from start: 0 hours 0 mins 10 secs 
   Error occurred at: 11/20/18, 22:34:26
   Error description: Error BASE/1072  Argument error: <>
   Args:
     [   1] = N   2
     [   2] = C   ARTURO BUSTIOS

Stack Calls
===========
   Called from: .\source\classes\TGET.PRG => TGET:LOSTFOCUS( 1223 )
   Called from: .\source\classes\CONTROL.PRG => TGET:KILLFOCUS( 1083 )
   Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1696 )
   Called from: .\source\classes\TGET.PRG => TGET:HANDLEEVENT( 592 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3544 )
   Called from:  => DIALOGBOX( 0 )
   Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 289 )
   Called from: teste.prg => CONSU( 25 )

System
======
   CPU type: Intel(R) Core(TM) i7-4510U CPU @ 2.00GHz 2600 Mhz
   Hardware memory: 8085 megs

   Free System resources: 90 %
        GDI    resources: 90 %
        User   resources: 90 %

   Windows total applications running: 3
      1 ,                                                                                                     
      2 , C:\Util\fwh1709\samples\teste.exe                                                                   
      3 G, C:\WINDOWS\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.17134.407_none_73dcc71f9f7234b 

Variables in use
================
   Procedure     Type   Value
   ==========================
   TGET:LOSTFOCUS
     Param   1:    O    Class: ERROR
   TGET:KILLFOCUS
     Param   1:    N    1769592
     Local   1:    N    2
     Local   2:    C    "ARTURO BUSTIOS"
     Local   3:    U    
     Local   4:    U    
   TCONTROL:HANDLEEVENT
     Param   1:    N    1769592
     Local   1:    U    
   TGET:HANDLEEVENT
     Param   1:    N    8
     Param   2:    N    1769592
     Param   3:    N    0
     Local   1:    U    
   _FWH
     Param   1:    N    8
     Param   2:    N    1769592
     Param   3:    N    0
     Local   1:    U    
   DIALOGBOX
     Param   1:    N    0
     Param   2:    N    8
     Param   3:    N    1769592
     Param   4:    N    0
     Param   5:    N    2
     Local   1:    O    Class: TGET
   TDIALOG:ACTIVATE
     Param   1:    N    4194304
     Param   2:    C    "#10"
     Param   3:    N    0
     Param   4:    O    Class: TDIALOG
   CONSU
     Param   1:    U    
     Param   2:    U    
     Param   3:    U    
     Param   4:    L    .T.
     Param   5:    U    
     Param   6:    L    .T.
     Param   7:    U    
     Param   8:    U    
     Param   9:    U    
     Param  10:    U    
     Param  11:    U    
     Local   1:    N    0
     Local   2:    S    
     Local   3:    O    Class: TDIALOG

Linked RDDs
===========
   DBF
   DBFFPT
   DBFBLOB
   DBFNTX

DataBases in use
================

Classes in use:
===============
     1 ERROR
     2 HBCLASS
     3 HBOBJECT
     4 TWINDOW
     5 TDIALOG
     6 TBRUSH
     7 TCONTROL
     8 TCOMBOBOX
     9 TGET
    10 GET
    11 TCLIPGET
    12 TBUTTON
    13 TFONT
    14 TRECT
    15 TREG32

Memory Analysis
===============
      325 Static variables

   Dynamic memory consume:
      Actual  Value:          0 bytes
      Highest Value:          0 bytes

 
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Post by cmsoft »

Le estas asignando a una variable de tipo numerica, un string, por eso te da el error.

Code: Select all

#include "FiveWin.ch"

FUNCTION Main()
MsgInfo(Consu())
RETURN nil 

Function Consu()
     Local oDlg1,oSay2
     Static cCod_pro1:="",nCod_pro1
     Static aProfe:= {},oPaci,oCod_pro1, aProfeC
   aProfeC := {"BUST","AREL","OLMO"}
   aProfe:= {{1,"ARTURO BUSTIOS"},{2,"ARNALDO ARELLANO"},{3,"JORGE OLMO"}}


     ASORT( aProfe,,, { |x,y| x[2] < y[2] } )

     nCod_pro1=1


   DEFINE DIALOG oDlg1 RESOURCE "#10"

     REDEFINE COMBOBOX oCod_pro1 VAR nCod_pro1 ITEMS ArrTranspose(aProfe)[2] ID 12 OF oDlg1 ;
                        ON CHANGE (cCod_pro1:=ArrTranspose(aProfe)[1][oCod_pro1:nAt],Car())

     REDEFINE BUTTON ID 15  OF oDlg1  ACTION (oDlg1:END())

   ACTIVATE DIALOG oDlg1 CENTERED



Return aProfeC[nCod_pro1]

Static Function  Car()
   
      MsgStop("No ha Seleccionado Profesional Medico")
Return  nil
 
Aca me devuelve bien el codigo del profesional
Igualmente, en la funcion que definiste, en cada cambio que hagas al elegir un nuevo profesional te muestra el mensaje de "no hay profesional". Yo creo que eso lo tendrias que hacer al salir de la funcion...
Espero te sirva.
remtec
Posts: 431
Joined: Fri May 12, 2017 2:50 pm

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Post by remtec »

Hola Cesar

Muchas gracias por responder.

Modifique con tu indicacion, Return aProfeC[nCod_pro1], pero el error perciste.

Mira el codigo siempre lo ha devuelto bien, por ejemplo "BUST", para el Profesional "ARTURO BUSTIOS".

La variable que me entrega el dato codigo del profesional es " cCod_pro1 "

Es por esto que en la rutina " Car()", solo dejo una linea con MsgStop("No ha Seleccionado Profesional Medico").

Este codigo lo realice para poder aislar la busquedad del Error.

El procedimiento que aplico es el siguiente:

1. Selecciono un Profesional en el Combobox.
2. Doy Boton Salir (BUTTON ID 15).
3. Al dar Boton Salir, inmediatamente se cae y arroja el mensaje detallado.

He realizado muchas pruebas y se sigue produciendo el Error.

Saludos

Antonio.
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Post by cmsoft »

Yo lo ejecuto y no me da error? Generé el .exe con todo el código que te puse y no da error. Al volver muestra el mensaje del código del profesional seleccionado.
Probaste compilar solo el .prg que yo te pase?
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Post by cmsoft »

Cambiaste el arreglo que llenabas? Lo dejaste asi?
aProfeC := {"BUST","AREL","OLMO"}
aProfe:= {{1,"ARTURO BUSTIOS"},{2,"ARNALDO ARELLANO"},{3,"JORGE OLMO"}}
remtec
Posts: 431
Joined: Fri May 12, 2017 2:50 pm

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Post by remtec »

Cesar

Disculpa, no me dicuenta de esas lineas con el cambio del Array.

Lo compilare tal como tu me lo indicas y comentare.

Muchas gracias por tomarte la molestia de ayudarme.

Muchos Saludos.

Antonio.
remtec
Posts: 431
Joined: Fri May 12, 2017 2:50 pm

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Post by remtec »

Hola Cesar

Realice _ que me propones, compile tal como dices, pero el mismo error persiste.

Me he quedado con la duda cual es el rol que cumple el array aProfeC := {"BUST","AREL","OLMO"}, ya que despues que lo definiste, no veo que lo hayas usado??

Creo que esto me ha superado, perdi mi batalla, lo compile en 1 pc 2 notebook con sistema desde windows xp a windows 10 y con 2 versiones de Fivewin diferentes, y el error persiste, cambie todo, lo unico que se repite es un Combobox y un Boton de Salida que lo unico que hace es cerrar el dialogo.

Saludos
Antonio.


Dejo el Codigo si alguien puede dar una explicacion:

Code: Select all

#include "FiveWin.ch"

FUNCTION Main()
    MsgInfo(Consu())
RETURN nil

Function Consu()
     Local oDlg1,oSay2
     Static cCod_pro1:="",nCod_pro1
     Static aProfe:= {},oPaci,oCod_pro1, aProfeC
   aProfeC := {"BUST","AREL","OLMO"}
   aProfe:= {{1,"ARTURO BUSTIOS"},{2,"ARNALDO ARELLANO"},{3,"JORGE OLMO"}}


     ASORT( aProfe,,, { |x,y| x[2] < y[2] } )

     nCod_pro1=1


   DEFINE DIALOG oDlg1 RESOURCE "#10"

     REDEFINE COMBOBOX oCod_pro1 VAR nCod_pro1 ITEMS ArrTranspose(aProfe)[2] ID 12 OF oDlg1 ;
                        ON CHANGE (cCod_pro1:=ArrTranspose(aProfe)[1][oCod_pro1:nAt],Car())

     REDEFINE BUTTON ID 15  OF oDlg1  ACTION (oDlg1:END())       <---- Boton de Salida

   ACTIVATE DIALOG oDlg1 CENTERED     <--- Aqui se produce el Error.



Return aProfeC[nCod_pro1]

Static Function  Car()

      MsgStop("No ha Seleccionado Profesional Medico")
Return  nil


 
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Post by Antonio Linares »

Un ejemplo sencillo funcionando ok:

Code: Select all

#include "FiveWin.ch"

FUNCTION Main()

   local oDlg, aNames := { "ARTURO BUSTIOS", "ARNALDO ARELLANO", "JORGE OLMO" }
   local cName := aNames[ 1 ]
   
   DEFINE DIALOG oDlg
   
   @ 1, 4 COMBOBOX cName ITEMS aNames SIZE 100, 80 OF oDlg
   
   @ 3, 11 BUTTON "Ok" OF oDlg ACTION MsgInfo( cName )
   
   ACTIVATE DIALOG oDlg CENTERED   

RETURN nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
remtec
Posts: 431
Joined: Fri May 12, 2017 2:50 pm

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Post by remtec »

Antonio

Mil gracias, disculpas a ti y todos los que se han preocupado por mi problema.

He probado tu codigo y como dices funciona muy bien.

Pero como tu codigo trabaja con coordenadas, lo hice con Recurso RC con Pelles c, aqui volvio el problema, pero decidi copiar un RC desde samples y cambiar el dialogo y Cero Problemas.

Finalmente era un problema en como habia creado el Recurso RC en Pelles c.

Ahora he probado y funciona muy bien.

La pregunta del Millon, como puedo con este ejemplo, trabajar esta Array en el Combobox, de tal forma de Obtener el CODIGO, Ejemplo del arreglo "BUST¨.

cName:= {{"BUST","ARTURO BUSTIOS"},{"AREL","ARNALDO ARELLANO"},{"OLMO","JORGE OLMO"}}

Muy Agradedico.

Saludos
Antonio.

Codigo probado Funcionando:

Code: Select all

    #include "FiveWin.ch"

    FUNCTION Main()

       local oDlg, aNames := { "ARTURO BUSTIOS", "ARNALDO ARELLANO", "JORGE OLMO" }
       local cName := aNames[ 1 ]

       DEFINE DIALOG oDlg RESOURCE "Test"

       REDEFINE COMBOBOX cName ITEMS aNames  ID 12 OF oDlg

       REDEFINE BUTTON  ID 120  OF oDlg  ACTION Muestra( cName )

       REDEFINE BUTTON ID 30  OF oDlg  ACTION (oDlg:END())

       ACTIVATE DIALOG oDlg CENTERED

    RETURN nil

 Static FUNCTION Muestra(cName)
         MsgStop( cName )
         Return nil
   

 
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Post by Antonio Linares »

Aqui lo tienes:

Code: Select all

#include "FiveWin.ch"

function Main()

   local oDlg, aNames := {{"BUST","ARTURO BUSTIOS"},{"AREL","ARNALDO ARELLANO"},{"OLMO","JORGE OLMO"}}
   local nName := 1, aTemp := {}
   
   AEval( aNames, { | aName | AAdd( aTemp, aName[ 2 ] ) } )
   
   DEFINE DIALOG oDlg
   
   @ 1, 4 COMBOBOX nName ITEMS aTemp SIZE 100, 80 OF oDlg
   
   @ 3, 11 BUTTON "Ok" OF oDlg ACTION MsgInfo( aNames[ nName ][ 1 ] )
   
   ACTIVATE DIALOG oDlg CENTERED   

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
remtec
Posts: 431
Joined: Fri May 12, 2017 2:50 pm

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Post by remtec »

Maestro Antonio Linares.

Muchas gracias por su ayuda, lo aplicare.

Eternamente agradecido.

Saludos

Antonio.
Post Reply