Olisko yksinkertaista koodia tällaseen.
Formilla on 2 nappia kun painan nappia 1 formin korkeus kasvaa 1000 pikkelssiä sillaa että se lähtee hitaasti pitenemään ja kiihtyy kokoajan, on hetken päästä täydessä nopeudessa, ja ennen kun formi on kasvanut 1000 pikkelssillä, alkaa kasvamisnopeus taas hidastua kunnes pysähtyy. Aika hankala selittää...
2 Nappia kun painaa se pienentyy vastaavalla tavalla.
Ymmärrän tuon formin koon muuttamisen ja yleisesti tekniikan jolla se tapahtuu, mutta menee aika vaikeaksi tehdä koodi jossa on case rakenne joka tarkastelee kuinka suuri formi on ja sen mukaan vähentää timer1 intervallia. Onkohan tuohon olemassa jotain vippaskonstia, vai pitääkö vääntää koodia näpinpäät ligkussa :)
muuta tarpeitteisi mukaan
Private Sub Command1_Click() kasvaa End Sub Sub kasvaa() Do q = q + 1 Form1.Height = Form1.Height + q If q = 100 Then Exit Do Loop End Sub
Edit: tai äsh kunhan jonkun koodin heitin
On teillä vaikeita aiheita:
Dim kasvaa As Boolean Dim pienenee As Boolean Dim h0 Dim w0 Private Sub Command1_Click() kasvaa = True Timer1.Enabled = True h0 = Form1.Height w0 = Form1.Width End Sub Private Sub Command2_Click() pienenee = True Timer1.Enabled = True h0 = Form1.Height w0 = Form1.Width End Sub Private Sub Timer1_Timer() If kasvaa Then h = Form1.Height w = Form1.Width hvauhti1 = (h - h0) / 1000 hvauhti2 = (8000 - h) / 1000 wvauhti1 = (w - w0) / 1000 wvauhti2 = (5000 - w) / 1000 If hvauhti1 <= hvauhti2 Then hvauhti = 100 * hvauhti1 + 1 Else hvauhti = 100 * hvauhti2 + 1 End If If wvauhti1 <= wvauhti2 Then wvauhti = 100 * wvauhti1 + 1 Else wvauhti = 100 * wvauhti2 + 1 End If Form1.Height = h + hvauhti Form1.Width = w + wvauhti End If If (h > 8000) Then Form1.Height = 8000 End If If (w > 5000) Then Form1.Width = 5000 End If If (h >= 8000) And (w >= 5000) Then Timer1.Enabled = False kasvaa = False End If If pienenee Then h = Form1.Height w = Form1.Width hvauhti1 = (h0 - h) / 1000 hvauhti2 = (h - 1800) / 1000 wvauhti1 = (w0 - w) / 1000 wvauhti2 = (w - 1700) / 1000 If hvauhti1 <= hvauhti2 Then hvauhti = 100 * hvauhti1 + 1 Else hvauhti = 100 * hvauhti2 + 1 End If If wvauhti1 <= wvauhti2 Then wvauhti = 100 * wvauhti1 + 1 Else wvauhti = 100 * wvauhti2 + 1 End If Form1.Height = h - hvauhti Form1.Width = w - wvauhti If (h < 1700) Then Form1.Height = 1700 End If If (w < 1500) Then Form1.Width = 1500 End If If (h <= 1800) And (w <= 1700) Then Timer1.Enabled = False pienenee = False End If End If End Sub
Timer1 interval oli 20
Miksi noin pitkä koodi. Ehdottaisin tämmöstä. Timerin Intervalli edelleen esim. tuo 20.
Dim d as Integer 'kiihtyvyyden suunta Dim v as Integer 'nopeus Dim s as Integer 'matka Dim H as Integer 'Formin korkeus Private Sub cmdKasva_Click() d = 1: v = 0: s = 0 H = Me.height Timer1.Enabled = True End Sub Private Sub cmdPienene_Click() d = -1: v = 0: s = 0 H = Me.height Timer1.Enabled = True End Sub Private Sub Timer1_Timer If s < 200 Then v = v + d else if s > 800 then v = v - d end if s = s + v Me.Height = H + s If Abs(s) > 1000 Or v < 0 Then Me.height = H + 1000 * d Timer1.Enabled = False End If End sub
Jos kiihtyvyys ja nopeus liian suuria, käytä desimaalilukuja
Aihe on jo aika vanha, joten et voi enää vastata siihen.