Bonjour,
J'ai actuellement un code VB6 qui me permet de dessiner dans une picturebox.
Voulant généraliser l'ensemble, j'ai créé une SSTAB qui me permet de faire plusieurs pages avec plusieurs pictures box. Cela fonctionne (pour l'insertion de la picturebox) mais je cherche à créer une feuille blanche, et donc de dessiner sur cette picturebox.
Lorsque je fais "ctrl + n", le code appelé est le suivant :
Private Sub New_Page()
Ensembletab.Tabs = Ensembletab.Tabs + 1
Ensembletab.TabCaption(Ensembletab.Tabs - 1) = "Page" & Ensembletab.Tabs
Ensembletab.Tab = Ensembletab.Tabs - 1 ' make new tab the current one
Set DessinEtape = Nothing
Set DessinEtapeIni = Nothing
Set DessinLigne = Nothing
Set DessinRectangle = Nothing
Set DessinTexte = Nothing
Set DessinTrans = Nothing
Set DessinFleche = Nothing
Set PbAfficheur = Controls.Add("VB.Picturebox", "Afficheur" & Ensembletab.Tabs) ' create text1
Set PbAfficheur.Container = Ensembletab ' set the container for Text1
With PbAfficheur ' configure text1 and make it visible
.Height = UserControl.ScaleHeight - HScroll.Height - Toolbar_Dessin.Height
.Width = UserControl.ScaleWidth - VScroll.Width
.BackColor = &H808080
.Top = 360
.Visible = True
.DrawMode = 10
.DrawStyle = vbSolid
End With
DrawWidth = 10
ForeColor = RGB(0, 0, 0) ' Définit la couleur
Afficheur.ScaleMode = 1
NomClient.Texte = "NOM DE L'AFFAIRE"
NomGrafcet.Texte = "Titre du grafcet"
VersionGrafcet.Texte = "Version :"
Redacteur.Texte = "Etabli par :"
NumeroPage.Texte = "Folio :"
Redessiner_Afficheur_General PbAfficheur
Ce qui me créé un nouvel onglet, insert une picturebox et set quelques propriétés.
A la fin, j'appel la fonction "Redessiner_Afficheur_General", et je passe ne paramètre ma picturebox.
Cela doit normalement dessiner dessus un semblant de feuille blanche avec un cartouche (la fonction dessiner cartouche est définie comme ceci :
Private Sub Dessiner_Cartouche(ByRef Destination As Object)
Et voici la fonction Redessiner_afficheur_general :
Private Sub Redessiner_Afficheur_General(ByRef myAfficheur As PictureBox)
Dim Objetl As Variant
Dim PosXl As Single
Dim PosYl As Single
Dim ContextDrawModel As Single
Dim ContextDrawStylel As Single
On Error Resume Next
ContextDrawModel = myAfficheur.DrawMode
ContextDrawStylel = myAfficheur.DrawStyle
myAfficheur.DrawMode = 13
myAfficheur.DrawStyle = vbSolid
Saisie.Visible = False
myAfficheur.Cls
myAfficheur.Line (0, 0)-(LargeurPapier, HauteurPapier), RGB(255, 255, 255), BF
If ChoixGrille Then
PosXl = UniteGrilleX
While PosXl < LargeurPapier
myAfficheur.Line (PosXl, 0)-(PosXl, HauteurPapier), RGB(220, 220, 220)
PosXl = PosXl + UniteGrilleX
Wend
PosYl = UniteGrilleY
While PosYl < HauteurPapier
myAfficheur.Line (0, PosYl)-(LargeurPapier, PosYl), RGB(220, 220, 220)
PosYl = PosYl + UniteGrilleY
Wend
PosXl = UniteGrilleX / 2
PosYl = UniteGrilleY / 2
While PosYl < HauteurPapier
While PosXl < LargeurPapier
myAfficheur.PSet (PosXl, PosYl), RGB(200, 200, 200)
PosXl = PosXl + UniteGrilleX
Wend
PosXl = UniteGrilleX / 2
PosYl = PosYl + UniteGrilleY
Wend
End If
Dessiner_Cartouche myAfficheur
For Each Objetl In Graf
Objetl.Dessiner myAfficheur
Next
myAfficheur.DrawStyle = ContextDrawStylel
myAfficheur.DrawMode = ContextDrawModel
DessinEtape.Dessiner myAfficheur
DessinEtapeIni.Dessiner myAfficheur
DessinLigne.Dessiner myAfficheur
DessinRectangle.Dessiner myAfficheur
DessinTexte.Dessiner myAfficheur
DessinTrans.Dessiner myAfficheur
DessinFleche.Dessiner myAfficheur
If ChoixColler And PaintNow Then
For Each ObjGraf In ObjCopie
ObjGraf.Dessiner myAfficheur
Next
End If
End Sub
L'erreur qui est induite est "Type d'argument ByRef incompatible".
J'ai tout essayé et je ne trouve rien sur Google qui puisse m'aider, même sur les sites anglophones.
Quelqu'un aurait-il une idée ?
Cordialement,
Julien