Class demeyeyim ama modül olabilir belki, tüm formlarda kullanılabilecek belli başlı durumlarda aktif nesnenin rengini yada fontunu değiştirmek gibi, yada onfocus gibi odaklanildiginda kullanılabilecek genel geçer durumlar için modül oluşturup modüle eklenebilir fonksiyon formload olayında da çağrılarsa sorun çıkarmaz diye düşünüyorum tabi birkaç ufak degisiklikle
(21/03/2020, 02:15)berduş yazdı: Class demeyeyim ama modül olabilir belki, tüm formlarda kullanılabilecek belli başlı durumlarda aktif nesnenin rengini yada fontunu değiştirmek gibi, yada onfocus gibi odaklanildiginda kullanılabilecek genel geçer durumlar için modül oluşturup modüle eklenebilir fonksiyon formload olayında da çağrılarsa sorun çıkarmaz diye düşünüyorum tabi birkaç ufak degisiklikle
Anladım gözüme çarpan bir durum daha var onuda birazdan soracağım
Mobilden takip ettiğim için anlamaya çalışıyorum kodları.
(20/03/2020, 23:15)berduş yazdı: öncelikle değiştiğinde çalışmasını istediğiniz metin kutularının IM/Tag özelliğine degistiginde yazın sonrada form load /form yüklendiğindeolayına aşağıdaki kodu ekleyin
Dim ctl As Control
For Each ctl In Me
If ctl.Tag = "degistiginde" Then
ctl.OnChange = "=Degisti([" & ctl.Name & "])"
End If
Next ctl
sonrada ilgili forma aşağıdaki fonksiyonu ekleyin
Public Function Degisti(ByRef ctl As Control)
Dim ctl2 As Control
Me.Metin0 = ""
For Each ctl2 In Me
If ctl2.Tag = "degistiginde" Then
If ctl2.Name = ActiveControl.Name Then _
Me.Metin0 = Me.Metin0 & "|" & IIf(Len(Nz(Trim(ctl2.Text))) = 0, ".", Trim(ctl2.Text)) Else _
Me.Metin0 = Me.Metin0 & "|" & Nz(Trim(ctl2), ".")
End If
Next ctl2
Me.Metin0 = Mid(Me.Metin0, 2)
End Function
metin0 değerini isgecmis ile değiştirin
Alttaki kodda ctl olarak parametre girmişiniz ve kullanmamışsınız function içinde ve bence gereksiz foreach kurmuşsunuz gibi sanki galiba..Çünkü zaten ilk yani üstteki kodda foreach ile döngü çalışırken control adlarını yolluyor function içine.Haksızmıyım?
Fonksiyonda zaten ctl tanimli oldugundan ctl2 dediginiz gibi gereksiz dogrudanctrl ile devam edilebilirdi ama 2. for each gerekli çünkü formloadda kullanılan for each metin kutularına olay atarken fonksiyonda kullanılani, değerleri metin kutusuna atıyor.
(20/03/2020, 23:15)berduş yazdı: öncelikle değiştiğinde çalışmasını istediğiniz metin kutularının IM/Tag özelliğine degistiginde yazın sonrada form load /form yüklendiğindeolayına aşağıdaki kodu ekleyin
Dim ctl As Control
For Each ctl In Me
If ctl.Tag = "degistiginde" Then
ctl.OnChange = "=Degisti([" & ctl.Name & "])"
End If
Next ctl
sonrada ilgili forma aşağıdaki fonksiyonu ekleyin
Public Function Degisti(ByRef ctl As Control)
Dim ctl2 As Control
Me.Metin0 = ""
For Each ctl2 In Me
If ctl2.Tag = "degistiginde" Then
If ctl2.Name = ActiveControl.Name Then _
Me.Metin0 = Me.Metin0 & "|" & IIf(Len(Nz(Trim(ctl2.Text))) = 0, ".", Trim(ctl2.Text)) Else _
Me.Metin0 = Me.Metin0 & "|" & Nz(Trim(ctl2), ".")
End If
Next ctl2
Me.Metin0 = Mid(Me.Metin0, 2)
End Function
metin0 değerini isgecmis ile değiştirin
Yani alıntıdaki function koduna alttaki gibi gibi örnek olarak döngüsüz topluca yazılabilir.Yada array içine control adları alınıpta olabilir.Neyse kafaları karıştırmayayım sonuçta çözülmüş.
Me.isgecmis = Nz(Me.isyeri1.text, ".") & "|" & Nz(Me.iskolu1, ".") & "|" & Nz(Me.yapis1, ".") & "|" & Nz(Me.isgirtar1, ".") & "|" & Nz(Me.isciktar1, ".") _
& "|" & Nz(Me.isyeri2, ".") & "|" & Nz(Me.iskolu2, ".") & "|" & Nz(Me.yapis2, ".") & "|" & Nz(Me.isgirtar2, ".") & "|" & Nz(Me.isciktar2, ".") _
& "|" & Nz(Me.isyeri3, ".") & "|" & Nz(Me.iskolu3, ".") & "|" & Nz(Me.yapis3, ".") & "|" & Nz(Me.isgirtar3, ".") & "|" & Nz(Me.isciktar3, ".")
Sanmıyorum. şu an hatırlamıyorum sayin @
accessman in dosyasında tablo olup olmadığını, ama ben çalışmayı tablosuz ve ilişkisiz formda yaptım, ayrica sayin @
accessman ilk mesajında .textin kullanılması gerektiğini belirtmişti yani metin kutusuna girilen yada silinen her harften sonra değerin isgecmis metin kutusuna atanması gerektiğini. Oysa sizin kodda son değer tek atanıyor, sadece ilk alan için anlık değişiklik dikkate alınıyor, diğerlerinde değil