| grouper tous les objets d'un même formulaire | |
|
+4Jicehel Jean Claude JL35 ambroise 8 participants |
Auteur | Message |
---|
ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: grouper tous les objets d'un même formulaire Sam 5 Mai 2012 - 11:00 | |
| Bonjour,
Est-il possible de grouper un ensemble d'affichages d'un même formulaire (alphas + edit + combo + ... + ... ) sous un même label afin de supprimer, lorsque nécessaire, ce groupe d'un coup d'un seul, évitant ainsi le fastidieux delete de chacun des nombreux objets de ce groupe l'un après l'autre ? Un peu comme en html, tous les éléments d'un même formulaire sont groupés entre les balises <form>... </form> .
Je vous remercie.
| |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: grouper tous les objets d'un même formulaire Sam 5 Mai 2012 - 11:25 | |
| Bonjour ambroise, Pareil, tu définis une FORM (éventuellement temporaire) à part dans laquelle tous les éléments liés entre eux: - Code:
-
FORM n: TOP... WIDTH ... ... ALPHA n+1: PARENT n+1, n: TOP .... EDIT n+2: PARENT n+2, n: TOP ... COMBO n+3: PARENT n+3, n: TOP ... La fonction PARENT lie l'objet à la Form. HIDE n cache l'ensemble de la Form et son contenu. SHOW n montre le tout. DELETE n supprime la Form et tous les objets contenus. | |
|
| |
Invité Invité
| Sujet: Re: grouper tous les objets d'un même formulaire Sam 5 Mai 2012 - 12:22 | |
| Faut pas oublier CONTAINER, qui fait la même chose dans la même forme |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: grouper tous les objets d'un même formulaire Sam 5 Mai 2012 - 12:29 | |
| salut à vous,
J'ajoute que l'on peut faire exactement pareil avec CONTAINER. Si on DELETE le CONTAINER tout les objets dont il est le PARENT sont supprimés.
A+
PS: Salut Comos, on a eu la même idée...., mais tu es plus rapide | |
|
| |
ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: grouper tous les objets d'un même formulaire Sam 5 Mai 2012 - 16:15 | |
| merci à tous trois.
J'ai testé le container. Tout s'affiche bien. Ce container contient un bouton d'enregistrement des données du formulaire dans un fichier texte, qui, une fois le travail fait, supprime le formulaire par la fonction delete numero_container%. Après appui sur ce bouton, l'enregistrement dans le fichier a réussi mais j'ai l'erreur suivante :
AbstractError.
Qu'est-ce que cela signifie ?
En remplaçant le delete par hide, je n'obtiens pas cette erreur. | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: grouper tous les objets d'un même formulaire Sam 5 Mai 2012 - 19:01 | |
| Heu ! y a un truc bizarre, ce code me provoque un accès violation - Code:
-
label start container 1:left 1,50:top 1,50 button 2:parent 2,1:top 2,10:left 2,10:caption 2,"enregistre" on_click 2,start end start: delete 1 return
A+ | |
|
| |
ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: grouper tous les objets d'un même formulaire Sam 5 Mai 2012 - 19:05 | |
| Ton problème ne viendrait-il pas de tes top et left qui ne sont pas logiques ? Le bouton me semble hors du container. | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: grouper tous les objets d'un même formulaire Sam 5 Mai 2012 - 19:12 | |
| Non c'est pas çà le problème, j'ai mis top et left à 10 pour que le bouton ne masque pas une partie du container.
çà ressemble à un bug, mais attendons les collègues....
A+ c'est l'heure de l'apéro... | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: grouper tous les objets d'un même formulaire Sam 5 Mai 2012 - 19:37 | |
| C'est un truc connu, Klaus a déjà fait une explication la dessus. Du genre, tu ne peux pas supprimer la form qui contient le bouton qui fait la procédure que tu appelles. Je ne me rappelle plus exactement, mais tu peux faire une recherche avancé avec le message d'erreur dans google. Tu retomberas sur l'explication fourni. Je profite de ma réponse pour inviter tous les nouveaux à toujours faire ça quand ils ont un problème. Souvent le problème qu'ils rencontrent à déjà une réponse sur le forum (mais pas toujours). Autant commencer par chercher, c'est souvent plus rapide et ça évite à des gens comme Klaus d'avoir à trop se répéter, (même s'il ne râle jamais ...) | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: grouper tous les objets d'un même formulaire Sam 5 Mai 2012 - 20:31 | |
| Jicehel a raison, c'est logique d'avoir une erreur si on veut supprimer un objet qui est en cours de traitement.
@ambroise, pourquoi les top et left de Jean-Claude ne sont-ils pas logiques ? Tu ne le sais peut-être pas, mais on peut y mettre n'importe quelle valeur, y compris des valeurs négatives, par exemple TOP 2,-100: LEFT 2,-200 dans ce cas, évidemment le bouton est invisible et on ne peut pas cliquer dessus, mauvais exemple ! Mais on peut très bien définir un objet hors de l'écran, donc invisible, écrire ou dessiner dedans, pour servir par exemple de zone de manoeuvre. Il est vrai qu'avec DLIST et IMAGE, qui sont invisibles, ça a perdu une partie de son intérêt. | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: grouper tous les objets d'un même formulaire Sam 5 Mai 2012 - 20:42 | |
| OK,
Le problème n'était pas connu de tout le monde (la preuve), mais çà ne répond pas au problème posé par Ambroise au départ, à moins que ce soit le même.
Merci de vos réponses.
A+
| |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: grouper tous les objets d'un même formulaire Sam 5 Mai 2012 - 21:06 | |
| L'Abstract error ? sans le code qui la provoque, il est difficile de se prononcer... J'ai déjà eu ça, mais je ne me souviens plus du tout pourquoi ! | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: grouper tous les objets d'un même formulaire Sam 5 Mai 2012 - 21:14 | |
| Si on fait une recherche avancée avec google sur le domaine panoramic avec le text "abstract error" on trouve trois réponses qui pointent sur le post ci dessous qui contient les explications: La première: https://panoramic.1fr1.net/t1746-suppression-d-un-objet-systeme-deleteCe sujet a également était abordé ailleurs, mais je ne sais plus quels avaient été les termes employés. | |
|
| |
Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: grouper tous les objets d'un même formulaire Sam 5 Mai 2012 - 21:14 | |
| Je suis à nouveau très loin du développement de PANORAMIC et je ne peux pas regarder le problème, mais dans le source que tu proposes: - Code:
-
label start container 1:left 1,50:top 1,50 button 2:parent 2,1:top 2,10:left 2,10:caption 2,"enregistre" on_click 2,start end start: delete 1 return
tu détruis le parent d'un objet, ici, le container d'un bouton. La solution serait d'interdire la destruction d'un objet quand il est le parent d'un autre objet, car je ne vois pas quel autre parent on pourrait affecter à l'objet dont on détruit le parent. Je vais y réfléchir dès que je rentre. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: grouper tous les objets d'un même formulaire Sam 5 Mai 2012 - 21:27 | |
| Il est clair que détruire un container ou une form qui contient l'objet dont la routine associée est en train d'exécuter, doit nécessairement conduire à une erreur. Ceci revient à rendre invalide l'adresse de l'instruction suivante à exécuter. Et, suivant la situation, conduit à une erreur de violation de mémoire (ce qui est encore le plus explicite) ou tout autre message, dont les textes sont tous sans signification réelle. On ne peut tout simplement pas scier la branche sur laquelle on est assis.
La solution, il faut la chercher ailleurs. Dans le traitement du bouton qui est censé provoquer la suppression de la form ou du container, il faut simplement positionner une variable drapeau, genre container_a_supprimer%, dont la valeur est 0 au début, et qui est mis à 1 dans le traitement du bouton. Et dans le programme principal, on vérifie de temps en temps si cette valeur est 1, et dans ce cas, on supprime le container. Cela peut être fait par un timer, par des tests à des endroits stratégiques, etc.
Voilà la soultion "propre" de ce problème. | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: grouper tous les objets d'un même formulaire Sam 5 Mai 2012 - 21:35 | |
| On peut également se contenter de cacher (hide) le container à l'appui sur le bouton si on n'est pas obligé de le détruire. Quitte à le détruire plus tard si besoin est, en testant un indicateur, comme dit Klaus. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: grouper tous les objets d'un même formulaire Sam 5 Mai 2012 - 21:56 | |
| Voici une maquette du procédé que j'ai décrit ci-dessus: - Le programme affiche un bouton "Ouvrir" - un clic sur ce bouton ouvre une fenêtre avec un bouton "Fermer" - un clic sur ce bouton provoque la suppression de la fenêtre et du bouton, via un timer activé par le bouton "Fermer" Et le fenêtre et son bouton sont bien supprimés, sinon, au clic suivant sur le bouton "Ouvrir", on aurait une erreur sur objet déjà existant. Voilà donc une technique propre de résoudre ce problème. A l'évidence, il ne s'agit pas d'un bug, et je pense que cela ne requiert pas de modification de la part de Jack, sauf à faire éventuellement un message d'erreur plus parlant en cas de suppression de l'objet dont la routine d'évènement est en cours. Mais je pense que l'image de la branche sciée est claire pour tout le monde. Voici le code: - Code:
-
label supprimer, fermer, ouvrir
dim i%, x% dim n_form% : n_form% = 10
timer 1 : timer_off 1 : timer_interval 1,100 on_timer 1,supprimer button 2 : top 2,10 : left 2,10 caption 2,"Ouvrir" : on_click 2,ouvrir
end ouvrir: form n_form% : top n_form%,20 : left n_form%,20 button n_form%+1 : parent n_form%+1,n_form% top n_form%+1,30 : left n_form%+1,30 caption n_form%+1,"Fermer" on_click n_form%+1,fermer return
supprimer: timer_off 1 delete n_form% return fermer: timer_on 1 return
| |
|
| |
bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: grouper tous les objets d'un même formulaire Sam 5 Mai 2012 - 23:53 | |
| Je viens de regarder le problème du container et de la suppression de tout ce qu'il y a dedans. Je vous donne ma solution, j'ai rajouté un bouton "menu" qui crée le container et quand on clique sur enregistre, il disparait. - Code:
-
dim i label repete,creer gosub creer button 3:top 3,10:left 3,100:caption 3,"Menu" timer 4:timer_interval 4,10:on_timer 4,repete end repete: if clicked(3)=1 then gosub creer:i=0 if i=1 then return if clicked(2)=1 then delete 1:i=1 return creer: container 1:left 1,50:top 1,50 button 2:parent 2,1:top 2,10:left 2,10:caption 2,"enregistre" return A+ | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: grouper tous les objets d'un même formulaire Dim 6 Mai 2012 - 0:04 | |
| Salut Bignono Dans l’exemple que tu donne, si je clique sur le bouton Menu, j’obtiens l’erreur « (62) object already defined, Line 13 »
| |
|
| |
bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: grouper tous les objets d'un même formulaire Dim 6 Mai 2012 - 0:11 | |
| Salut Papydall Effectivement tu as raison, Je me suis un peu trop vite emballé et je n'ai pas vérifié cette option là. Donc voici le code rectifié et qui marche: - Code:
-
dim i label repete,creer gosub creer button 3:top 3,10:left 3,100:caption 3,"Menu":hide 3 timer 4:timer_interval 4,10:on_timer 4,repete end repete: if clicked(3)=1 then gosub creer:i=0:hide 3 if i=1 then return if clicked(2)=1 then delete 1:i=1:show 3 return creer: container 1:left 1,50:top 1,50 button 2:parent 2,1:top 2,10:left 2,10:caption 2,"enregistre" return | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: grouper tous les objets d'un même formulaire Dim 6 Mai 2012 - 9:23 | |
| salut à tous
Voilà bien des réponses pour mon petit code, que j'ai construit pour étudier le problème de Ambroise. Les diverses solutions sont toutes intéressantes, et la proposition de Klaus d'un message d'erreur du genre "Impossible de supprimer l'objet système N car l'un de ses composants est en activité" ou quelque chose comme çà, est certainement une bonne chose.
J'aimerai bien que Ambroise nous dise si c'était bien le problème. Au besoin (comme le souligne justement JL35) fait-nous un code de démonstration.
A+ | |
|
| |
ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: grouper tous les objets d'un même formulaire Dim 6 Mai 2012 - 10:38 | |
| J'ai suivi avec attention la discussion sur l'erreur produite par le code de Jean-Claude, et ai appris qu'un enfant ne peut zigouiller son parent. Leçon qui me sera utile sans aucun doute dans l'élaboration de mes codes futurs... Mon propre code ne produisait pas cette erreur mais celle que j'indique plus haut. Après multiples modifications de code, essais et tâtonnements, l'erreur a disparu sans que j'en sache le pourquoi du comment. Merci pour votre attention à tous et votre temps. | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: grouper tous les objets d'un même formulaire Dim 6 Mai 2012 - 11:25 | |
| Il est vrai que parfois ce genre d'erreur (abstract error par exemple) finit par disparaître après modifications sans qu'on sache trop pourquoi. Même si ce n'est pas trop satisfaisant pour l'esprit, l'essentiel c'est de pouvoir continuer à coder ! | |
|
| |
Contenu sponsorisé
| Sujet: Re: grouper tous les objets d'un même formulaire | |
| |
|
| |
| grouper tous les objets d'un même formulaire | |
|