Skip to main content

AccessTr.neT


Analog Saat Üzerinde Mouse İle Tıklayarak Saat Seçmek

Analog Saat Üzerinde Mouse İle Tıklayarak Saat Seçmek

Çözüldü #1
eklediğim analog saat örneklerinde 

Analog Saat Ve Trigonometri

cizgilerin yerini belirlerken saatin saniya dakika saat değerleri kullanılıyor
yani cizgilerin uzerinde herhangi bir yere tıklarsak o zamankıi saate gideceğiz demektir değil mi
mesela analog sattin akrebi 2 dakikada 1 derecelik bir ilerleme kaydediyor değil mi
diyelim ki biz analog saatin 2 ile 3 arasında bir yere tıkladık. 
mouse x, y değerlerine göre 2:35 seçmiş olacağız veya 2:20 veya 2:51 vb
mouse analog saatin üzerinde gezerken Label içindeki saat değeri sürekli değişecek
bizde istediğimiz saat değerine ulaşınca mouse tuşunu bırakacağız ve saat alanına uygun saat değerini girmiş olacağız
nasıl yapabiliriz
@benbendedeilem
Son Düzenleme: 15/05/2020, 14:51, Düzenleyen: accessman.
Cevapla
#2
dosyanıza metin kutusu ekleyip aşağıdaki kodları eklerseniz isteğiniz olur bence

Visual Basic Code
Dim XTan, YTan As Long

Private Sub Resim0_Click()
Dim SonDgr As Single
Dim Aci As Integer
SonDgr = Atn(XTan / YTan) * 180 / 3.142857
If XTan > 0 And YTan < 0 Then Aci = 180
If XTan < 0 And YTan < 0 Then Aci = 180
If XTan < 0 And YTan > 0 Then Aci = 360
SonDgr = 2 * (Aci + SonDgr)
Me.Metin10 = SonDgr \ 60 & ":" & SonDgr Mod 60
End Sub

Private Sub Resim0_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Const pi = 3.142857
    Const nCentreLeft = (7 * 567), nCentreUp = (7 * 567)
    XTan = X - nCentreLeft
    YTan = nCentreUp - Y
End Sub

Cevapla
#3

Visual Basic Code
Private Sub goster()
    Dim SonDgr As Single
    Dim Aci As Integer
    SonDgr = Atn(XTan / YTan) * 180 / 3.142857
    If XTan > 0 And YTan < 0 Then Aci = 180
    If XTan < 0 And YTan < 0 Then Aci = 180
    If XTan < 0 And YTan > 0 Then Aci = 360
    SonDgr = 2 * (Aci + SonDgr)
    Me.Metin20 = SonDgr \ 60 & ":" & SonDgr Mod 60
End Sub

Private Sub Resim0_Click()
    Me.Metin21 = Me.Metin20
End Sub

Private Sub Resim0_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Const pi = 3.142857
    Const nCentreLeft = (840), nCentreUp = (840)
    XTan = X - nCentreLeft
    YTan = nCentreUp - Y
    goster
End Sub



böyle olsa mouse gezerken kaç olduğu görülür tıklatıncada değeri kutuya yazar
ama bazen şu satır

Visual Basic Code
SonDgr = Atn(XTan / YTan) * 180 / 3.142857

divizion by zero hatasına düşüyor

@benbendedeilem
Son Düzenleme: 15/05/2020, 17:37, Düzenleyen: accessman.
Cevapla
#4
birkaç ufak değişiklikle dosya aşağıdadır

Visual Basic Code
Private Sub Resim0_Click()
Me.Metin10 = SaatBul ' SonDgr \ 60 & ":" & SonDgr Mod 60
End Sub

Private Sub Resim0_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Const pi = 3.142857
    Const nCentreLeft = (7 * 567), nCentreUp = (7 * 567)
    XTan = X - nCentreLeft
    YTan = nCentreUp - Y
    Me.LblSaat.Caption = SaatBul
End Sub

Function SaatBul() As String
Dim SonDgr As Single
Dim Aci As Integer
SaatBul = ""
If YTan = 0 Then Exit Function
SonDgr = Atn(XTan / YTan) * 180 / 3.142857

If XTan > 0 And YTan < 0 Then Aci = 180
If XTan < 0 And YTan < 0 Then Aci = 180
If XTan < 0 And YTan > 0 Then Aci = 360

SonDgr = 2 * (Aci + SonDgr)
SaatBul = IIf(SonDgr \ 60 = 0, 12, SonDgr \ 60) & ":" & SonDgr Mod 60
End Function


tam olarak kaçtayken 0'a bölme hatası veriyor?
kodu düzelttim dilerim hata vermez
dosya 12. mesajdaki  AnalogSaat_hy2 dosyasında

Son Düzenleme: 15/05/2020, 17:38, Düzenleyen: berduş.
Cevapla
#5
buda benden yardımlarınız için teşekkürler

peki şöyle olsa içteki rkamların üzerine gelince 13-24 arasını gösterse 
[Resim: do.php?img=10208]
.rar Database7.rar (Dosya Boyutu: 253,1 KB | İndirme Sayısı: 1)
@benbendedeilem
Cevapla
#6
Olur da onun için dış çember için yarıçapı bilmek gerekiyor
Uzunluk= (xtan^2 + ytan^2)^0.5 formulunu kullanip çember yarıçapından büyükse +12 ile saat 0-24 formatina donusturebilirsiniz

dosyanın son hali çemberin dışında 12-24, içinde 0-12 gösterir
.rar AnalogSaat_hy2.rar (Dosya Boyutu: 234,34 KB | İndirme Sayısı: 3)
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da