Spanish Ejecucion paso a paso para depurar?

Jean Hendrickx

Member
Licensed User
Hola amigos, he logrado avanzar y ya tengo un panel casi listo, logro que me pregunte varios campos (Codigo, Descripcion, Costo Compra, Precio Venta y Fecha Compra), pero no sé que hice, que ahora compila sin ningún tipo de error, pero no me muestra mi panel, imagino que mi código está finalizando por algún lado, pero no logro determinar por donde ... gracias anticipadas!


B4X:
#Region Shared Files
#CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\Files"
'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True
#End Region

'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip

Sub Class_Globals
    Private Root As B4XView
    Private xui As XUI
    Private TxF_ClteCodigo As TextField
    Private TxF_ClteDescripcion As TextField
    Private kvs As KeyValueStore
    Private largo As Int
    Private TxF_Costo As TextField
    Private TxF_Precio As TextField
    Private Fecha_Vta As DatePicker
    Fecha_Vta.DateFormat = "dd/MM/yyyy"
End Sub

Public Sub Initialize
    'kvs.Initialize(File.DirInternal, "datastore")  *** Ver cual es la sintaxis del kvs.initialize() ***
End Sub

'This event will be called once, before the page becomes visible.
Private Sub B4XPage_Created (Root1 As B4XView)
    Root = Root1
    Root.LoadLayout("MainPage")
    
End Sub

'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.


Private Sub Btn_Finalizar_Click
    ExitApplication
End Sub

Private Sub Btn_Guardar_Click
    'Valida que el Codigo de product no esté en blanco
    If TxF_ClteCodigo.Text.Length = 0 Then
        xui.MsgboxAsync("El campo Codigo esta en blanco","Aviso")
        TxF_ClteCodigo.RequestFocus()
        Return
    End If

    'Rutina para rellenar el campo ClteCodigo:
    TxF_ClteCodigo.Text=Pad(TxF_ClteCodigo.Text,"0",6,False)

    'Valida que el Descripcion no esté en blanco
    If TxF_ClteDescripcion.Text.Length = 0 Then
        xui.MsgboxAsync("El campo Descripcion esta en blanco","Aviso")
        TxF_ClteDescripcion.RequestFocus()
        Return
    End If

    ' Determina si el Costo está en blanco o es menor o igual a cero
    If TxF_Costo.Text.Length = 0 Then
        xui.MsgboxAsync("El campo Costo esta en blanco","Aviso")
        TxF_Costo.RequestFocus()
        Return
    End If
    If IsNumber(TxF_Costo) Then
        Dim costo As Int = TxF_Costo.Text
        If costo <=0 Then
            xui.MsgboxAsync("El costo no puede ser cero o negativo","Aviso")
            TxF_Costo.RequestFocus()
            'Return
        End If
    End If
    Log("Llego aqui")
End Sub

Private Sub TxF_ClteCodigo_Action
    'Revisar si la linea 43 vendria aqui: TxF_ClteCodigo=Pad(TxF_ClteCodigo,"*",6,True)
End Sub

Sub Pad (Texto As String, Relleno As String, largo_aux As Int, Atras As Boolean) As String
    'Classic
    Private Str As String = ""
    Private FillStr As String
    If Relleno = "" Then Relleno = "0"
    For i=1 To largo_aux - Texto.Length
        FillStr = FillStr & Relleno.CharAt(0)
    Next
    If Atras Then
        Str = Texto & FillStr
    Else
        Str = FillStr & Texto
    End If
    Return Str
End Sub

PD: No sé si hace falta que coloque otra cosa (Como el panel en si) para que me puedan ayudar, estaré pendiente y gracias!!
Saludos,
Jean H//
 

Jean Hendrickx

Member
Licensed User
Hola, no sé aun como ejecutar el programa paso a paso, pero si encontré el error, la linea 18

Fecha_Vta.DateFormat = "dd/MM/yyyy"

Generaba un error, que no aparecía en la ventana de compilación, sólo aparece en una caja en la parte derecha del editor, en los LOGs, donde decía que el objeto debia
ser inicializado primero: Caused by: java.lang.RuntimeException: Object should first be initialized (DatePicker).

Al comentar esa linea el programa se ejecutó bien ... gracias!

Jean H//
 

Gabino A. de la Gala

Well-Known Member
Licensed User
Longtime User
Prueba a poner el
Fecha_Vta.DateFormat = "dd/MM/yyyy" después de cargar el layout.
Sobre lo de ejecutar paso a paso, supongo que te refieres a ejecutarlo en modo debug y luego poder poner puntos de ruptura, etc.
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…