Olen tehnyt melkein kokonaan valmiiksi, mutta puuttuu yksi olennainen koodi.
Miten saan hiiren klikkaamaan vaikka joka sekunti, jos laitan numericupdowniin vaikka 1 ja 2 sekunnin välein kun laitan 2. Ja entä miten sitten jos laitan tunti numericupdowniin 1 ja seknuti numericupdowniin 2, siten että se osaa laskea noi yhteen niin että se sitten klikkaisi 1h2s välein.
ja onko mitenkään mahdollista laittaa siten että vaikka kello 3 maissa lähtisi klikkailemaan joka sekunti ja loppuu vaikka kello 5??
Kerro toki ohjelmointikielesi.
VB: Suosittelen tutustumaan timereihin(http://msdn.microsoft.com/en-us/library/zffx82xt(VS.80).aspx) ja Timeen(http://www.vb6.us/tutorials/Date and Time)
en oikein ymmärtänyt kysymystä, mutta jos kyse on numericupdown kontrollin klikkailusta tietyin määräajoin, voit vain kasvattaa ajastimella sitä arvoa mitä kontrolli kasvattaa muutenkin. ei sinun tarvitse klikkailla mitään, vaan kasvatat yksinkertaisesti sitä arvoa. (xxxx.value = xxxx.value + 1)
Pienen pähkäilyn jälkeen sain kysymyksen seuraavaan muotoon:
lainaus:
Miten saan hiiren klikkaustiheyttä säädettyä NumericUpDown-komponenteilla, joista yksi kertoo tunnit ja toinen sekunnit?
Laita ohjelmaan Timer-komponentti ja muokkaa sen Interval-arvoa, kun laatikoiden luvut muuttuvat. Oikean arvon voit laskea kertolaskun ja yhteenlaskun avulla.
Kellonaika-asian voi toteuttaa monellakin tavalla. Yksi helppo (mutta hieman tuhlaileva) mahdollisuus on pyörittää yllä mainittua ajastinta jatkuvasti ja tarkistaa vain ennen klikkausta, että kello on oikean verran.
Selkeämmin tämä:
Käytän tämän ohjelman tekemisessä VB:tä.
Esimerkki kuva:
http://img545.imageshack.us/i/kuvax.jpg/
Kyseisessä kuvassa on nytten numericupdown kontrolleja, joissa nytten tunneissa ja minuuteissa on annettu numero.
Tunneissa = 2
Minuuteissa = 1
1.Miten saisin mahdollisimman yksinkertaisella koodauksella laitettuu siten, että se klikkaisi minuutin välein jos kyseisen "numericupdown kontrollissa" = 1
Ja entä jos siinä olisikin 2....
-En mitenkään haluaisi laittaa näin jokaisen numeron kohdalla:
If NumericUpDown2.Value = 1 Then Timer1.Interval = 60000 End If If NumericUpDown2.Value = 2 Then Timer1.Interval = 120000 End If jne.....
2.Mutta entä jos onkin laitettu kahteen "numericupdown kontrolliin" arvo, miten se osaa laskea ne muutkin mukaan.
Tunti "numericupdown kontrollissa" = 2
Minuti "numericupdown kontrollissa" = 1
Miten se nytten osaisi klikata siten että se klikkaa 2h1min välein??
Tiedän että jos interval =
Joka 60 000 = minuuti
Joka 3 600 000 = tunti
Ja kaikki muutkin ettei siinä ole mitään ongelmaa....
Mod. lisäsi kooditagit
1. Timer1.Interval = NumericUpDown2.Value * 60000
2. TimerTotal.Interval = Timer1.Interval + Timer2.Interval(...)
Kiitos "Jokotai", myös muille jotka auttoivat parhaansa mukaan.
Jos VB6:sta on kyse niin ei taida pystyä pistämään yli 65 sekunnin viivettä, eli Jokotain esimerkillä ei toimi jos numericupdown2 on suurempi kuin 1.
Itse tekisin niin, että laittaisin timerin laukeamaan vaikka sekunnin välein ja katsoisin paljonko edellisestä kerrasta on aikaa. Siis jos olisi pakko VB6:lla tehdä.
Käytän VB 2008
TimerTotal.Interval ei toimi
Oisko tolle koodille toinen koodi joka ajaisi aivan saman??
Edit:
Löysin ratkaisun jo
Timer1.Interval = NumericUpDown1.Value * 7200000 + NumericUpDown2.Value * 60000 +(jne....)
Koodi joka käy Timer1.Interval :in NumericUpDown2.Value kertaa ja käy näin läpi kaikki NumericUpDown :it vuoroitellen.
edit: tästä tulikin turha :(
itse tekisin jotenkin näin:
' ' Created by SharpDevelop. ' User: Groovyb ' Date: 4.10.2010 ' Time: 17:56 ' ' To change this template use Tools | Options | Coding | Edit Standard Headers. ' Public Partial Class MainForm Public Sub New() Me.InitializeComponent() End Sub Dim Hours As Integer 'tunnit Dim Minutes as Integer 'Minuutit Dim ExitLoop As Boolean 'loopista ulos Sub AutoClick() MessageBox.Show("Tein jotain!") End Sub Sub StartAutoClick() Do While Not ExitLoop If Hours = Date.now.Hour AndAlso Minutes = Date.Now.Minute Then AutoClick 'Tehdään jotain 'Alustetaan uudet arvot Hours = Date.Now.Hour 'nykyinen tunti Minutes = Date.Now.Minute 'nykyinen minuutti If Hours + 1 < 24 Then 'sama, +1 muutetaan Hours = Hours + 1 ' +1:n tilalle tuntien arvo numericupdownista Else Hours = Hours + 1 - 24 '24h pois End If If Minutes +1 < 59 Then 'sama, +1 muutetaan Minutes = Minutes + 1 ' +1:n tilalle minuuttien arvo numericupdownista Else Minutes = Minutes + 1 - 60 '60min pois End If End If System.Threading.Thread.Sleep(50) 'taukoa Application.DoEvents 'eventtien suoritusta... Loop End Sub Sub Button1Click(sender As Object, e As EventArgs) ExitLoop = false 'poistuminen falseksi Hours = Date.Now.Hour 'nykyinen tunti Minutes = Date.Now.Minute 'nykyinen minuutti If Hours + 1 < 24 Then 'sama, +1 muutetaan Hours = Hours + 1 ' +1:n tilalle tuntien arvo numericupdownista Else Hours = Hours + 1 - 24 '24h pois End If If Minutes +1 < 59 Then 'sama, +1 muutetaan Minutes = Minutes + 1 ' +1:n tilalle minuuttien arvo numericupdownista Else Minutes = Minutes + 1 - 60 '60min pois End If StartAutoClick 'looppi päälle End Sub Sub Button2Click(sender As Object, e As EventArgs) ExitLoop = true 'loopista ulos End Sub End Class
Sekunnit kun vielä lisää loopin if lausekkeeseen niin saa tarkkuutta enemmän.
.Netin timerin maksimi interval taitaa kyllä olla yli 580 tuntia, joten jos et isompaa aikaa pistä niin tulisi kyllä riittää :)
äh...
Mikä se doubleclikkauksen koodi on??
Onko single klikkauksellakin jokin koodi? (vaikkakin se on oletus ilman koodiakin)
1.
Jos laittaisin esim. "TextBox1" sisälle numeron 5, niin miten saisin sen pysähtymään 5 klikkauksen jälkeen??
2.
Textbox2 = Klikkauksien määrä
Textbox3 = Sekuntien määrä
Miten saisin laitettuu siten jos
"Textbox2" sisällä on 5 ja "Textbox3" 10
Miten saisin jos anneut arvot olisivat nytten noi ylemmät, siten että se klikkaa 5, jonka jälkeen odottaa 10sekuntia ja taas klikkaa 5 ja odottaa sen jälkeen taas 10 sekuntia (jne...)
Taitaa tarvita uuden timerin, mutta mitä sen jälkeen??
3. Miten saan ns.harmaaksi eli ei voi painaa enään nappeja(kuten radiobutton tai textbox tms) kun painaa "start" nappulaa.
Testasin kikkailla false toiminnolla, mutta eipä oikeen onnistunut...
1. Laitat muuttujaan arvon 5 ja vähennät sitä joka klikkauskerralla. Jos muuttujan arvo on 0, niin et enää klikkaa. (Esimerkiksi)
2. Ööh, no jos käytät timeria niin laitat siihen 10 sekunnin odotuksen. En tiedä mitä tapaa käytät.
3. Määrittelet nappien Enabled -arvoksi False
Onko kenelläkään tietoa double klikkauksen koodista?? Ja jos on singleklikkauksestakin oma koodi niin senkin voi pistää tänne...
1. En tarkoita ihan tuota koodia....
Minulla on koodi joka laskee klikkaukset "Label10.Text" palkkiin
"Label10.Text = Val(Label10.Text) + Val(1)"
Sitten kun laitan vaikka "Textbox3.Text" palkkiin 5, niin sitten kun "Label10.Text" palkissa on sama luku kuin "Textbox3.Text" palkissa niin timerin sammuvat.
3.Ainiin se olikin enabled -arvosta....
Vinkki vastaiseen: Googlesta kannattaa etsiä sanoilla: doubleclick, vb, .NET, Visual, Basic, double, click
PArhaani mukaan olen yrittänyt etsiä tuolta, mutta ei ole löytynyt oikein kunnolla....
tutustuppa eventteihin. kaikkiin kontrolleriluokkiin ei doubleclick tapahtumaa ole periytetty, mutta oletuksena voisi sanoa että kaikkiin niihin on, joissa jonkinlaisia hiiritapahtumia käytetään.
hakusanoja: .Net doublick event, .Net Event handling, .Net Events tutorial
Nonih, nyttten on kaikki tarvittavat koodekit jo tiedossa...jostain kumman syystä ei ollut toiminut eilen koodit mitä olin testannut.
Enään pientä hiomista niin ohjelma on täysin valmis.
Aihe on jo aika vanha, joten et voi enää vastata siihen.