Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Runda volymknappar?

Postades av 2002-08-20 23:31:08 - Benni Svensson, i forum visual basic - allmänt, Tråden har 15 Kommentarer och lästs av 919 personer

Finns det något sätt att göra rund volymknappar i VB som fungerar som t ex slider?


Svara

Sv: Runda volymknappar?

Postades av 2002-08-21 10:12:56 - Rasmus Hörstedt

Nja... det går väl med api men det är svårt... lättare om du sätter en bild istället, så skulle jag i alla fall ha gjort =) // R-mus


Svara

Sv: Runda volymknappar?

Postades av 2002-08-21 11:32:05 - Benni Svensson

Skulle du vilja utvekla dig litegranna/exempelkod?
Jag skall använda detta för att spara ner mina data ifrån min studioinstälning, och vill alltså göra enn applikation som så långt som möjligt liknar en mixer.
Tacksam för all hjälp


Svara

Sv: Runda volymknappar?

Postades av 2002-08-21 11:38:55 - Jonas Gauffin

jag har gjort en klass som tar och kollar hur du rör musen i en picturebox.
rör du den i en cirkel medurs så ökar den på ett procentvärde, om du drar moturs så minskar värdet.
vad som är kvar att fixa är att en bild i pictureboxen ska roteras när värdet ökas/minskas. men eftersom jag e kass på gfx programmering så överlåter jag det till någon annan.

Formulär:
Du ska ha en picturebox som heter Picture2 och en textbox som heter text1. Sedan är det bara att prova

Dim WithEvents slider As CVolumeSlider

Private Sub Form_Load()

'initiera klassen
Set slider = New CVolumeSlider

'tilldela den en picturebox
Set slider.MyPicturebox = Picture2

'Ställ in att man måste skruva lite för att värdet ska öka
slider.SliderScale = one
End Sub

Private Sub slider_Volume(NewVolume As Integer)
Text1.Text = NewVolume
End Sub


Klassen
=====
Option Explicit

Dim WithEvents m_Picture As PictureBox
Public Event Volume(NewVolume As Integer)
Public Event Click()
Public Event DblClick()

