https://foro.gambas-es.org/viewtopic.php?f=5&t=3923
-----------------------------------
v3ctor
Sabado, 21 Junio 2014, 23:50

Esta Función Esta Correcta?
-----------------------------------
estoy intentando hacer una función de forma que en todos los textbox me escriba en mayúsculas esta función esta bien planteada o no?

[code linenumbers=false syntax=gambas]
' Gambas class file

Public A_Mayusculas As String

Public Sub Form_Open()
 
End

Public Sub TextBox1_Change()
   Convertir_a_mayusculas(TextBox1.Text, TextBox1)
   TextBox1.Text = A_Mayusculas
End

Public Function Convertir_a_mayusculas(texto As String, txt As TextBox) As String
   A_Mayusculas = String.UCase$(texto)
   Return txt.Text = A_Mayusculas
End

Public Sub TextBox2_Change()
   Convertir_a_mayusculas(TextBox2.Text, TextBox2)
   TextBox2.Text = A_Mayusculas
End[/code]


-----------------------------------
vuott
Domingo, 22 Junio 2014, 01:09

Re: Esta Función Esta Correcta?
-----------------------------------
No tiene mucho sentido utilizar una función que sustancialmente regresa el contenido de una variable [i][u]global[/u][/i] .


-----------------------------------
osunaosuna
Domingo, 22 Junio 2014, 03:23

Re: Esta Función Esta Correcta?
-----------------------------------
Hola. No soy de contestar en los post, pero es que me pongo nervioso pues nadie respondió lo que pregunto el wey.

Desde mi humilde punto de vista no esta bien, el planteo de la solución seria pasar el objeto solamente. 
yo lo resolveria así, y de hecho lo tengo en una biblioteca de esta forma. Espero que te sirva.... Exitos

[code linenumbers=false syntax=gambas]

'' ## Descripcion ##
'' 
'' Todo a mayusculas.
'' 
'' ## Parametros ##
'' 
''  - ByRef txt As TextBox
''  
''    Es el objeto TextBox  sobre el cual trabajar.
Public Sub TxtMay(ByRef txt As TextBox)

  txt.Text = UCase(txt.Text)
  
End.
[/code]


-----------------------------------
v3ctor
Domingo, 22 Junio 2014, 07:00

Re: Esta Función Esta Correcta?
-----------------------------------
gracias por las respuestas, al final opte por esta forma en cada textbox:



Public Sub txtNombreJugador1_Change()
  txtNombreJugador1.Text = String.UCase$(txtNombreJugador1.Text)
End


-----------------------------------
didier18
Domingo, 22 Junio 2014, 09:14

Re: Esta Función Esta Correcta?
-----------------------------------
Hola amigos
Lo he hecho así.

Public Sub TextBox1_Change() 'cuando el valor cambia
TextBox1.Text = UCase$(TextBox1.Text) 'tan pronto como se presiona una tecla en los cambios en el CAPS
end

lo variable del sistema de carga no se utiliza ...


-----------------------------------
osunaosuna
Lunes, 23 Junio 2014, 00:01

Re: Esta Función Esta Correcta?
-----------------------------------
Definitivamente es casi lo mismo...


-----------------------------------
codificador
Lunes, 23 Junio 2014, 06:33

Re: Esta Función Esta Correcta?
-----------------------------------
[quote user="didier18" post="22138"]Hola amigos
Lo he hecho así.

Public Sub TextBox1_Change() 'cuando el valor cambia
TextBox1.Text = UCase$(TextBox1.Text) 'tan pronto como se presiona una tecla en los cambios en el CAPS
end

lo variable del sistema de carga no se utiliza ...[/quote]

nooo que tiene que ver el titulo con esta pregunta 
 


una solucion  para evitar reescribir codigo es 
es crear tu propio  texbox
con una nueva propiedad 
[b]charcater casing[/b]
con tres opciones  
[list][b]normal[/b] no hace nada es la opcion por default
[b]upper[/b] todo a mayusculas
[b]lower[/b] todo a minusculas
[/list]

cualquier parecido con otro lenguaje es solo coincidencia

y no no es necesario crear  nuevos componente
se puede hacer todo en el mismo proyecto que estas usando en un archivo  con un archivo de clases

solo dale un nombre no usado y aparece en el sector de los componente
mas o menos asi

este codigo lo semi-copie del foro 
tenia uno bien hecho y lo perdi
asi que no estoy seguro que funcione pero la idea es la idea



