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

2 comentarios:

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

    ResponderBorrar