webForumDet fria alternativet

Slider upp och ner...

.NET

7 svar · 254 visningar · startad av johol545

Medlem sedan apr. 20027 inlägg
Frågan#1

Jag vill ha ett par sliders (Microsoft Windows Common Controls 6.0 (SP4)) men jag lyckas inte vända dem rätt. De blir upp och ner och visar det högsta värdet när reglaget är längst ner och tvärt om. Det är ju inget problem vid användade att räkna ut vilket värde man egentligen vill ha, men den visar ju det aktuella värdet som ett tooltip när man drar i reglaget.

Nån som vet hur man vänder på det hela, eller har några andra reglar som funkar som jag vill (och är gratis)?

Medlem sedan maj 2003924 inlägg
#2

gör så att du sätter max värde på 0 och min värdet på min värdet på t.ex.-100 då blir ju lägsta värdet -100 och max e noll sen jobba där ifrån.

Medlem sedan apr. 20027 inlägg
#3

Ja, det funkar ju, men den visar då ett negativt värde i tooltipset och det är ju inte så snyggt.

Problemet är inte att plocka ut värdet för att räkna på senare utan det är att det visas "fel" värde i den lilla tooltip-rutan som kommer upp.

Medlem sedan maj 2003924 inlägg
#4

du kan enkelt göra så här.

Dim Value

Private Sub VScroll1_Change()
Value = Replace(VScroll1.Value, "-", "")
Label1.Caption = Value
End Sub

Private Sub VScroll1_Scroll()
Value = Replace(VScroll1.Value, "-", "")
Label1.Caption = Value
End Sub

annars så kan man omvandla minusvärde till plus med lite matematik.
Men denna är enklare.

Medlem sedan apr. 20027 inlägg
#5

Okej, jag försöker förklara en gång till. Den här gången med en (förhoppningsvis) förklarande bild.

Som synes så är det en Slider och ingen scrollbar.

Värdet 3 fås genom Slider1.Max - Slider1.Value (vilket jag tycker är ett bra mycket bättre sätt än att blanda in stängmanipulering av numeriska värden).

97 är det värde som slidern poppar upp av sig själv. Det är DET värdet jag också vill ska visa 3 i stället för 97.

slider.jpg
Medlem sedan maj 2003924 inlägg
#6

visa kod.
annars så är det bara att göra så som jag skrev innan.
det som står 97 är värdet på slidern och om du i scroll och change på Slidern gör label1.caption=slider1.value så blir det rätt.
Du vill väl att när den är längst upp ska det vara 100 och längst ner 0 eller.
Då får du sätta.
min värdet på -100 och max värde på 0
och sen använda den kod som e med.
dunkar lika dant varesig man har en scroll eller slider.

Dim Value

Private Sub Slider1_Change()
Value = Replace(Slider1.Value, "-", "")
Label1.Caption = Value
Slider1.Text = Value
End Sub

Private Sub Slider1_Scroll()
Value = Replace(Slider1.Value, "-", "")
Label1.Caption = Value
Slider1.Text = Value
End Sub
Medlem sedan okt. 20023 030 inlägg
#7

Det absolut lättaste är att sätta -100 som min och 0 som max och sedan göra som nedan.

Private Sub Slider1_Change()
    Slider1.Text = Slider1.Value * -1
    Label1.Caption = Slider1.Text
End Sub

Private Sub Slider1_Scroll()
    Slider1.Text = Slider1.Value * -1
    Label1.Caption = Slider1.Text
End Sub

Det vill säga, utan strängmanipulering. :)

Medlem sedan apr. 20027 inlägg
#8

Bah, så dum jag är!

Det jag hade tappat bort var ju att en slider har en text-property.

Nexus86 är ju precis det jag var ute efter. Att multiplicera med -1 var ju faktiskt snyggare än min lösning.

Är det kanske ännu bättre att göra

    Label1.Caption = Slider1.Value * -1
    Slider1.Text = Label1.Caption

för att endast behöva utföra beräkningen EN gång? Fast det är kanske lika besvärligt att hämta värdet från labeln som att beräkna det igen?

Hur som helst, tack för hjälpen!

259 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)