Ciao sono alle solite con una delle mie domande, non riesco a capire il comportamento della scrollview nel seguente codice creo una DrawingArea e viene numerata, ma quando le DrawingArea superano i margini della Scrollview tutte le DrawingArea cambiano numerazione.
Public Sub nuovo_pic()
Dim area As DrawingArea
area = New DrawingArea(Scr) As "HPic"
Pic.Add(area)
Pic[Pic.Max].Move(40, 5 + (50 * Pic.Max), 595, 40)
Pic[Pic.Max].X = (Scr.Width - Pic[Pic.Max].W) / 2
Pic[Pic.Max].Background = &00FFFFFF
Pic[Pic.Max].Border = Border.Plain
Pic[Pic.Max].Tag = Pic.Max
page = Pic.Count
End
Public Sub HPic_Draw()
Paint.Begin(Last)
Paint.Font.Name = "Arial"
Paint.Font.Size = 16
Paint.DrawText("Pagina N°" & page, 300, 20)
Paint.Fill()
Paint.End()
End
grazie ;D ;D
Effettivamente (http://forum.ubuntu-it.org/images/smilies/sisi.gif) si scatena l'evento HPic_Draw() non solo ogniqualvolta - come hai fatto notare tu - le DrawingArea superano i margini della Scrollview, ma anche quando viene manualmente modificata la dimensione del Form.
Non so perché accada ciò. :-\
Poiché l'identificatore (HPic) del Gruppo di eventi è comune a tutte le DrawingArea, presenti nella variabile vettoriale di tipo DrawingArea, la sollevazione dell'evento HPic_Draw() coinvolge l'una dopo l'altra tutte le DrawingArea fino ad allora create. Questa è la circostanza che causa l'attribuzione del medesimo numero (dell'ultima DrawingArea generata) a tutte le DrawingArea presenti sul Form.
Puoi, comunque, ovviare al problema da te sollevato apportando queste due modifiche al codice:
1) assegnando il valore corrente di Pic.Count a Pic[Pic.Max].Tag:
Pic[Pic.Max].Tag = Pic.Count
Pertanto la riga page = Pic.Count può essere tolta (se tale assegnazione non serve in altra parte del codice);
2) sostituire la proprietà Last.Tag alla variabile page al primo argomento del Metodo .DrawText dell'oggetto Paint:
Paint.DrawText("Pagina N°" & Last.Tag, 300, 20)
La riga Paint.Begin(Last) non risulta indispensabile.
grazie Vuott per la dritta, e grazie a Gianluigi per il suggerimento che ha capito il mio problema ovvero scrivere una serie di dati in una DrawingArea
Public Sub nuovo_pic()
Dim area As DrawingArea
area = New DrawingArea(Scr) As "HPic"
Pic.Add(area)
Pic[Pic.Max].Move(40, 5 + (850 * Pic.Max), 595, 840)
Pic[Pic.Max].X = (Scr.Width - Pic[Pic.Max].W) / 2
Pic[Pic.Max].Background = &00FFFFFF
Pic[Pic.Max].Name = Pic.Count
Pic[Pic.Max].Border = Border.Plain
Pic[Pic.Max].Tag = Pic.Count
Print Pic[Pic.Max].Name
End
Public Sub HPic_Draw()
Dim i As Integer
acapo = 0
Paint.Font.Name = "Arial"
Paint.Font.Size = 8
Paint.DrawText("Pagina N°" & Last.Tag, 300, 10)
For i = b To 150
Paint.DrawText("CIAO Linea " & i, 40, acapo)
If acapo = 840 Then ' viene creata nuova pagina quando sono arrivato al margine inferiore'
b = i
nuovo_pic
acapo = 0
Endif
acapo = acapo + 12
Next
Print b
Paint.Fill()
Paint.End()
End
infatti in questo codice viene visualizzato solo l'ultima parte del ciclo for/next :D :D :ciao: :ciao: