Jugid
-
15 nov. 2016 à 10:51
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
15 nov. 2016 à 20:39
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
PosXl = UniteGrilleX / 2 PosYl = PosYl + UniteGrilleY Wend End If Dessiner_Cartouche myAfficheur For Each Objetl In Graf Objetl.Dessiner myAfficheur Next
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 ?
Cependant, malgré le passage "ByRef", cela ne modifie pas de façon permanente ma picturebox...
Lorsque je fais ctrl + n, cela créé bien un nouvel onglet, dessine bien mon cadre, mais si je change d'onglet et que je reviens sur l'ancien, ma picture box est toujours la même qu'à l'origine...
Une chose que j'ai mal comprise dans mon code ? (je pars d'un code d'un programme qui existait déjà)
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 15 nov. 2016 à 20:39
Cependant, malgré le passage "ByRef", cela ne modifie pas de façon permanente ma picturebox...
est une autre question que celle ouverte.
Bon ...
Il semble que tu aies besoin de lire ce qu'est la propriété Autoredraw d'une picturebox et de l'utiliser ...