Comunidad Gambas-es

Versión completa: Constantes en el IDE. ¿Alguien sabe hacer ésto de otra forma?
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
Pongamos que quieres un control que sea un TextArea con una propiedad añadida que indique el tipo de Texto, por decir algo.

Lo llamaremos "Nota" y sería algo así:

GAMBAS
  1.  
  2.  
  3. Public Const _Properties As String = "*,Type{TextTypes.*}=Nota"
  4. Public Const _Group As String = "Form"
  5. Public Const _Similar As String = "TextArea"
  6. Public Const _DrawWith As String = "TextArea"
  7.  
  8. Property Type As Integer Use $type = 0



Para que el IDE te ofrezca los posibles valores de IDE creas otra clase exportada llamada "TextTypes":
GAMBAS
  1. ' Gambas class file
  2.  
  3.  
  4. Public Const Confidential As Integer = 3



Y todo funciona guay:
[Imagen: NdmpqMi.png]

Sin embargo, me suena que se podía hacer de otra manera resolviéndolo todo en la clase principal sin tener que declarar la segunda clase que contiene las constantes. ¿Lo he soñado?¿Alguien sabe cómo hacerlo?

Adjunto el micro proyecto para pruebas.

Saludos.
Cita:Sin embargo, me suena que se podía hacer de otra manera resolviéndolo todo en la clase principal sin tener que declarar la segunda clase que contiene las constantes. ¿Lo he soñado?¿Alguien sabe cómo hacerlo?

¿ Te refieres a la declaración de una enumeración ?. Varias constantes, que en vez de ser números se le pone nombres para hacerlo más fácil.

GAMBAS
  1. Public Enum lunes, martes, miercoles, jueves, viernes, sabado, domingo



Otro ejemplo con clases.

Main:

GAMBAS
  1. Public Sub Main()
  2.  
  3.   Dim cerveza As BebidaCerveza
  4.  
  5.   cerveza = New BebidaCerveza(BebidaCerveza.GUINNESS, Vaso.JARRA)
  6.   cerveza.servir
  7.  



Clase BebidaCerveza:

GAMBAS
  1. Public Enum AMBAR = 1, GUINNESS = 2, HEINEKEN = 3
  2.  
  3. Private $unvaso As Vaso
  4.  
  5. Public Sub _new(marca As Integer, medida As Integer)
  6.  
  7.   $marca = marca
  8.   smarca = Choose(marca, "AMBAR", "GUINNESS", "HEINEKEN")
  9.   $unvaso = New Vaso(medida)
  10.  
  11.  
  12. Public Sub servir()
  13.  
  14.   Print "Sirviendo " & $unvaso.getCentimetrosCubicos() & " cc. de cerveza " & smarca
  15.  



Clase Vaso:

GAMBAS
  1. Public Enum JARRA = 500, TUBO = 250, TERCIO = 333, CANA = 200
  2.  
  3.  
  4. Public Sub _new(cc As Integer)
  5.  
  6.   $cc = cc
  7.  
  8.  
  9.  
  10. Public Sub getCentimetrosCubicos() As Integer
  11.  
  12.   Return $cc
  13.  



Salida:
 
Cita: 
Sirviendo 500 cc. de cerveza GUINNESS

Saludos
¿Pero así se consigue el el IDE te lo ofrezca en el desplegable de la propiedad? Es lo que busco.
(10-03-2023, 21:17)Shordi escribió: [ -> ]¿Pero así se consigue el el IDE te lo ofrezca en el desplegable de la propiedad? Es lo que busco.

No lo he llevado a tu ejemplo, pero es un grupo de constantes y "públicas"
Algo así ?.

[Imagen: 3ObJiUH.png]

GAMBAS
  1.  
  2.  
  3. 'Public Const _Properties As String = "*,Type{TextTypes.*}=Nota"
  4. Public Const _Properties As String = "*,Type{Nota.Nota;Aviso;Memo;Confidential}=Nota"
  5. Public Const _Group As String = "Form"
  6. Public Const _Similar As String = "TextArea"
  7. Public Const _DrawWith As String = "TextArea"
  8.  
  9. Public Const Confidential As Integer = 3
  10.  
  11. Property Type As Integer Use $type = 0



Ahora con Enum.

GAMBAS
  1.  
  2.  
  3. Public Enum Nota, Aviso, Memo, Confidential
  4.  
  5. 'Public Const _Properties As String = "*,Type{TextTypes.*}=Nota"
  6. Public Const _Properties As String = "*,Type{Nota.Nota;Aviso;Memo;Confidential}=Nota"
  7. Public Const _Group As String = "Form"
  8. Public Const _Similar As String = "TextArea"
  9. Public Const _DrawWith As String = "TextArea"
  10.  
  11. 'Public Const Nota As Integer = 0
  12. 'Public Const Aviso As Integer = 1
  13. 'Public Const Memo As Integer = 2
  14. 'Public Const Confidential As Integer = 3
  15.  
  16. Property Type As Integer Use $type = 0


No lo sé. Eso lo reconoce el editor pero no sé si el IDE también. El lunes lo miro, que este finde no puedo acercarme al ordenador.

Saludos
(11-03-2023, 01:26)Shordi escribió: [ -> ]No lo sé. Eso lo reconoce el editor pero no sé si el IDE también. El lunes lo miro, que este finde no puedo acercarme al ordenador.

Pues no sé que será lo de abajo.  Rolleyes

[Imagen: rGqi6Bz.png]
He tenido 10 minutos libres y lo he comprobado: No funciona, tron.

No subas el código, sube el proyecto que estés usando entero, a ver si es algo de los componentes u qué...

Saludos
Shordi: Yo aplique esos cambios y funciona en mi IDE. El código de Shell esta correcto.
https://imgur.com/hBbJnXc

Adjunto el proyecto.
(11-03-2023, 14:32)tincho escribió: [ -> ]Shordi: Yo aplique esos cambios y funciona en mi IDE. El código de Shell esta correcto.

Genial, es la mejor forma de verlo con el vídeo que hiciste.
Páginas: 1 2