VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "clsPyth"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
' Objekt Pythagoras
Option Explicit

'Klasseninterne (nicht öffentliche) Variablen deklarieren
Dim m_a As Double            ' Kathete a
Dim m_b As Double            ' Kathete b
Dim m_c As Double            ' Hypotenuse c
Dim i As Integer

Public Property Get a() As Double     ' Lesen der Kathete a -Eigenschaft
  a = m_a
End Property

Public Property Let a(dNeua As Double)  ' Zuweisen der Kathete a - Eigenschaft
  m_a = dNeua
End Property

Public Property Get b() As Double    ' Lesen der Kathete b - Eigenschaft
  b = m_b
End Property

Public Property Let b(dNeub As Double) ' Zuweisen der Kathete b - Eigenschaft
  m_b = dNeub
End Property

Public Property Get c() As Double    ' Lesen der Hypotenuse c - Eigenschaft
 c = m_c
End Property

Public Property Let c(dNeuc As Double) ' Zuweisen der Hypotenuse c - Eigenschaft
 m_c = dNeuc
End Property

Public Sub Rechne_m_Sub(Index As Integer)        ' Methoden - Definition
'Bedingungen so besser formuliert als in Function (s. unten)
'Weshalb? Weil gewählte Option auf Form
'als Index übergeben wird
'So nicht auf Formobjekte zugegriffen
 If Index = 0 Then       'entspricht Option1(0)
    m_c = Sqr(a ^ 2 + b ^ 2)
    Form1.Text1(2) = Trim(Str(m_c))
 ElseIf Index = 1 Then   'entspricht Option1(1)
    m_b = Sqr(c ^ 2 - a ^ 2)
    Form1.Text1(1) = Trim(Str(m_b))
 Else                    'entspricht Option1(2)
    m_a = Sqr(c ^ 2 - b ^ 2)
    Form1.Text1(0) = Trim(Str(m_a))
 End If
End Sub

Public Function Rechne_m_Funktion()
'If-Bedingungen hier formmodulabhängig formuliert
'Geht auch, aber besser wie in SUB
If Form1.Option1(0) Then
    m_c = Sqr(a ^ 2 + b ^ 2)
    Form1.Text1(2) = Trim(Str(m_c))
 ElseIf Form1.Option1(1) Then
    m_b = Sqr(c ^ 2 - a ^ 2)
    Form1.Text1(1) = Trim(Str(m_b))
 Else
    m_a = Sqr(c ^ 2 - b ^ 2)
    Form1.Text1(0) = Trim(Str(m_a))
 End If
End Function

'Bereitet Hilfsskizze und TextBoxen vor
Public Sub ZeichneBild(Index As Integer)
  'Label auf Form (im Bild links) verstecken
  'Linien alle schwarz darstellen
  'TextBoxen leeren, wenn andere Option gewählt
  'Quasi ein Initialisieren
  For i = 0 To 2
    Form1.Text1(i) = ""
    Form1.Label4(i).Visible = False
    Form1.Text1(i).Enabled = True
    Form1.Line1(i).BorderColor = QBColor(0)
  Next
    'Gesuchte Größe hervorheben durch
    'Linienfarbe rot und Sichtbarmachen Label
    Form1.Line1(Index).BorderColor = QBColor(12)
    Form1.Label4(Index).Visible = True
    
  'Je nach Option auf TextBoxen einwirken
  Select Case Index
  Case 0  'a und b gegeben
    Form1.Text1(2).Enabled = False  'Textbox für c gesperrt
    Form1.Text1(0).SetFocus         'Fokus nach Textbox für a (oben)
  Case 1  'a und c gegeben
    Form1.Text1(1).Enabled = False  'Textbox für b gesperrt
    Form1.Text1(0).SetFocus         'Fokus nach Textbox für a
  Case 2  'b und c gegeben
    Form1.Text1(0).Enabled = False  'Textbox für a gesperrt
    Form1.Text1(1).SetFocus         'Fokus nach Textbox für b (Mitte)
  End Select
End Sub