Private Declare Function SetCapture Lib "user32" _
(ByVal hwnd As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function GetCapture Lib "user32" () As Long

Private Type Limits
lX As Integer
rX As Integer
mX As Integer
tY As Integer
bY As Integer
mY As Integer
End Type
Dim m_PicLimits As Limits
Dim m_Volume As Integer

Private Type POINTAPI
X As Long
Y As Long
End Type
Dim m_LastCord As POINTAPI
Dim m_bMouseLeave As Boolean
Dim m_Scale As ScaleEnum

Public Enum ScaleEnum
one = 1
Two = 10
Three = 100
End Enum

Dim imgRotate As CImageRotate

Public Property Let SliderScale(aScale As ScaleEnum)
m_Scale = aScale
End Property
Public Property Get SliderScale() As ScaleEnum
SliderScale = m_Scale
End Property


Public Property Let Volume(data As Integer)
If data <= 100 And data >= 0 Then
m_Volume = data * m_Scale
'Maybe scroll the wheel?
End If

End Property

Public Property Set MyPicturebox(pic As PictureBox)
m_PicLimits.lX = 0 'left x
m_PicLimits.rX = pic.Width 'right x
m_PicLimits.bY = pic.Height 'bottom y
m_PicLimits.tY = 0 'top y
m_PicLimits.mX = pic.Width \ 2 'middle x
m_PicLimits.mY = pic.Height \ 2 'middle y
Set m_Picture = pic

Set imgRotate = New CImageRotate
imgRotate.LoadImg pic
End Property


Private Sub Class_Initialize()
m_Scale = Two
End Sub

Private Sub m_Picture_Click()
RaiseEvent Click
End Sub

Private Sub m_Picture_DblClick()
RaiseEvent DblClick
End Sub

Private Sub m_Picture_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = 0 Then
m_bMouseLeave = True
Exit Sub
End If

'Denna del är till för att kolla om vi lämnar bilden, för isåfall ska vi återställa kordinaterna
If Not m_bMouseLeave Then

If X < 0 Or Y < 0 Or X > m_Picture.Width Or Y > m_Picture.Height Then

ReleaseCapture
m_bMouseLeave = True
Exit Sub

ElseIf GetCapture() <> m_Picture.hwnd Then 'x bla bla

SetCapture m_Picture.hwnd

End If 'x bla bla

End If 'mouseleave

'Om vi har lämnat så ska vi endast spara nya kordinaterna när vi kommer tillbaka
If m_bMouseLeave Then
m_LastCord.X = X
m_LastCord.Y = Y
m_bMouseLeave = False
Exit Sub
End If 'mouseleave 2

'vi delar in cirkeln i fyra delar.
'första delen kollar vi om x och y ökar, isåfall drar vi på volym
'andra delen om x minskar och y ökar, isåfall drar vi på volym
'tredje delen om x minskar och y minskar, isåfall drar vi på volym
'fjärde delen om x ökar och y minskar, isåfall drar vi på volym


'två första delarna
If X > m_PicLimits.mX And X < m_PicLimits.rX Then

'första delen
If Y < m_PicLimits.mY Then

'vi rörde markören nedåt+höger, dvs ökar volymen
If X >= m_LastCord.X And Y >= m_LastCord.Y Then
IncVolume
Else
DecVolume
End If

'andra delen
Else

'vi rörde markören nedåt+vänster, dvs ökar volymen
If X <= m_LastCord.X And Y >= m_LastCord.Y Then
IncVolume
Else
DecVolume
End If

End If


'två sista delarna
Else

'första delen
If Y > m_PicLimits.mY Then

'vi rörde markören uppåt+vänster, dvs ökar volymen
If X <= m_LastCord.X And Y <= m_LastCord.Y Then
IncVolume
Else
DecVolume
End If

'andra delen
Else

'vi rörde markören uppåt+höger, dvs ökar volymen
If X >= m_LastCord.X And Y <= m_LastCord.Y Then
IncVolume
Else
DecVolume
End If

End If

End If

m_LastCord.X = X
m_LastCord.Y = Y
End Sub

Private Sub IncVolume()

'Volymen kan vara max 100%
If m_Volume >= 100 * m_Scale Then Debug.Print "exit": Exit Sub

'öka volymen
m_Volume = m_Volume + 1

'Här ska man även scrolla Picturebox hjulet, men eftersom jag inte kan grafik så...
'här ska bilden roteras...

'Säg till att volymen är ändrad
RaiseEvent Volume(m_Volume \ m_Scale)
End Sub

Private Sub DecVolume()

'Volymen kan vara min 0%
If m_Volume <= 0 Then Exit Sub

m_Volume = m_Volume - 1

'Här ska man även scrolla Picturebox hjulet, men eftersom jag inte kan grafik så...
'här ska bilden roteras...

'Säg till att volymen är ändrad
RaiseEvent Volume(m_Volume \ m_Scale)
End Sub


Svara

Sv: Runda volymknappar?

Postades av 2002-08-21 12:22:31 - Rasmus Hörstedt

snyggt verifier! =)

det va så där jag menade med bild.

Lycka till // R-mus


Svara

Sv: Runda volymknappar?

Postades av 2002-08-21 19:30:16 - Benni Svensson

Tack, jag vet att jag är ute på djupt vatten, men det ser ju ganska så kul ut.
Först:
>vad som är kvar att fixa är att en bild i pictureboxen ska roteras när >värdet ökas/minskas. men eftersom jag e kass på gfx programmering >så överlåter jag det till någon annan.
GFX, är det de som gjor att en bild rör sig?
Någon som vet hur man gör?
Kan man använda detta som en AktivX-komponent, alltså så att man kan lägga till detta till sina verktyg??


Svara

Sv: Runda volymknappar?

Postades av 2002-08-21 19:53:07 - Benni Svensson

Här får jag problem:
Dim WithEvents slider As CVolumeSlider
Jag har lagt den i General i form1.
Error:
COMPILE ERROR
User-defined type not defined

