Comunidad Gambas-es
Constantes en el IDE. ¿Alguien sabe hacer ésto de otra forma? - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: Constantes en el IDE. ¿Alguien sabe hacer ésto de otra forma? (/thread-1281.html)

Páginas: 1 2


Constantes en el IDE. ¿Alguien sabe hacer ésto de otra forma? - Shordi - 10-03-2023

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í:

Código:
Export

Inherits TextArea

Public Const _Properties As String = "*,Type{TextTypes.*}=Nota"
Public Const _Group As String = "Form"
Public Const _Similar As String = "TextArea"
Public Const _DrawWith As String = "TextArea"

Property Type As Integer Use $type = 0

Para que el IDE te ofrezca los posibles valores de IDE creas otra clase exportada llamada "TextTypes":
Código:
' Gambas class file

Export

Public Const Nota As Integer = 0
Public Const Aviso As Integer = 2
Public Const Memo As Integer = 1
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.


RE: Constantes en el IDE. ¿Alguien sabe hacer ésto de otra forma? - Shell - 10-03-2023

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.

Código:
Public Enum lunes, martes, miercoles, jueves, viernes, sabado, domingo

Otro ejemplo con clases.

Main:

Código:
Public Sub Main()

  Dim cerveza As BebidaCerveza

  cerveza = New BebidaCerveza(BebidaCerveza.GUINNESS, Vaso.JARRA)
  cerveza.servir

End

Clase BebidaCerveza:

Código:
Public Enum AMBAR = 1, GUINNESS = 2, HEINEKEN = 3

Private $unvaso As Vaso
Private $marca As Integer
Private smarca As String

Public Sub _new(marca As Integer, medida As Integer)

  $marca = marca
  smarca = Choose(marca, "AMBAR", "GUINNESS", "HEINEKEN")
  $unvaso = New Vaso(medida)

End

Public Sub servir()

  Print "Sirviendo " & $unvaso.getCentimetrosCubicos() & " cc. de cerveza " & smarca

End

Clase Vaso:

Código:
Public Enum JARRA = 500, TUBO = 250, TERCIO = 333, CANA = 200

Private $cc As Integer

Public Sub _new(cc As Integer)

  $cc = cc

End


Public Sub getCentimetrosCubicos() As Integer

  Return $cc

End

Salida:
 
Cita: 
Sirviendo 500 cc. de cerveza GUINNESS

Saludos


RE: Constantes en el IDE. ¿Alguien sabe hacer ésto de otra forma? - Shordi - 10-03-2023

¿Pero así se consigue el el IDE te lo ofrezca en el desplegable de la propiedad? Es lo que busco.


RE: Constantes en el IDE. ¿Alguien sabe hacer ésto de otra forma? - Shell - 10-03-2023

(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"


RE: Constantes en el IDE. ¿Alguien sabe hacer ésto de otra forma? - Shell - 10-03-2023

Algo así ?.

[Imagen: 3ObJiUH.png]

Código:
Export

Inherits TextArea

'Public Const _Properties As String = "*,Type{TextTypes.*}=Nota"
Public Const _Properties As String = "*,Type{Nota.Nota;Aviso;Memo;Confidential}=Nota"
Public Const _Group As String = "Form"
Public Const _Similar As String = "TextArea"
Public Const _DrawWith As String = "TextArea"

Public Const Nota As Integer = 0
Public Const Aviso As Integer = 1
Public Const Memo As Integer = 2
Public Const Confidential As Integer = 3

Property Type As Integer Use $type = 0

Ahora con Enum.

Código:
Export

Inherits TextArea

Public Enum Nota, Aviso, Memo, Confidential

'Public Const _Properties As String = "*,Type{TextTypes.*}=Nota"
Public Const _Properties As String = "*,Type{Nota.Nota;Aviso;Memo;Confidential}=Nota"
Public Const _Group As String = "Form"
Public Const _Similar As String = "TextArea"
Public Const _DrawWith As String = "TextArea"

'Public Const Nota As Integer = 0
'Public Const Aviso As Integer = 1
'Public Const Memo As Integer = 2
'Public Const Confidential As Integer = 3

Property Type As Integer Use $type = 0



RE: Constantes en el IDE. ¿Alguien sabe hacer ésto de otra forma? - Shordi - 11-03-2023

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


RE: Constantes en el IDE. ¿Alguien sabe hacer ésto de otra forma? - Shell - 11-03-2023

(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]


RE: Constantes en el IDE. ¿Alguien sabe hacer ésto de otra forma? - Shordi - 11-03-2023

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


RE: Constantes en el IDE. ¿Alguien sabe hacer ésto de otra forma? - tincho - 11-03-2023

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

Adjunto el proyecto.


RE: Constantes en el IDE. ¿Alguien sabe hacer ésto de otra forma? - Shell - 11-03-2023

(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.