Accueil > Forum > > > > Frames et shapes
Frames et shapes
mercredi 18 juin 2003 à 17:35:11 |
Frames et shapes

machto
|
Bonsoir. je voudrais faire un truc un peu compliqué et je ne sais pas comment m'y prendre. Vos suggestions ou solutions sont les bien venues: soit: - J'ai des images schématiques monochromes (bmp par exemple) que je veux charger sur ma Form autant de fois que je veux et placer ensuite où je veux. J'ai besoin, pour que mon programme soit explicite, de pouvoir faire varier la couleur de cette (ces) image(s). Est-ce possible et comment? - J'ai des frames contenant chacune une shape et des lignes schématiques monochromes. Je sais faire varier les couleurs de la shape et des lignes mais comment faire pour dupliquer ces frames et leur contenu, pendant l'execution, d'un clic par exemple, pour en multiplier le nombre à loisir en les indexant. Mêmes questions. En résumé, je veux disposer des "trucs" autour d'un cadre et en piloter les couleurs. Merci par avance. M@chto
|
|
jeudi 19 juin 2003 à 09:56:07 |
Re : Frames et shapes

SibosisITS
|
Bonjour tout d'abord ;)
Pour la deuxième question, c'est assez simple : Je suppose que Frame est le nom de la Frame à l'écran, Shape est le nom de ta shape et Line1, Line2, ... sont les noms de tes lignes. Je suppose que tu as déjà créé un exemplaire de chaque au moment de la création. Pour pouvoir les duppliquer, tu dois créer des groupes de contrôles. Pour cela, tu dois modifier la propriété Index de chacun des composants en luii donnant la valeur '0'. Ensuite, pour duppliquer l'un des éléments, tu dois écrire le code suivant
Load Frame(i) with Frame(i) .visible= true 'affiche l'objet à l'écran (c pas automatique) 'Définition de la position et des dimensions de la frame .top = ? 'Je te laisse le soin de remplacer les points d'interrogation ;) .left = ? .width = ? .height = ? 'Insérer ici les autres propriétés de l'objet nécessaires end with
Load Shape(i) with Shape(i) .visible = true .parent = Frame(i) 'Indique l'objet devant contenir la shape 'Insérer ici les propriétés de dimensions, comme pour Frame (sauf qu'ici, les coordonnées fournies sont celles relatives coordonnées de la Frame 'Insérer les autres propriétés nécessaires (forme, couleur intérieure (.BackColor il me semble), couleur de la bordure, etc.) end with
'Répéter le code suivant pour chaque ligne (en changeant le numéro) Load Line(i) with Line(i) .visible = true .parent = Frame(i) 'Insérer toutes les autres propriétés nécessaires... end with
A la fin de la création, il ne reste plus qu'à incrémenter i
i = i + 1
et on est près pour une nouvelle dupplication.
La variable i représente une valeur d'index non utilisé. Plusieurs choix pour sa déclaration : si la dupplication se fait toujours dans la même fonction, tu peux la déclarer en 'static' dans cette fonction et l'initialiser à 1 :
Static i As Integer if i=0 then i=1
Si tu possède dans ton programme plusieurs fonctions succeptibles de créer des éléments dans un des groupes, tu la déclares au niveau module et tu l'initialises en début de programme à 1 également
Il se peut que tu ais déjà créé un groupe de controles pour les lignes contenues dans la frame (Line(0), Line(1), etc...) Qu'à cela ne tienne, il suffit de changer l'index 'i' pour les lignes par un autre index, indépendant, 'j' par exemple (original n'est-ce pas ? ;). Ceci a l'avantage de réduire la taille du code à écrire. Supposons que ta frame contient 'n' lignes : on a alors le code suivant (qui remplace celui concernant les lignes écrit plus haut) Je suppose déclarée la variable compteur 'a' , et 'j' initialisée à une valeur d'index non utilisé (les remarques pour 'i' plus haut sont aussi valables ici) :
For a=1 to n Load Line(j) with Line(j) .visible = true .parent = Frame(i) 'c'est bien un 'i' ici 'Autres propriétés... end with j = j + 1 'Ne pas oublier l'incrémentation Next a
Ce procédé est très pratique : il permet par exemple de créer un nombre variable de lignes dans chaque frame (en faisant varier n d'un appel à l'autre).
Au moment de la création d'un objet dans un groupe, on ne peut pas être certain des valeurs prises par les propriétés de l'objet. Il est donc conseillé, lorqu'on charge un objet, de définir toutes les propriétés dont on a besoin explicitement.
VOILA pour la deuxième question.
Pour la première... ct quoi déjà ? ;) Ah oui... La réponse : Ca dépend ce que tu veux en faire... 1) Si cette image est chargée au moment de la création dans un controle Image, pour le duppliquer, tu procèdes comme avec les objets Frame, Shape et Line. 2) Si cette image est chargée au moment de l'execution (ie par le code) dans un objet Picture (nommé par exemple MonoPic), grace à la fonction LoadPicture, et que tu veux l'afficher directement dans le contexte graphique de ton form, tu peux utiliser la méthode très utile 'PaintPicture' comme suit :
NomForm.PaintPicture MonoPic, x, y
où x et y sont les coordonnées du coin supérieur gauche de l'image. Bien sûr, cette méthode suppose que tu redessines les contrôles chaque fois que nécessaire (dans l'événement Paint de ton form), ce qui suppose de connaîtres la listes des coordonnées du coin supérieur gauche de chacune des images à afficher : Cela peut se faire en utilisant un tableau dynamique de structures PARAMPIC par exemple. Voici les déclarations nécessaires :
Type PARAMPIC x As Single y As Single 'Autres paramètres nécessaires à l'image End Type
Dim PicTable() As POINT Dim IndexPic As Integer 'Variable à initialiser à 0
Tu agrandis le tableau lorsque tu ajoutes une nouvelle image (pour des raisons pratiques, tu t'interdis l'utilisation de l'index 0 dans le tableau)
IndexPic = IndexPic + 1 Redim Preserve PicTable(IndexPic) 'Agrandit le tableau tout en préservant les valeurs déjà entrées
With PicTable(IndexPic) .x = ? .y = ? 'Initialiser les autres paramètres End With
Pour afficher les images, tu utilises alors le code suivant (code qui doit être au moins dans l'événement Paint de ton form) :
For a=1 to IndexPic 'Insérer le code pour le traitement des paramètres... NomForm.PaintPicture MonoPic, Pictable(a).x, PicTable(a).y Next a
Pour ce qui est de la couleur, tu ne peux pas échapper à l'utilisation de l'API Windows qui donne toutes les fonctions nécessaires pour un traitement rapide. Mais je ne peux pas beaucoup t'aider dans ce sens pour le moment, vue que c'est précisément là-dessus que je réfléchis actuellement (je vois comment faire, mais je ne connaît pas toutes les instructions par coeurs... et ce serait très long... beaucoup plus que la longueur actuelle de ce message, qui est déjà importante ;)
Bien, j'espère avoir répondu à ta (tes) question(s).
S'il y a des points obscures, n'hésite surtout pas à demander : si je suis dans le coin, je me ferais un plaisir de t'éclairer...
(; Sibo ;)
------------------------------- Réponse au message : -------------------------------
> > Bonsoir. > > je voudrais faire un truc un peu compliqué et je ne sais pas comment m'y prendre. Vos suggestions ou solutions sont les bien venues: > > soit: > > - J'ai des images schématiques monochromes (bmp par exemple) que je veux charger sur ma Form autant de fois que je veux et placer ensuite où je veux. J'ai besoin, pour que mon programme soit explicite, de pouvoir faire varier la couleur de cette (ces) image(s). Est-ce possible et comment? > > - J'ai des frames contenant chacune une shape et des lignes schématiques monochromes. Je sais faire varier les couleurs de la shape et des lignes mais comment faire pour dupliquer ces frames et leur contenu, pendant l'execution, d'un clic par exemple, pour en multiplier le nombre à loisir en les indexant. Mêmes questions. > > En résumé, je veux disposer des "trucs" autour d'un cadre et en piloter les couleurs. > > Merci par avance. > > M@chto
|
|
jeudi 19 juin 2003 à 11:47:53 |
Re : Frames et shapes

machto
|
M@chto
------------------------------- Réponse au message : -------------------------------
> Bonjour tout d'abord ;) > > Pour la deuxième question, c'est assez simple : Je suppose que Frame est le nom de la Frame à l'écran, Shape est le nom de ta shape et Line1, Line2, ... sont les noms de tes lignes. Je suppose que tu as déjà créé un exemplaire de chaque au moment de la création. Pour pouvoir les duppliquer, tu dois créer des groupes de contrôles. Pour cela, tu dois modifier la propriété Index de chacun des composants en luii donnant la valeur '0'. Ensuite, pour duppliquer l'un des éléments, tu dois écrire le code suivant > > Load Frame(i) > with Frame(i) > .visible= true 'affiche l'objet à l'écran (c pas automatique) > 'Définition de la position et des dimensions de la frame > .top = ? 'Je te laisse le soin de remplacer les points d'interrogation ;) > .left = ? > .width = ? > .height = ? > 'Insérer ici les autres propriétés de l'objet nécessaires > end with > > Load Shape(i) > with Shape(i) > .visible = true > .parent = Frame(i) 'Indique l'objet devant contenir la shape > 'Insérer ici les propriétés de dimensions, comme pour Frame (sauf qu'ici, les coordonnées fournies sont celles relatives coordonnées de la Frame > 'Insérer les autres propriétés nécessaires (forme, couleur intérieure (.BackColor il me semble), couleur de la bordure, etc.) > end with > > 'Répéter le code suivant pour chaque ligne (en changeant le numéro) > Load Line(i) > with Line(i) > .visible = true > .parent = Frame(i) > 'Insérer toutes les autres propriétés nécessaires... > end with > > A la fin de la création, il ne reste plus qu'à incrémenter i > > i = i + 1 > > et on est près pour une nouvelle dupplication. > > La variable i représente une valeur d'index non utilisé. Plusieurs choix pour sa déclaration : si la dupplication se fait toujours dans la même fonction, tu peux la déclarer en 'static' dans cette fonction et l'initialiser à 1 : > > Static i As Integer > if i=0 then i=1 > > Si tu possède dans ton programme plusieurs fonctions succeptibles de créer des éléments dans un des groupes, tu la déclares au niveau module et tu l'initialises en début de programme à 1 également > > Il se peut que tu ais déjà créé un groupe de controles pour les lignes contenues dans la frame (Line(0), Line(1), etc...) > Qu'à cela ne tienne, il suffit de changer l'index 'i' pour les lignes par un autre index, indépendant, 'j' par exemple (original n'est-ce pas ? ;). Ceci a l'avantage de réduire la taille du code à écrire. Supposons que ta frame contient 'n' lignes : on a alors le code suivant (qui remplace celui concernant les lignes écrit plus haut) Je suppose déclarée la variable compteur 'a' , et 'j' initialisée à une valeur d'index non utilisé (les remarques pour 'i' plus haut sont aussi valables ici) : > > For a=1 to n > Load Line(j) > with Line(j) > .visible = true > .parent = Frame(i) 'c'est bien un 'i' ici > 'Autres propriétés... > end with > j = j + 1 'Ne pas oublier l'incrémentation > Next a > > Ce procédé est très pratique : il permet par exemple de créer un nombre variable de lignes dans chaque frame (en faisant varier n d'un appel à l'autre). > > Au moment de la création d'un objet dans un groupe, on ne peut pas être certain des valeurs prises par les propriétés de l'objet. Il est donc conseillé, lorqu'on charge un objet, de définir toutes les propriétés dont on a besoin explicitement. > > > VOILA pour la deuxième question. > > > Pour la première... ct quoi déjà ? ;) Ah oui... > La réponse : Ca dépend ce que tu veux en faire... > 1) Si cette image est chargée au moment de la création dans un controle Image, pour le duppliquer, tu procèdes comme avec les objets Frame, Shape et Line. > 2) Si cette image est chargée au moment de l'execution (ie par le code) dans un objet Picture (nommé par exemple MonoPic), grace à la fonction LoadPicture, et que tu veux l'afficher directement dans le contexte graphique de ton form, tu peux utiliser la méthode très utile 'PaintPicture' comme suit : > > NomForm.PaintPicture MonoPic, x, y > > où x et y sont les coordonnées du coin supérieur gauche de l'image. Bien sûr, cette méthode suppose que tu redessines les contrôles chaque fois que nécessaire (dans l'événement Paint de ton form), ce qui suppose de connaîtres la listes des coordonnées du coin supérieur gauche de chacune des images à afficher : Cela peut se faire en utilisant un tableau dynamique de structures PARAMPIC par exemple. Voici les déclarations nécessaires : > > Type PARAMPIC > x As Single > y As Single > 'Autres paramètres nécessaires à l'image > End Type > > Dim PicTable() As POINT > Dim IndexPic As Integer 'Variable à initialiser à 0 > > Tu agrandis le tableau lorsque tu ajoutes une nouvelle image (pour des raisons pratiques, tu t'interdis l'utilisation de l'index 0 dans le tableau) > > IndexPic = IndexPic + 1 > Redim Preserve PicTable(IndexPic) 'Agrandit le tableau tout en préservant les valeurs déjà entrées > > With PicTable(IndexPic) > .x = ? > .y = ? > 'Initialiser les autres paramètres > End With > > Pour afficher les images, tu utilises alors le code suivant (code qui doit être au moins dans l'événement Paint de ton form) : > > For a=1 to IndexPic > 'Insérer le code pour le traitement des paramètres... > NomForm.PaintPicture MonoPic, Pictable(a).x, PicTable(a).y > Next a > > Pour ce qui est de la couleur, tu ne peux pas échapper à l'utilisation de l'API Windows qui donne toutes les fonctions nécessaires pour un traitement rapide. Mais je ne peux pas beaucoup t'aider dans ce sens pour le moment, vue que c'est précisément là-dessus que je réfléchis actuellement (je vois comment faire, mais je ne connaît pas toutes les instructions par coeurs... et ce serait très long... beaucoup plus que la longueur actuelle de ce message, qui est déjà importante ;) > > > Bien, j'espère avoir répondu à ta (tes) question(s). > > S'il y a des points obscures, n'hésite surtout pas à demander : si je suis dans le coin, je me ferais un plaisir de t'éclairer... > > (; Sibo ;) > > > ------------------------------- > Réponse au message : > ------------------------------- > > > > > Bonsoir. > > > > je voudrais faire un truc un peu compliqué et je ne sais pas comment m'y prendre. Vos suggestions ou solutions sont les bien venues: > > > > soit: > > > > - J'ai des images schématiques monochromes (bmp par exemple) que je veux charger sur ma Form autant de fois que je veux et placer ensuite où je veux. J'ai besoin, pour que mon programme soit explicite, de pouvoir faire varier la couleur de cette (ces) image(s). Est-ce possible et comment? > > > > - J'ai des frames contenant chacune une shape et des lignes schématiques monochromes. Je sais faire varier les couleurs de la shape et des lignes mais comment faire pour dupliquer ces frames et leur contenu, pendant l'execution, d'un clic par exemple, pour en multiplier le nombre à loisir en les indexant. Mêmes questions. > > > > En résumé, je veux disposer des "trucs" autour d'un cadre et en piloter les couleurs. > > > > Merci par avance. > > > > M@chto >
|
|
jeudi 19 juin 2003 à 11:51:59 |
Re : Frames et shapes

machto
|
Bonjour. Merci, tu as l'air d'être un pro, moi je débute et me suis lancé dans un prog un peu difficile pour moi, mais ça me permet de progresser. Je n'ai pas tout compris pour l'instant, je reverrai ça à tête reposée. Ce qui m'oimporte, c'est que cela soit possible. En tout cas, merci d'avoir pris le temps. A+
M@chto
------------------------------- Réponse au message : -------------------------------
> Bonjour tout d'abord ;) > > Pour la deuxième question, c'est assez simple : Je suppose que Frame est le nom de la Frame à l'écran, Shape est le nom de ta shape et Line1, Line2, ... sont les noms de tes lignes. Je suppose que tu as déjà créé un exemplaire de chaque au moment de la création. Pour pouvoir les duppliquer, tu dois créer des groupes de contrôles. Pour cela, tu dois modifier la propriété Index de chacun des composants en luii donnant la valeur '0'. Ensuite, pour duppliquer l'un des éléments, tu dois écrire le code suivant > > Load Frame(i) > with Frame(i) > .visible= true 'affiche l'objet à l'écran (c pas automatique) > 'Définition de la position et des dimensions de la frame > .top = ? 'Je te laisse le soin de remplacer les points d'interrogation ;) > .left = ? > .width = ? > .height = ? > 'Insérer ici les autres propriétés de l'objet nécessaires > end with > > Load Shape(i) > with Shape(i) > .visible = true > .parent = Frame(i) 'Indique l'objet devant contenir la shape > 'Insérer ici les propriétés de dimensions, comme pour Frame (sauf qu'ici, les coordonnées fournies sont celles relatives coordonnées de la Frame > 'Insérer les autres propriétés nécessaires (forme, couleur intérieure (.BackColor il me semble), couleur de la bordure, etc.) > end with > > 'Répéter le code suivant pour chaque ligne (en changeant le numéro) > Load Line(i) > with Line(i) > .visible = true > .parent = Frame(i) > 'Insérer toutes les autres propriétés nécessaires... > end with > > A la fin de la création, il ne reste plus qu'à incrémenter i > > i = i + 1 > > et on est près pour une nouvelle dupplication. > > La variable i représente une valeur d'index non utilisé. Plusieurs choix pour sa déclaration : si la dupplication se fait toujours dans la même fonction, tu peux la déclarer en 'static' dans cette fonction et l'initialiser à 1 : > > Static i As Integer > if i=0 then i=1 > > Si tu possède dans ton programme plusieurs fonctions succeptibles de créer des éléments dans un des groupes, tu la déclares au niveau module et tu l'initialises en début de programme à 1 également > > Il se peut que tu ais déjà créé un groupe de controles pour les lignes contenues dans la frame (Line(0), Line(1), etc...) > Qu'à cela ne tienne, il suffit de changer l'index 'i' pour les lignes par un autre index, indépendant, 'j' par exemple (original n'est-ce pas ? ;). Ceci a l'avantage de réduire la taille du code à écrire. Supposons que ta frame contient 'n' lignes : on a alors le code suivant (qui remplace celui concernant les lignes écrit plus haut) Je suppose déclarée la variable compteur 'a' , et 'j' initialisée à une valeur d'index non utilisé (les remarques pour 'i' plus haut sont aussi valables ici) : > > For a=1 to n > Load Line(j) > with Line(j) > .visible = true > .parent = Frame(i) 'c'est bien un 'i' ici > 'Autres propriétés... > end with > j = j + 1 'Ne pas oublier l'incrémentation > Next a > > Ce procédé est très pratique : il permet par exemple de créer un nombre variable de lignes dans chaque frame (en faisant varier n d'un appel à l'autre). > > Au moment de la création d'un objet dans un groupe, on ne peut pas être certain des valeurs prises par les propriétés de l'objet. Il est donc conseillé, lorqu'on charge un objet, de définir toutes les propriétés dont on a besoin explicitement. > > > VOILA pour la deuxième question. > > > Pour la première... ct quoi déjà ? ;) Ah oui... > La réponse : Ca dépend ce que tu veux en faire... > 1) Si cette image est chargée au moment de la création dans un controle Image, pour le duppliquer, tu procèdes comme avec les objets Frame, Shape et Line. > 2) Si cette image est chargée au moment de l'execution (ie par le code) dans un objet Picture (nommé par exemple MonoPic), grace à la fonction LoadPicture, et que tu veux l'afficher directement dans le contexte graphique de ton form, tu peux utiliser la méthode très utile 'PaintPicture' comme suit : > > NomForm.PaintPicture MonoPic, x, y > > où x et y sont les coordonnées du coin supérieur gauche de l'image. Bien sûr, cette méthode suppose que tu redessines les contrôles chaque fois que nécessaire (dans l'événement Paint de ton form), ce qui suppose de connaîtres la listes des coordonnées du coin supérieur gauche de chacune des images à afficher : Cela peut se faire en utilisant un tableau dynamique de structures PARAMPIC par exemple. Voici les déclarations nécessaires : > > Type PARAMPIC > x As Single > y As Single > 'Autres paramètres nécessaires à l'image > End Type > > Dim PicTable() As POINT > Dim IndexPic As Integer 'Variable à initialiser à 0 > > Tu agrandis le tableau lorsque tu ajoutes une nouvelle image (pour des raisons pratiques, tu t'interdis l'utilisation de l'index 0 dans le tableau) > > IndexPic = IndexPic + 1 > Redim Preserve PicTable(IndexPic) 'Agrandit le tableau tout en préservant les valeurs déjà entrées > > With PicTable(IndexPic) > .x = ? > .y = ? > 'Initialiser les autres paramètres > End With > > Pour afficher les images, tu utilises alors le code suivant (code qui doit être au moins dans l'événement Paint de ton form) : > > For a=1 to IndexPic > 'Insérer le code pour le traitement des paramètres... > NomForm.PaintPicture MonoPic, Pictable(a).x, PicTable(a).y > Next a > > Pour ce qui est de la couleur, tu ne peux pas échapper à l'utilisation de l'API Windows qui donne toutes les fonctions nécessaires pour un traitement rapide. Mais je ne peux pas beaucoup t'aider dans ce sens pour le moment, vue que c'est précisément là-dessus que je réfléchis actuellement (je vois comment faire, mais je ne connaît pas toutes les instructions par coeurs... et ce serait très long... beaucoup plus que la longueur actuelle de ce message, qui est déjà importante ;) > > > Bien, j'espère avoir répondu à ta (tes) question(s). > > S'il y a des points obscures, n'hésite surtout pas à demander : si je suis dans le coin, je me ferais un plaisir de t'éclairer... > > (; Sibo ;) > > > ------------------------------- > Réponse au message : > ------------------------------- > > > > > Bonsoir. > > > > je voudrais faire un truc un peu compliqué et je ne sais pas comment m'y prendre. Vos suggestions ou solutions sont les bien venues: > > > > soit: > > > > - J'ai des images schématiques monochromes (bmp par exemple) que je veux charger sur ma Form autant de fois que je veux et placer ensuite où je veux. J'ai besoin, pour que mon programme soit explicite, de pouvoir faire varier la couleur de cette (ces) image(s). Est-ce possible et comment? > > > > - J'ai des frames contenant chacune une shape et des lignes schématiques monochromes. Je sais faire varier les couleurs de la shape et des lignes mais comment faire pour dupliquer ces frames et leur contenu, pendant l'execution, d'un clic par exemple, pour en multiplier le nombre à loisir en les indexant. Mêmes questions. > > > > En résumé, je veux disposer des "trucs" autour d'un cadre et en piloter les couleurs. > > > > Merci par avance. > > > > M@chto >
|
|
mercredi 25 juin 2003 à 10:06:43 |
Re : Frames et shapes

machto
|
Bonjour, j'ai voulu essayer ce code (réponse de la 2° question) mais j'ai qques difficultés: - Ce dode, tu le mets dans quoi? Un module? - Comment dois-je l'utiliser pour faire les duplications "en live" pendant mon programme? - Tu parles de "fonction" pour déclarer (i). Je n'ai pas encore abordé ce type de code dans mon "apprentissage". Que veux-tu dire et que dois-je faire? Je te remercie par avance.
M@chto
------------------------------- Réponse au message : -------------------------------
> Bonjour tout d'abord ;) > > Pour la deuxième question, c'est assez simple : Je suppose que Frame est le nom de la Frame à l'écran, Shape est le nom de ta shape et Line1, Line2, ... sont les noms de tes lignes. Je suppose que tu as déjà créé un exemplaire de chaque au moment de la création. Pour pouvoir les duppliquer, tu dois créer des groupes de contrôles. Pour cela, tu dois modifier la propriété Index de chacun des composants en luii donnant la valeur '0'. Ensuite, pour duppliquer l'un des éléments, tu dois écrire le code suivant > > Load Frame(i) > with Frame(i) > .visible= true 'affiche l'objet à l'écran (c pas automatique) > 'Définition de la position et des dimensions de la frame > .top = ? 'Je te laisse le soin de remplacer les points d'interrogation ;) > .left = ? > .width = ? > .height = ? > 'Insérer ici les autres propriétés de l'objet nécessaires > end with > > Load Shape(i) > with Shape(i) > .visible = true > .parent = Frame(i) 'Indique l'objet devant contenir la shape > 'Insérer ici les propriétés de dimensions, comme pour Frame (sauf qu'ici, les coordonnées fournies sont celles relatives coordonnées de la Frame > 'Insérer les autres propriétés nécessaires (forme, couleur intérieure (.BackColor il me semble), couleur de la bordure, etc.) > end with > > 'Répéter le code suivant pour chaque ligne (en changeant le numéro) > Load Line(i) > with Line(i) > .visible = true > .parent = Frame(i) > 'Insérer toutes les autres propriétés nécessaires... > end with > > A la fin de la création, il ne reste plus qu'à incrémenter i > > i = i + 1 > > et on est près pour une nouvelle dupplication. > > La variable i représente une valeur d'index non utilisé. Plusieurs choix pour sa déclaration : si la dupplication se fait toujours dans la même fonction, tu peux la déclarer en 'static' dans cette fonction et l'initialiser à 1 : > > Static i As Integer > if i=0 then i=1 > > Si tu possède dans ton programme plusieurs fonctions succeptibles de créer des éléments dans un des groupes, tu la déclares au niveau module et tu l'initialises en début de programme à 1 également > > Il se peut que tu ais déjà créé un groupe de controles pour les lignes contenues dans la frame (Line(0), Line(1), etc...) > Qu'à cela ne tienne, il suffit de changer l'index 'i' pour les lignes par un autre index, indépendant, 'j' par exemple (original n'est-ce pas ? ;). Ceci a l'avantage de réduire la taille du code à écrire. Supposons que ta frame contient 'n' lignes : on a alors le code suivant (qui remplace celui concernant les lignes écrit plus haut) Je suppose déclarée la variable compteur 'a' , et 'j' initialisée à une valeur d'index non utilisé (les remarques pour 'i' plus haut sont aussi valables ici) : > > For a=1 to n > Load Line(j) > with Line(j) > .visible = true > .parent = Frame(i) 'c'est bien un 'i' ici > 'Autres propriétés... > end with > j = j + 1 'Ne pas oublier l'incrémentation > Next a > > Ce procédé est très pratique : il permet par exemple de créer un nombre variable de lignes dans chaque frame (en faisant varier n d'un appel à l'autre). > > Au moment de la création d'un objet dans un groupe, on ne peut pas être certain des valeurs prises par les propriétés de l'objet. Il est donc conseillé, lorqu'on charge un objet, de définir toutes les propriétés dont on a besoin explicitement. > > > VOILA pour la deuxième question. > > > Pour la première... ct quoi déjà ? ;) Ah oui... > La réponse : Ca dépend ce que tu veux en faire... > 1) Si cette image est chargée au moment de la création dans un controle Image, pour le duppliquer, tu procèdes comme avec les objets Frame, Shape et Line. > 2) Si cette image est chargée au moment de l'execution (ie par le code) dans un objet Picture (nommé par exemple MonoPic), grace à la fonction LoadPicture, et que tu veux l'afficher directement dans le contexte graphique de ton form, tu peux utiliser la méthode très utile 'PaintPicture' comme suit : > > NomForm.PaintPicture MonoPic, x, y > > où x et y sont les coordonnées du coin supérieur gauche de l'image. Bien sûr, cette méthode suppose que tu redessines les contrôles chaque fois que nécessaire (dans l'événement Paint de ton form), ce qui suppose de connaîtres la listes des coordonnées du coin supérieur gauche de chacune des images à afficher : Cela peut se faire en utilisant un tableau dynamique de structures PARAMPIC par exemple. Voici les déclarations nécessaires : > > Type PARAMPIC > x As Single > y As Single > 'Autres paramètres nécessaires à l'image > End Type > > Dim PicTable() As POINT > Dim IndexPic As Integer 'Variable à initialiser à 0 > > Tu agrandis le tableau lorsque tu ajoutes une nouvelle image (pour des raisons pratiques, tu t'interdis l'utilisation de l'index 0 dans le tableau) > > IndexPic = IndexPic + 1 > Redim Preserve PicTable(IndexPic) 'Agrandit le tableau tout en préservant les valeurs déjà entrées > > With PicTable(IndexPic) > .x = ? > .y = ? > 'Initialiser les autres paramètres > End With > > Pour afficher les images, tu utilises alors le code suivant (code qui doit être au moins dans l'événement Paint de ton form) : > > For a=1 to IndexPic > 'Insérer le code pour le traitement des paramètres... > NomForm.PaintPicture MonoPic, Pictable(a).x, PicTable(a).y > Next a > > Pour ce qui est de la couleur, tu ne peux pas échapper à l'utilisation de l'API Windows qui donne toutes les fonctions nécessaires pour un traitement rapide. Mais je ne peux pas beaucoup t'aider dans ce sens pour le moment, vue que c'est précisément là-dessus que je réfléchis actuellement (je vois comment faire, mais je ne connaît pas toutes les instructions par coeurs... et ce serait très long... beaucoup plus que la longueur actuelle de ce message, qui est déjà importante ;) > > > Bien, j'espère avoir répondu à ta (tes) question(s). > > S'il y a des points obscures, n'hésite surtout pas à demander : si je suis dans le coin, je me ferais un plaisir de t'éclairer... > > (; Sibo ;) > > > ------------------------------- > Réponse au message : > ------------------------------- > > > > > Bonsoir. > > > > je voudrais faire un truc un peu compliqué et je ne sais pas comment m'y prendre. Vos suggestions ou solutions sont les bien venues: > > > > soit: > > > > - J'ai des images schématiques monochromes (bmp par exemple) que je veux charger sur ma Form autant de fois que je veux et placer ensuite où je veux. J'ai besoin, pour que mon programme soit explicite, de pouvoir faire varier la couleur de cette (ces) image(s). Est-ce possible et comment? > > > > - J'ai des frames contenant chacune une shape et des lignes schématiques monochromes. Je sais faire varier les couleurs de la shape et des lignes mais comment faire pour dupliquer ces frames et leur contenu, pendant l'execution, d'un clic par exemple, pour en multiplier le nombre à loisir en les indexant. Mêmes questions. > > > > En résumé, je veux disposer des "trucs" autour d'un cadre et en piloter les couleurs. > > > > Merci par avance. > > > > M@chto >
|
|
jeudi 27 novembre 2003 à 10:47:27 |
Re : Frames et shapes

cirrus
|
j 'ai lu la repsone formuler et la chtite question mais je kroa qu'il y a un pblm : tu dit qu'on peut affecter une valuer à la propriété parent ? comment tu fait ?
frame.parent = qqchose
je croit que c imposible
se qui ammene am am 2 ème question. comment faire pour dupliquer plusieur frame avec des controles à l'interieur ?
|
|
Cette discussion est classée dans : exemple, frames, shapes, schématiques, monochromes
Répondre à ce message
Sujets en rapport avec ce message
Exemple de menu [ par 2001 ]
est ce que quelqu'un aurait un exemple de menu avec sous menu le tout déroulant?meme genre que celui dans vb ou un navigateur.merci de votre aide
Insérer du texte dans un textbox [ par phil ]
Salut !J'ai un textbox,je suis a un endroit donne dans le contenu du textbox (exemple : en plein milieu).Je clique sur un bouton et je veux qu'a l'end
Exemple lecture / ecriture port COM 1 [ par beber ]
débutant !Je recherche des sources permettant de lire le port com 1 (interuption par évenement) et de mettre les donnees dans un fichier texte.Merci d
Modifications des paramètres systèmes de la souris [ par alex ]
Bonjour à tousquelqu'un peut il m'aider pour gérer les clics de la souris.A savoir que je voudrais par exemple modifier les paramètres systèmes de la
Exemple de forum [ par Jo Ace ]
Qui pourrait me donner un exemple de forum en ASP (j'ai viewé le code des pages de Nix et ce que je trouve c'est ALPHADESK CODE (c'est pas marrant)) ?
Utilisation de classes et de membres [ par Raf ]
Bonjour, je débute en VB et je souhaiterai un exemple concret d'utilisation de classes et sourtout d'un membre de cette classe.Bien sûr, je souhaitera
Important! Urgent! Texte [ par WebMagique ]
j'ai un grave problème: j'ai fais un programme.Pendant ce programme, l'utilisateur change certaines choses(bien normal!)Exemple: Image1.left= 12
Copier un fichier [ par rabusier ]
Je n'arrive pas a copier un fichier. Par exemple, je lis un fichier, j'en extrait les variables nécessaires, et je fais par exemple FileCopy source, d
Angle d'une image... Assez urgent! :-) [ par WebMagique ]
Je veux faire un jeu de course de voitures 2D en VB6...J'ai une image de voiture dont l'avant est à gaucheExemple: /¯¯¯|¯\¯¯¯¯¯|¯¯¯¯¯/|¯¯
Détection d'OS ???? [ par Raf ]
Bonjour,Je souhaiterai détecter grâce à une DLL (par exemple) le systéme d'exploitation d'un PC.En effet, si le PC tourne avec win 95/98 par exemple i
Livres en rapport
|
Derniers Blogs
[MIX 2010] - TELECHARGEZ INTERNET EXPLORER 9 EN PREVIEW ![MIX 2010] - TELECHARGEZ INTERNET EXPLORER 9 EN PREVIEW ! par redo
La Preview de Windows Explorer 9 est maintenant disponible à l'adresse suivante : http://ie.microsoft.com/testdrive/ Cette version ne nécessite pas un redémarrage de votre machine pour être exploitée . Cette version est fonctionnelle mais reste cependant ...
Cliquez pour lire la suite de l'article par redo [MIX 2010] - KEYNOTE DAY 2 ONLINE : WINDOWS INTERNET EXPLORER 9, JQUERY, ODATA ET DALLAS CTP2 ![MIX 2010] - KEYNOTE DAY 2 ONLINE : WINDOWS INTERNET EXPLORER 9, JQUERY, ODATA ET DALLAS CTP2 ! par redo
Dans la lignée du premier keynote, retrouvez la vidéo du second keynote en ligne : Visionnez la vidéo à l'url suivante : http://www.microsoft.com/presspass/events/mix/VideoGallery.aspx Vous y retrouverez ainsi les speakers Scott Guthrie, Dean Hachamovitch...
Cliquez pour lire la suite de l'article par redo [MIX 2010] - RETOUR D'EXPéRIENCE DéVELOPPEMENT SEESMIC SUR WINDOWS PHONE 7[MIX 2010] - RETOUR D'EXPéRIENCE DéVELOPPEMENT SEESMIC SUR WINDOWS PHONE 7 par redo
En avant première, Loic le retour d'expérience de Loïc Le Meur du portage de l'application http://seesmic.com/ sur plateforme Windows Phone 7 . c'était d'ailleurs une des rares opportunités de tester, voir toucher le nouveau device . voyez par vous-même :...
Cliquez pour lire la suite de l'article par redo [MIX 2010] - LE KEYNOTE DAY 1 DISPONIBLE ONLINE ![MIX 2010] - LE KEYNOTE DAY 1 DISPONIBLE ONLINE ! par redo
Si tout comme moi, vous avez manqué de peu le premier keynote du Microsoft Mix 2010, je vous invite à prendre deux heure et le consulter ci-dessous . Visionnez le Keynote à l'url suivante : http://www.microsoft.com/Presspass/events/mix/videoGallery.aspx?c...
Cliquez pour lire la suite de l'article par redo VISUAL STUDIO TALK SHOW: EF4VISUAL STUDIO TALK SHOW: EF4 par Matthieu MEZIL
La semaine dernière, j'étais à Montréal pour y animer des conférences sur Entity Framework. J'en ai profité pour enregister un podcast Visual Studio Talk Show que vous pouvez retrouver ici ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL
Forum
FRAMEFRAME par STDANTIGNY
Cliquez pour lire la suite par STDANTIGNY
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|