Någon referens som jag måste lägga till?


Svara

Sv: Runda volymknappar?

Postades av 2002-08-22 09:19:33 - Jonas Gauffin

Du måste skapa en tom klass som heter CSlider.
stoppa sedan in allting från klassen däri, annars hittar den inte klassen...


Svara

Sv: Runda volymknappar?

Postades av 2002-08-22 16:24:16 - Benni Svensson

När jag namngav klassen till CVolumeSlider så fick jag bort det första problemet.

Nu klagar han på denna koden:
Set slider.MyPicturebox = Picture2
Compile Error
Method or data member not found.
Vad tror du?


Svara

Sv: Runda volymknappar?

Postades av 2002-08-23 08:43:16 - Jonas Gauffin

heter din picturebox picture2?


Svara

Sv: Runda volymknappar?

Postades av 2002-08-23 10:03:47 - Benni Svensson

Japp, det gör den.

Det är detta som han klagar på:
MyPicturebox


Svara

Sv: Runda volymknappar?

Postades av 2002-08-23 12:01:56 - Jonas Gauffin

hade råkad få med några saker som inte var klara.
såhär ska klassen se ut:

Option Explicit

Dim WithEvents m_Picture As PictureBox
Public Event Volume(NewVolume As Integer)
Public Event Click()
Public Event DblClick()

