Allanando el camino a los iniciados en Gambas, porque programar en Gambas es un placer!!
jueves, 20 de febrero de 2020
La clase MaxZ
En el programa VisorRV1960 de forma muy repetitiva estoy usando botones que lo que hacen es maximizar el formulario y minimizarlo, pues bien era hora de crear una clase pues esa es la esencia de una clase que cuando hay un tarea repetitiva en vez de repetir el código se usa una clase.
El código esta en la granja de gambas, después amplio el post, saludos
codigo de clase:
' Gambas class file
'gb.settings debe estar incluida en el proyecto
Export
Inherits UserControl
Public Const _Properties As String = "*,Borde=true,Ayuda,Pintura,IconoMax,IconoMin"
Public Const _IsControl As Boolean = True
Public Const _DefaultEvent As String = "Clic"
Public Const _DefaultSize As String = "4,4"
Public Const _Group As String = "Form"
Static Public MaxZs As New MaxZ[]
Event Clic
Property Read Maximizar As Boolean
Property Borde As Boolean
Property Ayuda As String
Property IconoMax As Picture
Property IconoMin As Picture
Property Pintura As Picture
Private $FMaxZ As FMaxZ
Private $Amo As Form
Private $Borde As Boolean
Private $Ayuda As String
Private $IconoMax As Picture
Private $IconoMin As Picture
Private $Pintura As Picture
Private $Maximizado As Boolean
Public Sub _new()
$FMaxZ = New FMaxZ(Me) As "evMaxz"
Me.Proxy = $FMaxZ
ObtenerForm(Me.Parent)
MaxZs.Add(Me)
End
Private Sub ObtenerForm(padre As Object)
If padre.parent Then
If Object.Is(padre.parent, "Form") Then
$Amo = padre.parent
Else
ObtenerForm(padre.parent)
Endif
Else
'Sino tiene parent quiere decir que es un formulario
If Object.Is(padre, "Form") Then
$Amo = padre
Endif
Endif
End
Public Sub _Click()
Raise Clic
If IsNull($amo) Then Return
$Amo.Maximized = Not $Amo.Maximized
$Maximizado = $Amo.Maximized
ActualizarIcono
Settings[Me.Name & "/" & Me.Name & "_Maximizar"] = $Amo.Maximized
Settings.Save
End
Public Sub ActualizarIcono()
' If $amo.Maximized Then
If $Maximizado Then
$FMaxZ.btnIcono.Picture = $IconoMin
Else
$FMaxZ.btnIcono.Picture = $IconoMax
Endif
End
Public Sub Borrar()
Settings.Clear(Me.Name)
Settings.Save
End
Static Public Sub BorrarTodos() ''
Dim MaxZx As MaxZ
For Each MaxZx In MaxZs
Settings.Clear(MaxZx.Name)
Next
Settings.Save
End
Private Function Borde_Read() As Boolean
Return $Borde
End
Private Sub Borde_Write(Value As Boolean)
$Borde = Value
$FMaxZ.btnIcono.Border = Value
End
Private Function Maximizar_Read() As Boolean
$Maximizado = Settings[Me.Name & "/" & Me.Name & "_Maximizar", False]
ActualizarIcono
Return Settings[Me.Name & "/" & Me.Name & "_Maximizar", False]
End
Private Function Ayuda_Read() As String
Return $Ayuda
End
Private Sub Ayuda_Write(Value As String)
$Ayuda = Value
$FMaxZ.btnIcono.Tooltip = Value
End
Private Function IconoMax_Read() As Picture
Return $IconoMax
End
Private Sub IconoMax_Write(Value As Picture)
$IconoMax = Value
End
Private Function IconoMin_Read() As Picture
Return $IconoMin
End
Private Sub IconoMin_Write(Value As Picture)
$IconoMin = Value
End
Private Function Pintura_Read() As Picture
Return $Pintura
End
Private Sub Pintura_Write(Value As Picture)
$Pintura = Value
$FMaxZ.btnIcono.Picture = Value
End
Codigo de formulario:
Public Sub Form_Open()
Me.Maximized = MaxZ1.Maximizar
End
Suscribirse a:
Comentarios de la entrada (Atom)
interesante, deje de publicar articulos de gambas porque estoy absorto en algo con php pero se me acerca la epoca donde hare cosas en gambas y te colaborare con articulos
ResponderBorrarbien, será un placer ver tus aportes!! Saludos
Borrar