Simplemente COMBOBOX NO FUNCIONA CON MSG

Simplemente COMBOBOX NO FUNCIONA CON MSG

Postby remtec » Wed Nov 21, 2018 1:56 am

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  Expand view

#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  Expand view

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

 
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Postby cmsoft » Wed Nov 21, 2018 10:02 am

Le estas asignando a una variable de tipo numerica, un string, por eso te da el error.
Code: Select all  Expand view
#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.
User avatar
cmsoft
 
Posts: 1189
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Postby remtec » Wed Nov 21, 2018 10:39 am

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.
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Postby cmsoft » Wed Nov 21, 2018 10:50 am

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: 1189
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Postby cmsoft » Wed Nov 21, 2018 11:05 am

Cambiaste el arreglo que llenabas? Lo dejaste asi?
aProfeC := {"BUST","AREL","OLMO"}
aProfe:= {{1,"ARTURO BUSTIOS"},{2,"ARNALDO ARELLANO"},{3,"JORGE OLMO"}}
User avatar
cmsoft
 
Posts: 1189
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Postby remtec » Wed Nov 21, 2018 1:00 pm

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.
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Postby remtec » Thu Nov 22, 2018 12:40 am

Hola Cesar

Realice los cambios 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  Expand view

#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


 
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Postby Antonio Linares » Thu Nov 22, 2018 8:44 am

Un ejemplo sencillo funcionando ok:

Code: Select all  Expand view
#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
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Postby remtec » Thu Nov 22, 2018 1:27 pm

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  Expand view

    #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
   

 
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Postby Antonio Linares » Thu Nov 22, 2018 5:29 pm

Aqui lo tienes:

Code: Select all  Expand view
#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
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Simplemente COMBOBOX NO FUNCIONA CON MSG

Postby remtec » Thu Nov 22, 2018 6:05 pm

Maestro Antonio Linares.

Muchas gracias por su ayuda, lo aplicare.

Eternamente agradecido.

Saludos

Antonio.
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 717
Joined: Fri May 12, 2017 2:50 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 89 guests