Private Declare Function SetCapture Lib "user32" _
(ByVal hwnd As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function GetCapture Lib "user32" () As Long

Private Type Limits
lX As Integer
rX As Integer
mX As Integer
tY As Integer
bY As Integer
mY As Integer
End Type
Dim m_PicLimits As Limits
Dim m_Volume As Integer

Private Type POINTAPI
X As Long
Y As Long
End Type
Dim m_LastCord As POINTAPI
Dim m_bMouseLeave As Boolean
Dim m_Scale As ScaleEnum

Public Enum ScaleEnum
one = 1
Two = 10
Three = 100
End Enum

Public Property Let SliderScale(aScale As ScaleEnum)
m_Scale = aScale
End Property
Public Property Get SliderScale() As ScaleEnum
SliderScale = m_Scale
End Property


Public Property Let Volume(data As Integer)
If data <= 100 And data >= 0 Then
m_Volume = data * m_Scale
'Maybe scroll the wheel?
End If

End Property

Public Property Set MyPicturebox(pic As PictureBox)
m_PicLimits.lX = 0 'left x
m_PicLimits.rX = pic.Width 'right x
m_PicLimits.bY = pic.Height 'bottom y
m_PicLimits.tY = 0 'top y
m_PicLimits.mX = pic.Width \ 2 'middle x
m_PicLimits.mY = pic.Height \ 2 'middle y
Set m_Picture = pic

End Property


Private Sub Class_Initialize()
m_Scale = Two
End Sub

Private Sub m_Picture_Click()
RaiseEvent Click
End Sub

Private Sub m_Picture_DblClick()
RaiseEvent DblClick
End Sub

Private Sub m_Picture_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = 0 Then
m_bMouseLeave = True
Exit Sub
End If

'Denna del är till för att kolla om vi lämnar bilden, för isåfall ska vi återställa kordinaterna
If Not m_bMouseLeave Then

If X < 0 Or Y < 0 Or X > m_Picture.Width Or Y > m_Picture.Height Then

ReleaseCapture
m_bMouseLeave = True
Exit Sub

ElseIf GetCapture() <> m_Picture.hwnd Then 'x bla bla

SetCapture m_Picture.hwnd

End If 'x bla bla

End If 'mouseleave

'Om vi har lämnat så ska vi endast spara nya kordinaterna när vi kommer tillbaka
If m_bMouseLeave Then
m_LastCord.X = X
m_LastCord.Y = Y
m_bMouseLeave = False
Exit Sub
End If 'mouseleave 2

'vi delar in cirkeln i fyra delar.
'första delen kollar vi om x och y ökar, isåfall drar vi på volym
'andra delen om x minskar och y ökar, isåfall drar vi på volym
'tredje delen om x minskar och y minskar, isåfall drar vi på volym
'fjärde delen om x ökar och y minskar, isåfall drar vi på volym


'två första delarna
If X > m_PicLimits.mX And X < m_PicLimits.rX Then

'första delen
If Y < m_PicLimits.mY Then

'vi rörde markören nedåt+höger, dvs ökar volymen
If X >= m_LastCord.X And Y >= m_LastCord.Y Then
IncVolume
Else
DecVolume
End If

'andra delen
Else

'vi rörde markören nedåt+vänster, dvs ökar volymen
If X <= m_LastCord.X And Y >= m_LastCord.Y Then
IncVolume
Else
DecVolume
End If

End If


'två sista delarna
Else

'första delen
If Y > m_PicLimits.mY Then

'vi rörde markören uppåt+vänster, dvs ökar volymen
If X <= m_LastCord.X And Y <= m_LastCord.Y Then
IncVolume
Else
DecVolume
End If

'andra delen
Else

'vi rörde markören uppåt+höger, dvs ökar volymen
If X >= m_LastCord.X And Y <= m_LastCord.Y Then
IncVolume
Else
DecVolume
End If

End If

End If

m_LastCord.X = X
m_LastCord.Y = Y
End Sub

Private Sub IncVolume()

'Volymen kan vara max 100%
If m_Volume >= 100 * m_Scale Then Debug.Print "exit": Exit Sub

'öka volymen
m_Volume = m_Volume + 1

'Här ska man även scrolla Picturebox hjulet, men eftersom jag inte kan grafik så...
'här ska bilden roteras...

'Säg till att volymen är ändrad
RaiseEvent Volume(m_Volume \ m_Scale)
End Sub

Private Sub DecVolume()

'Volymen kan vara min 0%
If m_Volume <= 0 Then Exit Sub

m_Volume = m_Volume - 1

'Här ska man även scrolla Picturebox hjulet, men eftersom jag inte kan grafik så...
'här ska bilden roteras...

'Säg till att volymen är ändrad
RaiseEvent Volume(m_Volume \ m_Scale)
End Sub


Svara

Sv: Runda volymknappar?

Postades av 2002-08-24 10:47:19 - Benni Svensson

Det här är tydligen krabbigare än vad jag trodde ifrån första början.
Jag får inga felmedelande längre, men jag får inte den effekten som jag ville ha.
Resultatet blir att jag kan flytta hella bilden, inte vrida på den som en volymknapp.
Det kommer inte heller in några siffror i textboxen.
Har vi missförståt varandra?


Svara

Sv: Runda volymknappar?

Postades av 2002-08-26 09:07:18 - Jonas Gauffin

som jag sa tidigare så fixade jag bara biten som ökar på volymen när man drar runt i pictureboxen, inte koden som snurrar bilden.


Svara

Sv: Runda volymknappar?

Postades av 2002-08-26 11:03:49 - Tobias Eklind

OM du tittar i artikel
[Flip, Rotate and mirror]
Så tror jag nog du skall kunna få bilden att snurra


Svara

Sv: Runda volymknappar?

Postades av 2002-08-26 21:49:44 - Benni Svensson

verifier:
Jag vet att du skrev det, men jag trode inte att resultatet skull bli som om hela pictureboxen var lös. Dessutom så kom det ju inget värde i textboxen.
[REDIGERAT]
Helt plötsligt så började lite grand att fungera, nu kom det siffror i textboxen...
Det skulle vara bra att kunna ställa in om jag vill ha ett minusvärde (-15 - + 15), likadant att kunna ställa in min, maxvärde (kanske samma sak). Har du någon susning...
[/REDIGERAT]

Teed:
Jag har kollat igenom det exemplet men jag får bara overflow.
Det här retar mig, att jag inte kommer på något konstrukttivt själv, eller har lyckats att läsa om detta.
Det ända som jag har hittat är färdiga knappar för 700:- till 1.200:- och det tycker jag är alldeles för dyrt.

Finns det inget annat sätt att lösa detta på??



Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 606
27 953
271 705
451
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies