VERSION 1.0 CLASS BEGIN MultiUse = -1 'True Persistable = 0 'NotPersistable DataBindingBehavior = 0 'vbNone DataSourceBehavior = 0 'vbNone MTSTransactionMode = 0 'NotAnMTSObject END Attribute VB_Name = "cDelta" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = True Attribute VB_PredeclaredId = False Attribute VB_Exposed = False Option Explicit ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Objeto responsável por armazenar o delta de uma coordenada ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Coordenada Inicial Private c2_Initial As c2DPoint ' Coordenada final Private c2_Final As c2DPoint ' Coordenada de diferença Private c2_Diff As c2DPoint ' Guarda se houve alterações Private bl_MayRefresh As Boolean ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Propriedade do Initial ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Property Get Initial() As c2DPoint ' Retorna valor Set Initial = c2_Initial End Property Public Property Let Initial(c2Input As c2DPoint) ' Seta que precisa atualizar bl_MayRefresh = True ' Seta valor Set c2_Initial = c2Input End Property ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Propriedade do Final ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Property Get Final() As c2DPoint ' Retorna valor Set Final = c2_Final End Property Public Property Let Final(c2Input As c2DPoint) ' Seta que precisa atualizar bl_MayRefresh = True ' Seta valor Set c2_Final = c2Input End Property ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Propriedade do Diff ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Property Get Diff() As c2DPoint ' Verifica se tem que atualizar If bl_MayRefresh Then ' Seta que não precisa mais atualizar bl_MayRefresh = False ' Atualiza RecalcDiff End If ' Retorna valor Set Diff = c2_Diff End Property ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Procedimentos para cálculo de diferença ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private Sub RecalcDiff() On Error Resume Next RecalcDiff_X RecalcDiff_Y End Sub Private Sub RecalcDiff_X() On Error GoTo ErrTreat: ' Verifica se ambos X valores são válidos If (Initial.X <> LN_INVALID_VALUE) And (Final.X <> LN_INVALID_VALUE) Then ' Calcula c2_Diff.X = Abs(Initial.X - Final.X) Else ' Seta inválido c2_Diff.X = LN_INVALID_VALUE End If Exit Sub ErrTreat: ' Seta inválido c2_Diff.X = LN_INVALID_VALUE End Sub Private Sub RecalcDiff_Y() On Error GoTo ErrTreat: ' Verifica se ambos X valores são válidos If (Initial.Y <> LN_INVALID_VALUE) And (Final.Y <> LN_INVALID_VALUE) Then ' Calcula c2_Diff.Y = Abs(Initial.Y - Final.Y) Else ' Seta inválido c2_Diff.Y = LN_INVALID_VALUE End If Exit Sub ErrTreat: ' Seta inválido c2_Diff.Y = LN_INVALID_VALUE End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Procedimentos de criação e destruição do objeto ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private Sub Class_Initialize() ' Inicia objetos e variáveis Set c2_Initial = New c2DPoint Set c2_Final = New c2DPoint Set c2_Diff = New c2DPoint bl_MayRefresh = True End Sub