Páginas (2): 1 2   
Shordi   10-03-2023, 19:30
#1
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.
Archivos adjuntos
.gz
tipos-0.0.1.tar.gz (Tamaño: 11.94 KB Descargas: 4)

No podemos regresar
Shell   10-03-2023, 19:48
#2
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

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shordi   10-03-2023, 21:17
#3
¿Pero así se consigue el el IDE te lo ofrezca en el desplegable de la propiedad? Es lo que busco.

No podemos regresar
Shell   10-03-2023, 22:22
#4
(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"

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shell   10-03-2023, 23:46
#5
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
Última modificación: 11-03-2023, 00:00 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shordi   11-03-2023, 01:26
#6
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

No podemos regresar
Shell   11-03-2023, 11:58
#7
(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]

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shordi   11-03-2023, 14:13
#8
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

No podemos regresar
tincho   11-03-2023, 14:32
#9
Shordi: Yo aplique esos cambios y funciona en mi IDE. El código de Shell esta correcto.
https://imgur.com/hBbJnXc

Adjunto el proyecto.
Archivos adjuntos
.gz
tipos-0.0.2.tar.gz (Tamaño: 11.87 KB Descargas: 1)
Última modificación: 11-03-2023, 15:39 por tincho.

1 Saludo.
Shell   11-03-2023, 18:14
#10
(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.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Páginas (2): 1 2   
  
Usuarios navegando en este tema: 3 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.