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?
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.
Eli en mitenkään voi vierittää tekstiä, joka "printattu" suoraan formille?
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.
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.
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.
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
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?
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.