[code linenumbers=false syntax=gambas]
Inherits TextBox
Export

Public Sub _new()
    '   INICIAMOS LAS VARIABLES

    Dim hObs As Observer
    
    hObs = New Observer(Me) As "TextBox" ' declara una nueva clase observer llamada TextBox

End Sub
'falta el codigo para la nueva propiedad

Public Sub TextBox_Change()
    ' Aqui interceptamos el evento keypress del textbox
    'codigo
 End Select

End
   [/code]

y si alguien logra meter el codigo directo en el gambas  seria buena idea
como para enviarla  al codigo oficial


-----------------------------------
osunaosuna
Martes, 24 Junio 2014, 02:00

Re: Esta Función Esta Correcta?
-----------------------------------
Oye tu codificador!!! Hola... 

Si eso lo he echo en alguna ocasión cuando las cuestiones son cuantiosas, lo único que me toma desprevenido es que aparezca en el cuadro de herramientas, me parece difícil, no se... 

Yo deje de usar esta forma porque al no aparecer en el cuadro de herramienta debería manejarlo a mano algo así:

[code linenumbers=false syntax=gambas]Public mm As TBox

Public Sub Form_Open()
mm = New TBox(Me)
With mm
  .Top = 0
  .Left = 0
  .w = 100
  .h = 100
End With

End[/code]

A mi y aclaro solo a mi me pareció mas practico reunir en una biblioteca funciones que manejen objetos a mis necesidades así solo debía de incluirla en cualquier proyecto en el cual quisiera y usarlas...


Empero si me demuestras que se puede o alguien de los piadosos se atreve a mostrarme como hacerlo bienvenido sea...


-----------------------------------
codificador
Martes, 24 Junio 2014, 06:08

Re: Esta Función Esta Correcta?
-----------------------------------
[quote user="osunaosuna" post="22173"]Oye tu codificador!!! Hola... 

Si eso lo he echo en alguna ocasión cuando las cuestiones son cuantiosas, lo único que me toma desprevenido es que aparezca en el cuadro de herramientas, me parece difícil, no se... 

Yo deje de usar esta forma porque al no aparecer en el cuadro de herramienta debería manejarlo a mano algo así:
 [/quote]
de aparecer aparece en otros ides es lo mas facil pero en gambas el proceso es mas manual

añades una nuevo archivo de clase  
le colocas un [b]nombre texbox_minusculas [/b]   y  export

en el codigo 

[code linenumbers=false syntax=gambas]inherits textbox 
export[/code]

ejecutas con f5 y detienes y aparece el nuevo componete en el cuadro de herramientas  casi listo para usar
lo que no recuerdo era el codigo para añadirle eventos y propiedades y lo demas
solo recuerdo que era con [b]observer [/b]para los eventos



lo tenia hecho pero lo perdi :cry: 




en gambas 2 no  aparecia y se debia hacer de la forma que dices


-----------------------------------
jsbsan
Martes, 24 Junio 2014, 13:12

Re: Esta Función Esta Correcta?
-----------------------------------
Codificador:

Aqui teneis la información que da la documentación oficial sobre como crear componentes  para gambas3:

