Access' Te Class Module Oluşturma

1 2
17/07/2023, 17:17

truhi

Merhaba,

Formda 20 tane metin kutusu mevcut, bu metin kutusununa tıkladığımız zaman aşağıdaki kodun çalışması için;
her bir metin kutusuna kod yazmadan Excel' de olduğu gibi class oluşturarak çözebilir miyiz?


Kod:
Private Sub m1_1_Enter()

If m1_1.BackColor = -2147483643 Then
    m1_1.BackColor = 0
ElseIf m1_1.BackColor = 0 Then
    m1_1.BackColor = -2147483643
End If

End Sub

teşekkürler,
iyi Çalışmalar.
18/07/2023, 13:51

truhi

(17/07/2023, 17:17)truhi yazdı: Merhaba,

Formda 20 tane metin kutusu mevcut, bu metin kutusununa tıkladığımız zaman aşağıdaki kodun çalışması için;
her bir metin kutusuna kod yazmadan Excel' de olduğu gibi class oluşturarak çözebilir miyiz?


Kod:
Private Sub m1_1_Enter()

If m1_1.BackColor = -2147483643 Then
    m1_1.BackColor = 0
ElseIf m1_1.BackColor = 0 Then
    m1_1.BackColor = -2147483643
End If

End Sub

teşekkürler,
iyi Çalışmalar.

Merhaba,
Class oluşturmayla ilgili ekli dosyadaki bir kod buldum ama;

teşekkürler, iyi çalışmalar.
19/07/2023, 08:30

atoykan

Bir module ekleyin ve aşağıdaki kodu ekleyin
Kod:
Option Compare Database
Option Explicit

Dim WithEvents txtBoxes As Access.Forms.Controls

Private Sub Form_Load()
    Set txtBoxes = Me.Controls
End Sub

Private Sub txtBoxes_Enter(Index As Integer)
    Dim currentTextBox As Control
    Set currentTextBox = Me.Controls(txtBoxes(Index).Name)
    
    If currentTextBox.BackColor = -2147483643 Then
        currentTextBox.BackColor = 0
    ElseIf currentTextBox.BackColor = 0 Then
        currentTextBox.BackColor = -2147483643
    End If
End Sub
bu kod form yüklenirken textbox kontrollerini tanımlayıp herbirinin Enter olayını izleryecektir. Herhangi bir textbox tıklandığında da txtBoxes_Enter olayı tetiklenecek ve arka plan rengini değiştirecektir.
20/07/2023, 17:10

truhi

(19/07/2023, 08:30)atoykan yazdı: Bir module ekleyin ve aşağıdaki kodu ekleyin
Kod:
Option Compare Database
Option Explicit

Dim WithEvents txtBoxes As Access.Forms.Controls

Private Sub Form_Load()
    Set txtBoxes = Me.Controls
End Sub

Private Sub txtBoxes_Enter(Index As Integer)
    Dim currentTextBox As Control
    Set currentTextBox = Me.Controls(txtBoxes(Index).Name)
    
    If currentTextBox.BackColor = -2147483643 Then
        currentTextBox.BackColor = 0
    ElseIf currentTextBox.BackColor = 0 Then
        currentTextBox.BackColor = -2147483643
    End If
End Sub
bu kod form yüklenirken textbox kontrollerini tanımlayıp herbirinin Enter olayını izleryecektir. Herhangi bir textbox tıklandığında da txtBoxes_Enter olayı tetiklenecek ve arka plan rengini değiştirecektir.

Hocam teşekkürler,
buradaki kodlar formun içine mi yazılacak? yoksa eklenecek bir modül içine yazılacak,

sanırsam bu kodun form' un kendine modülüne yazılması gerekecek?
Kod:
Private Sub Form_Load()
    Set txtBoxes = Me.Controls
End Sub
iyi Çalışmalar.
23/07/2023, 14:21

feraz

Bende kodlar çalışmadığı için size arşivimden bir örnek atım.

[Event Procedure] olarak beraber kullanılıyor galiba class ile ama excelde bu yoktu.
23/07/2023, 14:30

feraz

Buda class sız alternatif arşivden.


Kod:
Option Compare Database

Private Sub Form_Load()

    Dim ctl As Control
    
    For Each ctl In Me.Controls
        Select Case ctl.ControlType
            Case acTextBox, acComboBox 'TextBox ve ComboBox icin
                If ctl.Tag = "degistiginde" Then
                    ctl.OnChange = "=Degisti([" & ctl.Name & "])"
                    ctl.OnGotFocus = "=ArdRenk([" & ctl.Name & "])"
                    ctl.OnLostFocus = "=ArdRenkCik([" & ctl.Name & "])"
                End If
            Case acCommandButton 'CommandButton ve TextBox ve ComboBox icin
                If ctl.Tag = "degistiginde" Then
                    ctl.OnGotFocus = "=ArdRenk([" & ctl.Name & "])"
                    ctl.OnLostFocus = "=ArdRenkCik([" & ctl.Name & "])"
                End If

        End Select
    Next ctl

End Sub

Public Function Degisti(ctl As Control) 'TextBox ve ComboBox icin
    Me.Metin0 = ctl.Text
End Function

Public Function ArdRenk(ctl As Control) 'TextBox ve ComboBox ve CommandButton icin
    ctl.BackColor = vbGreen
End Function

Public Function ArdRenkCik(ctl As Control) 'TextBox ve ComboBox ve CommandButton icin
    ctl.BackColor = vbWhite
End Function
1 2