Effettivamente
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.