Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: vierityspalkki formiin

Sivun loppuun

codegirl [12.06.2004 21:47:31]

#

Hain tietoa suoraan formille ja nyt tarvitsisin siihen vierityspalkin. Löysin netistä sen verran vinkkejä, että sain sen laskemaan rivit yms. Jostain syystä se ei kuitenkaan selaa formia. Esimerkissä, jonka löysin, vierityspalkki oli tehty RichTextBox:iin. Pitääkö formiin tehtävässä vierityspalkissa ottaa jotain erityistä huomioon?

setä [12.06.2004 21:52:59]

#

Vierityspalkki on helppo lisätä formille mutta voit vierittää sillä esim. PictureBoxia, jossa on Formille tarkoitettu tieto. PictureBoxin korkeus on valittava riittävän suureksi vieritystä varten.

codegirl [12.06.2004 22:25:32]

#

Eli en mitenkään voi vierittää tekstiä, joka "printattu" suoraan formille?

rndprogy [12.06.2004 22:50:00]

#

Voit toki määrittää tekstin paikan joko näin

Pset (X, Y), Point(X, Y) 'Point jotte piste olisi saman värinen
Print "jee1"

tai

CurrentX = 100: CurrentY = 100
Print "jee2"

Formin AutoRedraw kannattaa olla true.

setä [13.06.2004 10:24:49]

#

Sillai että printtaat sen aina uudelleen uuteen paikkaan. Välillä on teksti pyyhittävä. Mikä estää pictureboxin käytön. Käyttäjällehän se ei näy mitenkään, jos formin pohjalla on picturebox. Etenkin jos se on reunaton ja saman värinen kuin formi. Sinne voi laittaa kaiken saman kuin formillekin.

codegirl [14.06.2004 14:01:21]

#

Tuo PictureBoxin käyttö oli sittenkin hyvä idea. Se ratkaisi pari muutakin ongelmaa. ScrollBarin kätössä on kuitenkin jotain sellaista, mikä ei mahdu mun päähän. Voisko joku ystävällinen laittaa jotain esimerkkiä siitä, miten sen scrollBarin saa toimimaan. Olen kokeillut kaikea mahdollista mitä vaan olen keksinyt kokeilla, mutta ei toimi.

BadSource [14.06.2004 14:24:31]

#

Seuraava on suoraan MSDN Library Visual Studio 6.0:sta kopioitua. Formille PictureBox jonka sisälle toinen PictureBox, horizontal scroll bar ja vertical scroll bar.

Private Sub Form_Load()

   ' Set ScaleMode to pixels.
   Form1.ScaleMode = vbPixels
   Picture1.ScaleMode = vbPixels

   ' Autosize is set to True so that the boundaries of
   ' Picture2 are expanded to the size of the actual
   ' bitmap.
   Picture2.AutoSize = True

   ' Set the BorderStyle of each picture box to None.
   Picture1.BorderStyle = 0
   Picture2.BorderStyle = 0

   ' Load the bitmap.
   Picture2.Picture = _
   LoadPicture("c:\Windows\Winlogo.bmp")

   ' Initialize location of both pictures.
   Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, _
   ScaleHeight - HScroll1.Height
   Picture2.Move 0, 0

   ' Position the horizontal scroll bar.
   HScroll1.Top = Picture1.Height
   HScroll1.Left = 0
   HScroll1.Width = Picture1.Width

   ' Position the vertical scroll bar.
   VScroll1.Top = 0
   VScroll1.Left = Picture1.Width
   VScroll1.Height = Picture1.Height

   ' Set the Max property for the scroll bars.
   HScroll1.Max = Picture2.Width - Picture1.Width
   VScroll1.Max = Picture2.Height - Picture1.Height

   ' Determine if the child picture will fill up the
   ' screen.
   ' If so, there is no need to use scroll bars.
   VScroll1.Visible = (Picture1.Height < _
   Picture2.Height)
   HScroll1.Visible = (Picture1.Width < _
   Picture2.Width)

End Sub

Kuvaa siirtelee seuraavalla

Private Sub HScroll1_Change()
   Picture2.Left = -HScroll1.Value
End Sub

Private Sub VScroll1_Change()
   Picture2.Top = -VScroll1.Value
End Sub

codegirl [14.06.2004 15:24:46]

#

Kiitos avusta. Tuo helpotti paljon. Mutta silti on vielä yksi ongelma. Tuossa ihan ensimmäisellä rivillä ScaleModelle annetaan arvo vbPixels. PictureBoxiin ei kuitenkaan tule kuvaa vaan teksti ja noin se ei tunnista sitä tekstiä. Ikkuna pienenee niin pieneksi kuin mahdollista, koska ohjelma luulee, että PictureBoxissa on kuva. Minkä arvon annan ScaleModelle, että ohjelma tunnistaa PictureBoxissa olevan tekstin?

setä [14.06.2004 15:42:37]

#

Laita 3 eli pixel. Tuo yo. esimerkki on turhan mutkikas. periaattessa riittää, kun asetat scrollauspalkin formin oikeaan reunaan ja vieritettävän pictureboxin formille niin, että vasen ylänurkka on formin vasemmassa ylänurkassa, leveys on sama kuin formilla näkyvä vapaatila ja korkeus esim. 5 kertaa formin korkeus tai tekstimäärästä riippuen. Vieritykseen tarvitset vain tuon viimeisen koodin pätkän. Vierityspalkin VScroll1.Max = Picture1.height - Me.ScaleHeight. Myös formin scalemode on 3.

Edit: Vierityksen voi tehdä myös ilman Scrollbaria suoraan hiirellä Acrobat Readerin tyyliin tai Timerin ohjaamana jolloin teksti liukuu halutulla nopeudella itsestään.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta