HMG Help

Exclusive forum for HMG, a Free / Open Source xBase WIN32/64 Bits / GUI Development System
  1. Excelente, muchas gracias por tu respuesta.
    De hecho creo que vi algo parecido por aquí, alguien de este foro comento que trataba de normalizar los nombres de los campos de una base de datos, con los nombres de los texbox, y mediante un ciclo recorrer todos los campos del formulario e ir actualizando la base da datos.
    La propuesta que tu presentas por lo que entiendo va encaminado a la misma solución y objetivo de ahorro de código, solo que a mi en lo particular todavía me cuesta un poco aplicar.

    Voy a practicar mas!!!

    Saludos!

    Statistics: Posted by SvargasD — Wed Oct 23, 2019 3:08 pm


  2. Hola SvargasD

    Claro, esa es una gran pregunta. Haré todo lo posible para decir por qué. Durante el OnInit de un formulario, el contenido de un archivo de texto se lee en una variable. Esa variable se analiza y se asignan ciertos valores a un objeto de formulario.
    Los valores de propiedad de este objeto, entonces, se asignan a los valores de TextBox del formulario.

    Cuando se guarda el formulario, recorro todos los cuadros de texto. Si un TextBox ha cambiado, se pasan dos parámetros a una función:
    1) El nombre de la propiedad del objeto relevante como una cadena, es decir, "oUserAns: OStreet1" (no la propiedad del objeto en sí).
    2) El valor actual de TextBox

    La función debe:
    1) Actualice el objeto de formulario que originalmente asignó el valor de TextBox
    2) La variable de memoria del archivo de texto (completo) debe analizarse y actualizarse con precisión.

    El punto es que puedo minimizar la cantidad de código y hacer de manera inteligente todas las actualizaciones necesarias. Sin duda, otro programador presentaría una solución superior.

    Espero que esta simple explicación sea útil.

    Saludos cordiales,

    * * * * * * * * *
    Sure, that's a great question. I'll do my best to state why. During a form's OnInit a text file's contents is read into a variable. That variable is parsed and certain values are assigned to a form object.
    This object's property values are, then, assigned to the form's TextBox values.

    When the form is saved I iterate through all TextBoxes. If a TextBox has changed then two parameters are passed to a function:
    1) The name of the relevant object property as a string, i.e. "oUserAns:OStreet1" (not the object property itself).
    2) The TextBox's current value

    The function must:
    1) Update the form object that originally assigned the TextBox's value
    2) The memory variable of (entire) text file must be parsed and accurately updated.

    The point is that I can minimize the amount of code and intelligently make all necessary updates. Another programmer would undoubtedly come up with a superior solution.

    I hope that this simple explanation is helpful.

    Kind Regards,
    Red2

    Statistics: Posted by Red2 — Wed Oct 23, 2019 12:26 am


  3. Disculpa mi ignorancia:
    ¿por qué no cambiar el valor directamente?, ¿en que tipo de situaciones es útil emplearlo? xD

    Statistics: Posted by SvargasD — Tue Oct 22, 2019 11:12 pm


  4. Hi All,

    I believe that I finally have a solution after considering AUGE_OHR's post:

    CODE:

    oUserAns:OStreet1 := "444 Some Street"pcVarName    := "oUserAns:OStreet1"lcNewValue   := "1234 Another Street"&(pcVarName) := lcNewValue    //  This indirect "macro" syntax works!msginfo( oUserAns:OStreet1 )  // returns:  "1234 Another Street"
    Thank you everyone for your helpful guidance!

    Kind regards,
    Red2

    Statistics: Posted by Red2 — Tue Oct 22, 2019 10:35 pm


  5. Hallo AUGE_OHR,

    Vielen Dank, ich schätze Ihre Hilfe sehr. Ich glaube, dass Ihr Vorschlag den Wert von lcNewVal ändert.

    Eigentlich muss ich (indirekt) den Wert von oUserAns: OStreet1 in den Wert von lcNewVal ändern. Wichtig: Ich möchte nicht, dass sich die Werte von lcNewVal oder pcVarName ändern.

    Um dies (indirekt) zu tun, muss die Variable, die durch den Zeichenfolgenwert von pcVarName ("oUserAns: OStreet1") angegeben ist, aktualisiert werden. Mache ich hier sinn?

    Dies ist in VFP einfach zu bewerkstelligen. Wie geht das in HMG / Harbour?

    Nochmals vielen Dank für Ihre großzügige Anleitung.

    Red2

    * * * * * * * * * * *
    Hello AUGE_OHR,

    Thank you, I very much appreciate your help. I that believe that your suggestion changes the value of lcNewVal.

    Actually, I need to (indirectly) change the value of oUserAns:OStreet1 to the value of lcNewVal. Important: I do NOT want the values of either lcNewVal or pcVarName to change.

    To do this (indirectly) I need the variable indicated by the string value of pcVarName ("oUserAns:OStreet1") to be updated. Do I make sense here?

    This is easy to do in VFP. So, how is this done in HMG/Harbour?

    Again, thank you for your generous guidance.

    Red2

    Statistics: Posted by Red2 — Tue Oct 22, 2019 9:46 pm