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 SubTimer1 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 subJos kiihtyvyys ja nopeus liian suuria, käytä desimaalilukuja
Aihe on jo aika vanha, joten et voi enää vastata siihen.