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

#12
en başa eklenecek değişken ve sabitler
    Dim XTan, YTan As Long
    Dim YariCap, nCentreLeft, nCentreUp, GcGn, YrCpDis, YrCpKdrn, YrCpic As Single
    Dim BtnX, BtnY As Single
    Const Pi = 3.142857
değişkenlere değer atamak için form yükle me olayına eklenen kodlar
Private Sub Form_Load()
nCentreUp = (Me.Resim0.Height / 2) 'resim merkezinin konumu
nCentreLeft = (Me.Resim0.Width / 2)
BtnX = Me.Resim0.Top - Me.BtnKnm.Height / 2
BtnY = Me.Resim0.Left - Me.BtnKnm.Height / 2
    YariCap = Me.Resim0.Height / 2 'yariçap
    ' aşağıdaki 3 oran resmin özellikleriyle ilgili _
    mevcut resimdeki kadranın içindeki ve dışındaki rakamların resme göre orantısal konumu _
    -en/boy=1 olmak kaydıyla- resmi büyütüp küçültebilirsiniz _
    ama bu resim yerine başka resim kullanmak isterseniz _
    bu oranları tekrar hesaplamanız gerekir
   
    YrCpDis = 0.929 '13 / 14
    YrCpKdrn = 0.857 '6 / 7
    YrCpic = 0.67 '67 / 100
    GcGn = YariCap * (YrCpKdrn) 'gecegündüz hesabı

End Sub
saati ve botonun konumunu hesaplayan fonksiyon
Function SaatBul() As String
Dim SonDgr, Teta As Single
Dim Aci As Integer
SaatBul = ""
If YTan = 0 Then Exit Function
SonDgr = Atn(XTan / YTan) * 180 / 3.142857 'radyan olan açıyı dereceye çevirmek için

If YTan < 0 Then Aci = 180 'çeyrekliklerin durumuna göre açı düzeltme
If XTan < 0 And YTan > 0 Then Aci = 360

SonDgr = 2 * (Aci + SonDgr)
UznTwips = Sqr((XTan) ^ 2 + (YTan) ^ 2) 'fare imlecinin resmin merkezine uzaklığı

SaatTxt = Format(SonDgr \ 60, "00") 'dereceden saat ve dakikaya dönüştürme
DkTxt = Format(SonDgr Mod 60, "00")

Carpan = YrCpDis 'kırmızı dairenin, çemberin dışında olmasını sağlar
If UznTwips < GcGn Then
    SaatTxt = SaatTxt + 12
    Carpan = YrCpic 'kırmızı dairenin, çemberin içinde olmasını sağlar
End If
Teta = (Atn(XTan / YTan) + Aci * Pi / 180) '
Me.BtnKnm.Top = IIf(BtnX + YariCap * (1 - (Carpan) * Cos(Teta)) < 1, 1, BtnX + YariCap * (1 - (Carpan) * Cos(Teta)))
Me.BtnKnm.Left = IIf(BtnY + YariCap * (1 + (Carpan) * Sin(Teta)) < 1, 1, BtnY + YariCap * (1 + (Carpan) * Sin(Teta)))

SaatBul = SaatTxt & ":" & DkTxt
DoEvents
End Function
resme tkladığımızda saat alma kodu ve fare konumunun kodu
Private Sub Resim0_Click()
Me.Metin10 = SaatBul
End Sub

Private Sub Resim0_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)
    XTan = x - nCentreLeft
    YTan = nCentreUp - Y
    Me.LblSaat.Caption = SaatBul

End Sub
kırmızı çerçeve yerine yuvarlak buton kullandım
dilerim işinize yarar

titremeyi engelleyemedim
.rar AnalogSaat_hy3.rar (Dosya Boyutu: 235,63 KB | İndirme Sayısı: 4)
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da

Bu Konudaki Yorumlar
RE: Analog Saat Üzerinde Mouse İle Tıklayarak Saat Seçmek - Yazar: berduş - 17/05/2020, 16:23