Attribute VB_Name = "Module6" Public Function Insert_BROCHE(ByVal X As Integer, ByVal Y As Integer, ByVal Type_BROCHE As String, ByVal BROCHE_Orientation As String) As Long ' incr�mente le nombre de broche NB_BROCHE = NB_BROCHE + 1 ' redimensionne le tableau de liens ReDim Preserve Objet_BROCHE(NB_BROCHE - 1) ' instancie une nouvelles broche Set Objet_BROCHE(NB_BROCHE - 1) = New BROCHE ' defini les parametres de la nouvelle broche tmp = Objet_BROCHE(NB_BROCHE - 1).SetParametres_BROCHE(Type_BROCHE, NB_BROCHE - 1, X, Y, BROCHE_Orientation) ' retourne l'ID Insert_BROCHE = NB_BROCHE - 1 End Function Public Sub ReDraw_BROCHE(pic As PictureBox) 'on redessine tout le tableau Dim i As Integer, j As Integer Dim PosX As Integer, PosY As Integer Dim Gravite_Pos_X As Integer, Gravite_Pos_Y As Integer Dim Selectionnee As Long Dim Type_BROCHE As String Dim Orientation_BROCHE As String PosX = 0 PosY = 0 'pic.Cls 'on dessine les objets For i = 0 To NB_BROCHE - 1 ' recupere la position tmp = Objet_BROCHE(i).GetPosition_BROCHE(PosX, PosY) Type_BROCHE = Objet_BROCHE(i).GetType_BROCHE() Orientation_BROCHE = Objet_BROCHE(i).GetOrientation_BROCHE() 'dessine l'objet Selectionnee = 0 If PorteSelectionnee = i Then Selectionnee = 1 tmp = Dessine_BROCHE(PosX, PosY, Gravite_Pos_X, Gravite_Pos_Y, Orientation_BROCHE, Etat, Type_BROCHE, pic, Selectionnee) tmp = Objet_BROCHE(i).SetPosition_BROCHE(PosX, PosY, Gravite_Pos_X, Gravite_Pos_Y) Next i End Sub Public Function Dessine_BROCHE(ByVal X As Integer, ByVal Y As Integer, ByRef Gravite_Pos_X As Integer, ByRef Gravite_Pos_Y As Integer, PAD_Orientation As String, ByVal Etat As Long, ByVal Type_PAD As String, pic As PictureBox, Optional ByRef Selectionne As Long = 0) Dim L As Double Dim W As Double Dim couleur_rouge As String Dim couleur_vert As String Dim couleur_bleu As String Dim couleur_noir As String Dim Boite As Long Dim A As Point_A Dim B As Point_A Dim C As Point_A Dim D As Point_A 'If Etat = 1 Then couleur = RGB(255, 0, 0) 'If Etat = 0 Then couleur = RGB(0, 255, 0) 'If Selectionne = 1 Then couleurboite = RGB(0, 0, 255) 'If Selectionne = 0 Then couleurboite = RGB(0, 0, 0) ' standard 'Boite = 1 ' dessine le corps de la g�om�trie couleur_rouge = RGB(255, 0, 0) couleur_vert = RGB(0, 255, 0) couleur_bleu = RGB(0, 0, 255) couleur_noir = RGB(0, 0, 0) L = 400 W = 200 ' calcul A.X = X - (L / 2) A.Y = Y - (W / 2) B.X = X + (L / 2) B.Y = Y - (W / 2) C.X = X + (L / 2) C.Y = Y + (W / 2) D.X = X - (L / 2) D.Y = Y + (W / 2) If PAD_Orientation = "r" Then End If If PAD_Orientation = "n" Then 'corps du rectangle pic.Line (A.X, -A.Y)-(B.X, -B.Y), couleur_noir pic.Line (B.X, -B.Y)-(C.X, -C.Y), couleur_noir pic.Line (C.X, -C.Y)-(D.X, -D.Y), couleur_noir pic.Line (D.X, -D.Y)-(A.X, -A.Y), couleur_noir ' dessine le point de gravit� pic.Circle (X, -Y), taillepuce, couleur_rouge End If ' dessine la sortie 'If Sortie = 1 Then ' pic.Line (X + largeur + offsetsortie, Y + hauteur / 2)-(X + largeur + taillepin, Y + hauteur / 2), couleurboite ' pic.Circle (X + largeur + taillepin + taillepuce, Y + hauteur / 2), taillepuce, couleur ' symbole inverse ' If inverse = 1 Then pic.Circle (X + largeur + taillepuce, Y + hauteur / 2), taillepuce ' SortiePosX = X + largeur + taillepin + taillepuce ' SortiePosY = Y + hauteur / 2 'End If ' dessine les entrees 'For i = 0 To NbEntrees - 1 ' If EtatEntrees(i) = 1 Then couleur = RGB(255, 0, 0) ' If EtatEntrees(i) = 0 Then couleur = RGB(0, 255, 0) ' pic.Line (X, Y + (i + 1) * hauteurStd)-(X - taillepin, Y + (i + 1) * hauteurStd), couleurboite ' pic.Circle (X - taillepin - taillepuce, Y + (i + 1) * hauteurStd), taillepuce, couleur ' EntreePos(0, i) = X - taillepin - taillepuce ' EntreePos(1, i) = Y + (i + 1) * hauteurStd 'Next i ' dessine le symbole 'pic.CurrentX = X + 100 'pic.CurrentY = Y - 80 + hauteur / 2 'pic.Print symbole End Function Public Function Trouve_BROCHE(ByVal X As Integer, ByVal Y As Integer, Optional ByRef DifX As Integer, Optional ByRef DifY As Integer) ' trouve une broche en fonction des coordonnees Dim PosX As Integer, PosY As Integer Dim BROCHE As Integer Dim message As String 'MsgBox "X: " & X & "Y:" & -Y ' correction de l'offset Y = -Y ' par defaut pad non trouve BROCHE = -1 For i = 0 To NB_BROCHE - 1 ' on recupere les positions du pad tmp = Objet_BROCHE(i).GetPosition_BROCHE(PosX, PosY) ' Q1 If ((X > 0) And (Y > 0)) Then End If ' Q1 If ((X < 0) And (Y > 0)) Then End If ' Q1 If ((X < 0) And (Y < 0)) Then End If ' Q1 If ((X > 0) And (Y < 0)) Then End If ' si le clic est dans la zonne de selection, c'est gagn� If X > PosX - 50 And X < PosX + 50 And Y > PosY - 50 And Y < PosY + 50 Then BROCHE = i If IsNumeric(DifX) Then DifX = X - PosX If IsNumeric(DifY) Then DifY = Y - PosY End If Next i Trouve_BROCHE = BROCHE End Function