Soyez le premier à donner votre avis sur cette source.
Vue 15 231 fois - Téléchargée 1 740 fois
Option Explicit Private DESC(100) As String 'Description Private VALS(100) As Single 'Valeur Dim Compteur As Integer 'index du contrôle chargé, nombre de contrôle chargés Dim idMAX As Byte ' index de celui qui a valeur maximale du tableau de valeurs Private Sub Cmd1_Click() Charger_Graphe App.Path & "\cartes video.graph" End Sub Private Sub Charger_Graphe(Chemin_Fichier As String) Dim t() As String, str As String, c As String Dim flagINFO As Boolean, flagDATA As Boolean, n As Byte idMAX = 0 If Compteur > 0 Then EffacerTout 'Efface le graphe courant d'abord Open Chemin_Fichier For Input As #1 Do Until EOF(1) Line Input #1, str If str <> "" Then ' si la ligne est pas vide, c = Left(str, 1) 'regarde le 1er caractère de la ligne If c = "{" Then ' c'est un titre? flagINFO = IIf(str = "{INFOS}", True, False) Else ' c'est une valeur t = Split(str, "|") ' instr() est + rapide; mais split() + pratique If flagINFO Then LblDESCRIPTION(CByte(t(0))).Caption = t(1) Else DESC(Compteur) = t(0) VALS(Compteur) = CSng(Replace(t(1), ".", ",")) 'VB préfère les virgules If VALS(Compteur) > VALS(idMAX) Then idMAX = Compteur 'leMAX = VALS(Compteur):idmax Compteur = Compteur + 1 End If End If End If Loop Close #1 'récupère le max pour affichage LblMax.Caption = "Maximum: " & DESC(idMAX) & " (" & VALS(idMAX) & " " & LblDESCRIPTION(4).Caption & ")" 'A ce stade, les deux tableaux sont pleins,ils contiennent ' n = Compteur items à charger, et on connait la plus grande valeur, par idMAX. ' Reste à choisir le type de graphe, parcourir les tableaux pour charger ' les contrôles et ajuster la taille de l' image grâce au taux. TracerType1 End Sub Private Sub TracerType1() Dim RougeOuVert As Boolean 'flag qui détermine le fond: rouge ou vert Dim n As Byte, Taux As Single 'Calcule le taux pour faire rentrer n' importe quelle valeur (comme '10 pommes ou 32554854 francs) dans 225 pixels, avec un produit en croix: Taux = 225 / VALS(idMAX) 'MsgBox "1 unité (cad 1 " & LblDESCRIPTION(4).Caption & ") fait " & Taux & " pixels" For n = 0 To Compteur - 1 Load Lbl(n + 1) 'DESCRIPTION Lbl(n + 1).Left = Lbl(0).Left Lbl(n + 1).Top = Lbl(0).Top + (n * 12) 'Top dépend du rang Lbl(n + 1).Caption = DESC(n) Lbl(n + 1).Visible = True Load Img(n + 1) 'IMAGE Img(n + 1).Left = Img(0).Left Img(n + 1).Top = Lbl(n + 1).Top + 2 Img(n + 1).Width = VALS(n) * Taux Img(n + 1).Picture = IIf(RougeOuVert, ImgVERT.Picture, ImgROUGE.Picture) RougeOuVert = Not RougeOuVert Img(n + 1).Visible = True Img(n + 1).ToolTipText = VALS(n) Load lblVAL(n + 1) 'VALEUR lblVAL(n + 1).Left = lblVAL(0).Left lblVAL(n + 1).Top = Lbl(n + 1).Top lblVAL(n + 1).Caption = VALS(n) lblVAL(n + 1).Visible = True Next n 'Dispose les derniers contrôles Ligne(0).Y2 = lblVAL(n).Top + 15 Ligne(1).Y2 = Ligne(0).Y2 Ligne(2).Y2 = Ligne(0).Y2 Ligne(3).Y1 = Ligne(0).Y2 Ligne(3).Y2 = Ligne(0).Y2 Ligne(4).Y2 = Ligne(0).Y2 Ligne(5).Y2 = Ligne(0).Y2 LblDESCRIPTION(4).Top = Ligne(0).Y2 + 10 End Sub Private Sub EffacerTout() Dim n As Byte For n = 1 To Compteur Unload Lbl(n) Unload Img(n) Unload lblVAL(n) DESC(n - 1) = "" VALS(n - 1) = 0 Next n Compteur = 0 LblDESCRIPTION(0).Caption = "-" LblDESCRIPTION(1).Caption = "-" LblDESCRIPTION(2).Caption = "-" LblDESCRIPTION(3).Caption = "-" LblDESCRIPTION(4).Caption = "-" End Sub
3 juin 2006 à 11:46
Pour inciter les gens à utiliser ton ocntrôle donne en annexe un utilitaire qui permettrait de créer le fichier .graph à partir d'une base de données (connectionstring et commandtext en paramètre) avec un textbox pour les infos (ce sera à toi d'identifier les lignes dans le textbox en recherchant chr$(10))
Bonne Prog.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.