Newsgroup: it.comp.lang.visual-basic
Titolo: Scroll bars

I made a picture viewer with vb5 and want to make scroll bars on the
picture.... how can i do this please help if you know.. thanx...
-Paul Palka

-Paul Palka
The below example is supplied with the "on line documentation" of VB5.
Unfortunately, it is in Italian, but I think you can easly find out it in
your documentation: look for examples on using scroll bars.
Domenico Emili
I controlli barre di scorrimento orizzontale e verticale possono essere
utilizzati, in aggiunta ad un controllo casella immagine, per creare una
porta di visualizzazione a scorrimento per elementi grafici. Il controllo
casella immagine non consente di scorrere un elemento grafico se questo è di
dimensioni maggiori rispetto a quelle del controllo, ovvero il controllo
casella immagine non prevede la visualizzazione automatica delle barre di
scorrimento.
Questa applicazione utilizza due controlli casella immagine. Al primo si
farà riferimento come controllo casella immagine stazionario principale. Al
secondo, contenuto all'interno del primo, si farà riferimento come controllo
casella immagine secondario. Il controllo casella immagine secondario
conterrà l'immagine grafica e verrà spostato all'interno del controllo
casella immagine principale quando si utilizzano i controlli barre di
scorrimento.
Figura 7.28   Aggiunta di controlli barre di scorrimento in fase di
progettazione
Creare innanzitutto un nuovo progetto e quindi disegnare due controlli
casella immagine, una barra di scorrimento orizzontale e una barra di
scorrimento verticale sul form come illustrato nella figura 7.28.
L'evento Form_Load viene utilizzato per impostare la modalità di scala,
ridimensionare il controllo casella immagine secondario all'interno del
controllo casella immagine principale, posizionare e ridimensionare le barre
di scorrimento orizzontale e verticale e caricare un'immagine bitmap.
Aggiungere il seguente codice alla routine di eventi Form_Load:
Private Sub Form_Load()
 ' Imposta ScaleMode su pixel.
 Form1.ScaleMode = vbPixels
 Picture1.ScaleMode = vbPixels
 ' Autosize è impostata su True per adeguare le
 ' dimensioni di Picture2 alla dimensione della
 ' bitmap.
 Picture2.AutoSize = True
 ' Imposta BorderStyle di ogni casella immagine su
 ' None.
 Picture1.BorderStyle = 0
 Picture2.BorderStyle = 0
 ' Carica la bitmap.
 Picture2.Picture = _
 LoadPicture("c:\Windows\Winlogo.bmp")
 ' Inizializza la posizione delle due immagini.
 Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, _
 ScaleHeight - HScroll1.Height
 Picture2.Move 0, 0
 ' Posiziona la barra di scorrimento orizzontale.
 HScroll1.Top = Picture1.Height
 HScroll1.Left = 0
 HScroll1.Width = Picture1.Width
 ' Posiziona la barra di scorrimento verticale.
 VScroll1.Top = 0
 VScroll1.Left = Picture1.Width
 VScroll1.Height = Picture1.Height
 ' Imposta la proprietà Max per le barre di
 ' scorrimento.
 HScroll1.Max = Picture2.Width - Picture1.Width
 VScroll1.Max = Picture2.Height - Picture1.Height
 ' Determina se l'immagine secondaria può essere
 ' contenuta nello schermo. In caso positivo
 ' non saranno necessarie le barre di scorrimento.
 VScroll1.Visible = (Picture1.Height < _
 Picture2.Height)
 HScroll1.Visible = (Picture1.Width < _
 Picture2.Width)
End Sub
L'evento Change delle barre di scorrimento orizzontale e verticale viene
utilizzato per spostare il controllo casella immagine secondario in alto, in
basso, a sinistra e a destra all'interno del controllo casella immagine
principale. Aggiungere il seguente codice alla routine dell'evento Change di
entrambi i controlli barra di scorrimento:
Private Sub HScroll1_Change()
 Picture2.Left = -HScroll1.Value
End Sub
Private Sub VScroll1_Change()
 Picture2.Top = -VScroll1.Value
End Sub
Le proprietà Left e Top del controllo casella immagine secondario sono
impostate sul valore negativo delle barre di scorrimento orizzontale e
verticale in modo che appena si esegue uno scorrimento in alto, in basso, a
sinistra o a destra, la visualizzazione si sposti di conseguenza.
In fase di esecuzione l'elemento grafico verrà visualizzato come illustrato
nella figura 7.29.
Figura 7.29   Scorrimento della bitmap in fase di esecuzione
Ridimensionamento del form in fase di esecuzione
Nell'esempio precedente, la parte visibile dell'elemento grafico è limitata
dalla dimensione originale del form. Per ridimensionare la porta di
visualizzazione dell'elemento grafico quando l'utente modifica le dimensioni
del form in fase di esecuzione, aggiungere il seguente codice alla routine
di eventi Form_Resize:
Private Sub Form_Resize()
 ' Quando il form viene ridimensionato, cambia le
 ' dimensioni di Picture1.
 Picture1.Height = Form1.Height
 Picture1.Width = Form1.Width
 ' Inizializza di nuovo la posizione dell'immagine
 ' e delle barre di scorrimento.
 Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, _
 ScaleHeight - HScroll1.Height
 Picture2.Move 0, 0
 HScroll1.Top = Picture1.Height
 HScroll1.Left = 0
 HScroll1.Width = Picture1.Width
 VScroll1.Top = 0
 VScroll1.Left = Picture1.Width
 VScroll1.Height = Picture1.Height
 HScroll1.Max = Picture2.Width - Picture1.Width
 VScroll1.Max = Picture2.Height - Picture1.Width
 ' Controlla se sono necessarie le barre di
 ' scorrimento
 VScroll1.Visible = (Picture1.Height < _
 Picture2.Height)
 HScroll1.Visible = (Picture1.Width < _
 Picture2.Width)
End Sub