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
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|