[url=http://gambaswiki.org/wiki/dev/gambas?l=es]Enlace

Saludos


-----------------------------------
osunaosuna
Martes, 24 Junio 2014, 13:58

Re: Esta Función Esta Correcta?
-----------------------------------
Codificador....

Si lo de Inherits Export lo se lo que decía es que no creía que apareciera, peeeero hice las pruebas y acá traigo los resultados. si se puede pero deben colocarse varias constantes necesarias mi prueba para que sea mas o menos viables usarlo así como tu dices seria así...

[code linenumbers=false syntax=gambas]
Inherits TextBox

Export

'------------------------estas deben estar para que se vea en tiempo real en el ide 
Public Const _IsControl As Boolean = True
Public Const _DefaultSize As String = "6,6"
Public Const _Family As String = "*"
Public Const _Group As String = "Special"
Public Const _DefaultEvent As String = "Click"
Public Const _DrawWith As String = "TextBox"
Public Const _DefaultArrangement As String = "V" ' Arrange.Vertical

'******************************************************************************************************
'esta de las properti las saque porqu no tengo gana de declarar todas las propiedades
'ya que si pones una nueva al parecer no las suma a las heredas sino que solo te muestra
'la que pones ahi, puede que lo este haciendo mal
'NOTE: Seguir viendo esto.
'
'Public Const _Properties As String = "X{Position},Y{Position}"

Public Sub _new()
'------------------------Se mira 
    Dim oChusma As Observer
    oChusma = New Observer(Me) As "TextBox" 
End Sub

Public Sub TextBox_Change()
'------------------------puede que sea
 Debug "algo esta sucediendo"

End

[/code]


-----------------------------------
osunaosuna
Martes, 24 Junio 2014, 14:01

Re: Esta Función Esta Correcta?
-----------------------------------
Y como dice jsbsan... ahí esta la documentación solo que a mi no me funco lo de la posición, al ejecutar nunca aparecía en la posición que le daba yo en ide.


-----------------------------------
didier18
Martes, 24 Junio 2014, 16:02

Re: Esta Función Esta Correcta?
-----------------------------------
Hola amigos

Puede que haya encontrado la solución
Y la explicación ...

Aquí hay un código que funciona para mí.

Debe crear una hoja con
1 TextBox1
1 Label1
1 Botón para salir de nombre cmd_Quitter
1 botón para limpiar el nombre cmd_Effacer
1 Nombre del botón cmd_Calculer para calcular

Coloque el código siguiente en la hoja FMain.Class ...

' Gambas class file

Public Sub _new()

End

Public Sub Form_Open()
TextBox1.Text = ""                                  'que salga del cuadro de texto
Label1.Caption = ""                                 'borra la etiqueta
End
Public Sub cmd_Effacer_Click()                      'cuando alguno de vosotros al pulsar este botón
Label1.Caption = ""                                 'borra la etiqueta
TextBox1.Text = ""                                  'que salga del cuadro de texto
TextBox1.SetFocus                                   'ponemos el foco
End

Public Sub TextBox1_Change()                        'cuando el valor cambia
TextBox1.Text = UCase$(TextBox1.Text)               'al presionar una tecla en los cambios en CAPS
End

Public Sub cmd_calculer_Click()                     'Se utiliza para calcular el peso de una palabra
Dim i, j, count As Integer = 0
Dim LeMot, LeComm As String

j = Len(TextBox1.Text)                              'j contiene el número de cartas de TextBox1
If j < 2 Then                                       'si j es menos de 2 ...
i = Asc(TextBox1.Text)                              'i es el valor ASCII de la carta que figura en Cuadrodetexto1
Else                                                'de otra manera
  For count = j To 1 Step -1                          'contamos x ... 1 en pasos de -1
    i = i + Asc(TextBox1.Text, count)                   'el valor ASCII de todas las letras se cuentan
  Next
Endif
Label1.Caption = i                                  '(el peso de la palabra) se muestra el valor ASCII de las letras
TextBox1.SetFocus                                   'el foco está en TextBox1 contraseña para una nueva palabra ...
End

Public Sub cmd_Quitter_Click()
Me.Close
End

Y conseguir una calculadora de peso palabras.
Heuuu ... El peso en curso ASCII

Vamos a jugar ...

No entiendo por qué usted quiere poner una cadena en el evento de cambio de TextBox?

De hecho, el evento de cambio se produce antes de la cadena a traducir.

Nada impide establecer la secuencia de la secuencia después de entrar en el texto ...

Traté de comentar el código en español, puede no ser muy claro, pero es más fácil para que usted entienda ...

Buen día


-----------------------------------
codificador
Martes, 24 Junio 2014, 19:52

Re: Esta Función Esta Correcta?
-----------------------------------
[quote user="jsbsan" post="22180"]Codificador:

Aqui teneis la información que da la documentación oficial sobre como crear componentes  para gambas3:

[url=http://gambaswiki.org/wiki/dev/gambas?l=es]Enlace

Saludos[/quote]
no eso no eso es para crear controles desde cero

esto es diferente es usando la herencia añadirle   funcionalidades  a los controles existentes
eso es algo muy util 

por ejemplo en este hilo podemos añadirle una opcion de que sea un texbox de solo mayusculas
escribiendo el codigo una sola vez  y reutilizar el archivo de clase en los  proyectos futuros

o  puedes hacer un texbox que cambie de color si es que tiene algo escrito
'-------------------


[quote user="osunaosuna" post="22182"]Codificador....

Si lo de Inherits Export lo se lo que decía es que no creía que apareciera, peeeero hice las pruebas y acá traigo los resultados. si se puede pero deben colocarse varias constantes necesarias mi prueba para que sea mas o menos viables usarlo así como tu dices seria así...[/quote]

 solo en gambas 3 en las versiones anteriores no aparece
en ides de otro lenguaje parecido a gambas  aparece y  por  eso busque el como hacer lo mismo en gambas

'-----------------



con esto es suficiente no es necesario colocar esas constantes

no se ve bien en el ide pero al ejecutar funciona perfectamente
imagino que falta algo par que se vea bien en el ide
quizas una constante nose

pero como funciona bien al ejecutar nunca lo investigue



fuentes->nuevo->clase  marcar export
 

[code linenumbers=false syntax=gambas]
Inherits TextBox

Export
 
Public Sub _new()
'------------------------Se mira 
    Dim oChusma As Observer
    oChusma = New Observer(Me) As "TextBox" 
End Sub

Public Sub TextBox_Change()
 - 
 message("algo esta sucediendo","nose")

End

[/code] 

ejecutar  para que aparezca el control  nuevo en el ide


-----------------------------------
osunaosuna
Miercoles, 25 Junio 2014, 00:08

Re: Esta Función Esta Correcta?
-----------------------------------
codificador...  :shock: 

Definitivamente así fue... excelente... Ya estoy reescribiendo mi biblioteca que antes funcionaba pasando le el objeto para que realice las funciones necesarias. 

Creería yo que si compilo el código en una biblioteca al agregarla al proyecto la tomara... investigare pero de antemano creo que si... gracias y éxitos...


-----------------------------------
codificador
Miercoles, 25 Junio 2014, 01:10

Re: Esta Función Esta Correcta?
-----------------------------------
[quote user="osunaosuna" post="22187"]codificador...  :shock: 

Definitivamente así fue... excelente... Ya estoy reescribiendo mi biblioteca que antes funcionaba pasando le el objeto para que realice las funciones necesarias. 

Creería yo que si compilo el código en una biblioteca al agregarla al proyecto la tomara... investigare pero de antemano creo que si... gracias y éxitos...[/quote]

compilar??

si me referia a un archivo.class de codigo fuente

para reutilizar  en este caso el texbox 
fuentes->nuevo->clase ----------------->pestaña existente

buscar el archivo de clase estara en .src   en eldirectorio donde guardaron el proyecto que lo crearon

ok y ejecutar para que aparezca en el ide



prefiero este modo que compilar  componente adicionales
en caso de cualquier ajuste es mas rapido modificar  y  queda todo en el ejecutable sin esas a veces molestas dependencias


edit

Public Const _DrawWith As String = "TextBox"

con eso se dibuja  como texbox en el ide

lo vi en un mensaje del hilo y en el http://gambaswiki.org/wiki/dev/gambas?l=es que sirve parcialmente para esto


-----------------------------------
osunaosuna
Miercoles, 25 Junio 2014, 03:06

Re: Esta Función Esta Correcta?
-----------------------------------
Si lo de la constante también le agregue:

[code linenumbers=false syntax=gambas]
 Public Const _Group As String = "Special"
[/code]

Para poder seleccionar la pestaña donde quiero que estén.

Y si entiendo perfectamente lo que dices. Pero a mi forma de verlo  Crear una biblioteca compilada es mas fácil que estar agregando archivos de código, yo lo trabaje siempre así casi todas las aplicaciones que he echo son así de modulares y ahora mas aun... 

Siempre cree las bibliotecas con funciones que utilizo mucho y las compile luego las agrego al proyecto en el cual las necesito y las tengo accesibles como si fueran nativas mis clases.... Siempre las creo las "Soluciones" para que sean lo mas amplias posibles así no necesito estar re acomodando el código:

Me explayo un poco mas como lo hago yo...

Tengo una clase que la llamo Conex que se dedica conectar con bases de datos y en esta misma ya tengo incluidas búsquedas por parámetros listados y rellenado de las grillas del tipo GridView con funciones para editar las celdas buscar dentro de la grilla sumar columnas cambiar a formato moneda fecha ext.

cada ves que necesito trabajar con bases de datos la incluyo en el ide y ya las tengo listas para usar en cualquier parte del código... 

En definitiva seria lo mismo, desde mi humilde punto de vista a esta forma la veo mas parecida al famoso POO. 

Pero vuelvo a insistir es prácticamente lo mismo.


