Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| trou ou transparence dans un form | |
| | |
Auteur | Message |
---|
Invité Invité
| Sujet: trou ou transparence dans un form Dim 20 Juin 2010 - 22:44 | |
| Cette question s'adresse surtout à Klaus. Je ne pense pas que Jack ait le temps de répondre. A moins que d'autre développeur puissent intervenir. Est-il possible d'avoir une fenêtre avec un trou dedans, ou un objet transparent qui ne puisse être interféré par aucun objet de la forme. Je veux dire voir au dessous. çà fait un moment que j'aimerais avoir cela, et j'aimerai savoir si c'est possible.
Peut-être en même temps avoir un objet qui soit toujours dessus, quoiqu'on fasse.
Merci |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: trou ou transparence dans un form Dim 20 Juin 2010 - 23:09 | |
| Ce dont tu parles, est assez compliqué à réaliser, même pour des langages commerciaux. Actuellement, Panoramic ne peut pas faire cela.
Depuis quelque temps, je sais réaliser des fenêtres de n'importe quelle forme (rondes, ovales, en tête de mickey ou encore plus biscornues), à l'aide d'un freeware utilisant Visual Basic V4.
Les API Windows permettent de définit des "régions" de n'importe quelle forme, même avec des trous dedans, et de leur donner des attributs spécifiques et de gérer ces régions globalement, comme des fenêtres. C'est ce qui s'approche encore le plus à ce que tu demandes. On peut donc très bien imaginer une région en forme de rectangle avec un trou ovale au milieu qui serait une deuxième région. La première serait opaque comme d'habitude, et la deuxième peut être transparente ou semi-transparente, en réglant le canal alpha.
Tout ceci pourrait être fait par une routine dans une DLL, mais ce ne serait évidemment pas un objet Panoramic et ne pourrait donc en aucun cas être utilisé comme on le fait avec une form (placer d'autres objets dessus, gérer des évènements ...).
Dans Panoramic, il n'y a que l'objet form qui puisse être placé au-dessus d'autres objets par to_foreground, et à condition d'employer cette commande judicieusement dans les évènements qui pourraient placer autre chose devant une form donnée, on peut la maintenir systématiquement au-dessus de tout. Ceci n'est pas possible pour un autre objet Panoramic. Et si une fenêtre d'une autre application vient se mettre au-dessus, Panoramic n'en saura rien et ne pourra pas y remédier. | |
| | | Invité Invité
| Sujet: Re: trou ou transparence dans un form Lun 21 Juin 2010 - 0:00 | |
| Très aimable de m'avoir répondu.
Ce qui serait bien tout de même est que la commande to_foreground fonctionne réellement. sinon il faut passer son temps à la mettre, vu que le moindre click sur un objet, met cette instruction off_course.
Je ne sais pas si c'est complexe pour Jack d'imposer un objet par dessus les autres avec cette commande. Actuellement pour moi, elle ne sert à rien. Je crois qu'un set_focus fait la même chose que cette commande.
Merci |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: trou ou transparence dans un form Lun 21 Juin 2010 - 0:06 | |
| to_foreground n'a qu'une action momentanée. Elle sert à placer une form devant toutes les autgres, à un moment donnée. Ce que tu voudrais, c'est une commande demandant à Windows (et non plus à Panoramic) de maintenir une form au premier plan, devant toutes les fenêtres windows. Panoramic ne fait pas cela, mais cela pourrait être fait par une DLL... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: trou ou transparence dans un form Lun 21 Juin 2010 - 0:56 | |
| J'ai ajouté une fonction à ma DLL qui fait exactement cela: placer ou non une fenêtre devant toutes les autres, quoi qu'il arrive ! C'est la fonction WindowTopMost qui prend 2 paramètres: le handle de la form concernée, et une variable integer dont la valeur 1 place la fenêtre devant toutes les autres, et la valeur 0 la remet en mode normal. Voici mon petit programme d'essai de cette fonction: - Code:
-
label click_1
dim flag%, i%
flag% = 1
dll_on "KGF.dll" button 1 top 1,10 left 1,10 width 1,100 caption 1,"Toujours devant" on_click 1,click_1
end
click_1: i% = dll_call2("WindowTopMost",handle(0),flag%) flag% = 1 - flag% if flag%=1 caption 1,"Toujours devant" else caption 1,"Normal" end_if return
| |
| | | Invité Invité
| Sujet: Re: trou ou transparence dans un form Lun 21 Juin 2010 - 7:43 | |
| Je te répond rapidement, tout les jours je pars de bonne heure. D'abord, combien tu payes tes ouvriers pour pouvoir intervenir si rapidement? Les heures sup. ça coutent chers.
Je suis pas là pour la journée et je regarderais ta dll. Une chose: tu devrais mettre un numéro pour chaque nouvelle version. On peut avoir une Dll installé et oubliée quelque part et avoir des problèmes.
Une question: ce qui m'intéresse en parlant de trou, est de pouvoir avoir un form d'un autre programme et le voir en permanence tant que nécessaire, c'est à dire en travaillant sur cette form extérieure, elle disparaisse pas en cliquant par erreur à côté.
Je dois filer, on m'appelle. Salut |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: trou ou transparence dans un form Lun 21 Juin 2010 - 9:35 | |
| Pour les ouvriers, c'st simple: c'est moi. Eh oui, je suis à la retraite, et la programmation, c'est ma passion. alors, quand on aime, on ne compte pas !
Pour la version, tu as raison: je vais régler cela immédiatement.
Si j'ai bien compris, tu veux garder une fenêtre au-dessus de tout qui n'est pas une fenêtre ouverte par toi en Panoramic, mais venant d'un autre programme externe. Tout le problème consiste à récupérer le handle de cette fenêtre et on pourra appliquer ma routine WindowTopMost indifféremment, car elle n'est pas réservée aux fenêtres Panoramic. As-tu un moyen d'identifier la fenêtre qui t'intéresse? Par son titre par exemple ? ou par un autre moyen univoque ? Je pourrai alors faire ce qu'il faut. | |
| | | Invité Invité
| Sujet: Re: trou ou transparence dans un form Lun 21 Juin 2010 - 9:57 | |
| J'arrive mais je repars de suite. Ne cherchez pas, j'ai trouvé la solution, et je verrais cela ce soir, et je sais que ça marche. @+ |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: trou ou transparence dans un form Lun 21 Juin 2010 - 10:08 | |
| | |
| | | Invité Invité
| Sujet: Re: trou ou transparence dans un form Lun 21 Juin 2010 - 22:22 | |
| Cette j'ai une solution, mais c'est pas de la tarte. D'abord la form avec un trou (on voit le listing de l'éditeur derrière. ensuite renplit avec la form du programme distant Ce que je peux dire, c'est moins simple dans un programme dans lequel il faut adapter les dimensions de chaque editeur que je charge, en même temps que les objets qui n'auront pas toujours la même présentation. @ Klaus: Ce que je veux imposer dans la forme du programme, c'est celle d'un autre programme Panoramic exécutable. Aussi si c'est possible, dis moi comment faire pour rendre ceci possible. Ce sera plus simple. J'essaye de tout faire en Panoramic, mais parfois une exception n'est pas négligeable. Rappel: je transmets tout par le presse papier, d'un côté comme de l'autre. Dans le mémo, les infos sont ceux de la case cliquée dans la fenêtre qui s'est intégré. A titre d'information, je suis toujours dans les testes. Je mets au point la méthode de programmation simple pour ce type de programme Merci J'aimerai savoir tout de fois, si ce type de programme vous intéresse. Le programme de cellule permet de faire une grille dans laquelle on peut: faire des boites de message avec 3 boutons avec le texte qu'on veut. faire du texte dont le formatage est déjà fait; gras ou non italique, souligné, fonte diverse, des feuilles avec des cellules servant de boutons comme vous pouvez le voir Programmer une cellule avee placement à gauche, centré, à droite, pour les nombre: une particularité avec formatage lors de la frappe de ceux-ci avec le nombre de chiffres décimaux. A noté que dans ce cas, lors de la frappe, ceux-ci s'aligne à gauche de la virgule, en mettant les zéros à droite, et le décimaux à gauche de virgule, c'est celle-ci qui est positionnée. Faire du texte (mais qui est limité à la dimension du picture, vu que je n'ai pas les outils pour repérer la position d'un clic, lorsque je me sers de l'ascenseur), dont du texte dont les formats sont faits, là où vous écrivez, vous écrivez avec les couleurs, les styles du modèle. La transmission se fait par le presse papier des données, seul un petit programme permet la gestion des feuilles. Les possibilités de commande sont les suivant: Ouvrir un fichier déjà programmé , le fermer pour en ouvrir un autre, ouvrir un menu ou de le fermer, de débloquer la forme (quant je parle de forme, je je dire feuille ou fichier) pour la déplacer par exemple, ou d'ouvrir une feuille de commentaire (ça c'est pour moi parce que dans le programme, j'aurai surement besoin d'au moins 50 feuilles /celui que j'avais fait sur mon atari, avait plus de 300 feuilles) , on peux aussi mettre en gras ou normal une cellule, modifier sur chaque cellule la couleur de fond et du texte, je peux aussi envoyer un ordre d'impression (mais là je n'utilise pas KGF.dll, j'ai trop de chose à faire, et apparemment il y a beaucoup de truc à faire pour initialiser. Ce n'est pas une erreur de Klaus, mais lorsque j'ai une idée, je mets la priorité sur celle-ci, et j'arrive pas à rentrer de celles des autres, d'autant majoritairement je ne peux rester longtemps devant le clavier, et chaque fois rentrer dans le programme. J'utilise un petit programme en Justbasic pour imprimer, dont j'ai inclus un petit fichier de quelques kilos dans le répertoire ou Just... est installé. Le seul problème pour ce programme est qu'avec tous les outils que j'ai rajouté, il faut entre un seconde et demi, et trois secondes pour qu'un fichier soit ouvert, et si j'ouvre une boite de message, vous allez trouver cela trop long. A noter aussi que j'envoi l'ordre de fermeture depuis le programme. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: trou ou transparence dans un form Lun 21 Juin 2010 - 22:39 | |
| Très intéressant, ce que tu exposes. Comment as-tu fait pour créer ce "trou" dans la form Panoramic ? Je viens de mettre une nouvelle version da ma DLL en ligne avec la possibilité de créer un trou, mais je ne vois pas comment tu fais sans utiliser les API des régions Windows.
Pour bien comprendre ta demande: tu souhaites faire apparaître, à un endroit précis, une form d'un autre programme Panoramic ? Que tu aurais lancé ou qui tourne déjà ? Qui est identifié comment ?
Si tu lances ce programme pour le voir à travers le trou que tu as créé, il faut certainement qu'il reste "derrière", autrement dit, que ton programme reste toujours au premier plan. Ma DLL contient une fonction qui permet de faire cela. Ca pourrait être utile dans ton cas ? | |
| | | Invité Invité
| Sujet: Re: trou ou transparence dans un form Lun 21 Juin 2010 - 22:49 | |
| Pour la réponse du comment: tricher n'est pas joué comme on dit, et j'ai pas joué. Je prépare la réponse.
Pour ce qui concerne la forme, c'est celle du programme à cellule qui est compilé avec les outils de communication. Mon programme ouvre celui-ci, et ensuite je transmets l'ouverture de fichier, qui se place sur la forme du programme en cours. Le reste tu comprends. Ici c'est un trou, donc le clic sur le programme ne cache pas la fenêtre appelée.
Ce qui me serait plus utile qu'un trou, serait d'imposer cette fenêtre venant d'ailleurs pour qu'elle reste dessus, cela évite de faire un trou de la dimension, d'autant que chaque feuille aura une dimension différente.
Je prépare la réponse. |
| | | Invité Invité
| Sujet: Re: trou ou transparence dans un form Lun 21 Juin 2010 - 23:01 | |
| Donc voila: chaque couleur est une form, et je pensais qu'il serait possible de mettre le objets en double, sur les portion de form, et sur celle d'une form en dessous couvrant toute la surface. L'idée était d'utiliser cette surface, puis de mettre à hide celle-ci pour qu'apparaissent les portions de form qui n'en font qu'une visuellement. Partie du programme qui fait cela: - Code:
-
left 0,215:top 0,10:width 0,945:height 0,37
dim a$,controle1$ , saut$ , i% , b$ label fin , recoit_de_lotre_prg , recu_PressPapier , commande
form 12:top 12,48:left 12,215:width 12,100:height 12,600:border_hide 12 :' color 12,247,247,198 form 13:top 13,48:left 13,1020:width 13,10:height 13,600:border_hide 13 :' color 13,239,251,206 form 15:top 15,48:left 15,354:width 15,667:height 15,200:border_hide 15 :' color 15,255,178,181 form 16:top 16,600:left 16,354:width 16,667:height 16,048:border_hide 16 :' color 16,181,223,255
memo 2 :top 2,410:width 2,520:height 2,100:bar_horizontal 2:' color 2,255,251,231 timer 3 :timer_off 3 : on_timer 3,recoit_de_lotre_prg dlist 5 command_target_is 15 memo 6 :top 6,5:left 6,10:height 6,180:width 6,240:font_size 6,11:font_bold 6 :color 6,247,227,255 command_target_is 16 memo 7 :top 7,510:width 7,500:height 7,100:color 7,240,250,200
command_target_is 12 list 4 :left 4,5:height 4,300 :font_size 4,10 : on_click 4, commande show 0 |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: trou ou transparence dans un form Mar 22 Juin 2010 - 0:17 | |
| Merci ! J'ai compris comment tu fais. C'est une façon intéressante de réaliser cela uniquement avec les moyens de Panoramic. Dans peu de temps, j'ajouterai une fonction à ma DLL permettant de découper un trou rectangulaire dans une form, selon le modèle du trou en forme d'ellipse qui est déjà disponible. Ceci ne t'apportera rien de plus fonctionnellement, sauf à faciliter la programmation puisqu'une deule form suffira dans laquelle tu découperas le trou rectangulaire que tu veux, au pixel près. Pour forcer un programme à rester toujours au-dessus, il y a ma fonction DLL suivante: - Code:
-
placer une form toujours au-dessus ON/OFF I: res% = WindowTopMost(handle(numero_form),flag%) P: res% = DLL_call2(“WindowTopMost”,handle(numero_form),flag%) numero_form le numéro d’objet de la form concernée flag mode opératoire 1=toujours au-dessus 0=normal
Pour l'utiliser, il faut connaître le handle de la form concerné. Mais comme il s'agit de ton propre programme en Panoramic, ce dernier pourrait de communiquer via le presse-papier le handle concerné: s'il s'agit de la form 0, il suffit de récupérer le résultat de handle(0), par exemple. Et c'est cette valeur, placée dans une variable de type entier, qu'il faut passer à ma routine, de la façon suivante: - Code:
-
dim hand%, res%
' charger hand% par handle(0) du programme à forcer sur le dessus, reçu via le presse-papier
res% = DLL_call2(“WindowTopMost”,hand%,1) : ' forcer au-dessus de tout
res% = DLL_call2(“WindowTopMost”,hand%,0) : ' retour à l'état normal
Ca,c'est disponible dès maintenant ! | |
| | | Invité Invité
| Sujet: Re: trou ou transparence dans un form Mar 22 Juin 2010 - 7:13 | |
| Merci pour tes efforts. Je ferais les essais ce soir. Le trou dans la forme ne m'intéresse pas vraiment, c'était le seul moyen que j'avais pensé pour avoir une feuille qui reste devant (cela dit, c'est très intéressant). A chaque appel d'une feuille, le format étant différent, tu vois la complexité où cela mène (mais c'est faisable). Explique moi dans ta méthode: - Citation :
- placer une form toujours au-dessus ON/OFF
I: res% = WindowTopMost(handle(numero_form),flag%) P: res% = DLL_call2(“WindowTopMost”,handle(numero_form),flag%) C'est pas du basic avec "I" et "P", il y a quoi un mélange d'explication et de code? Je n'arrive pas à voir ce que ces deux lettres veulent dire. Peut-être un bon café fera l'affaire. A moins que ta Dll interfaire parce qu'en basic il y a erreur. A+ |
| | | Invité Invité
| Sujet: Re: trou ou transparence dans un form Mar 22 Juin 2010 - 7:37 | |
| Je suis en train de penser: au départ j'avais prévu de mettre mon programme distant comme include, mais vu la longueur avec tout ce j'ai rajouté, et le nombre de variables, je suis passé par le presse papier pour alléger. Donc c'est pas la form 0 qui s'affiche, mais dans mon cas la form 7, donc si je comprends bien, on peut récupérer le handle de cette forme. @+ |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: trou ou transparence dans un form Mar 22 Juin 2010 - 9:03 | |
| Oui, il suffit que dans le programme crée la form 7, utilise ma routine en passant handle(7) en paramètre pour que cette fenêtre soit toujours sur le dessus. Autre possibilité: ce programme envoie le résultat de handle(7) à l'autre programme qui de son côté, utilise ma routine comme indiqué dans mon post précédent, pour mettre cet écran au-dessus de tout.
En fait, dès qu'on connaît le handle d'une fenêtre, on peut agir dessus, que ce soit une fenêtre de son propre programme ou non. | |
| | | Invité Invité
| Sujet: Re: trou ou transparence dans un form Mar 22 Juin 2010 - 16:54 | |
| Je viens d'essayer le blocage de forme extérieur avec la Dll. Donc j'ai récupéré le handle de la form 7 du programme externe, j'ai vérifié avec un message ce numéro. Celui-ci est transmit. J'ai récupéré ce n° par le presse papier. Lorsque j'ai ouvert un fichier, je récupère l'accusé réception sous la forme: - Code:
-
if instr(a$,controle1$+saut$+"ordre_reçu:charger")=1 then res% = dll_call2("WindowTopMost",handll%,1) handll% est le n° reçu. Il n'y a plus d'erreur. Si je mets un message à la suite de la ligne pour constater que le teste est passé, je le reçois, donc tout est fait. MAIS si je déplace une fenêtre de mon programme de commandement, celui-ci recouvre le form soit disans bloqué. Donc problème. Si tu veux je mets le code pour que tu puisses voir une éventuelle erreur: - Code:
-
error_french left 0,215:top 0,10:width 0,945:height 0,37 dll_on "KGF_22juin10.dll" dim a$,controle1$ , saut$ , i% , b$ dim res%,handll% label fin , recoit_de_lotre_prg , recu_PressPapier , commande
form 12:top 12,48:left 12,215:width 12,100:height 12,600:border_hide 12 :' color 12,247,247,198 form 13:top 13,48:left 13,1020:width 13,10:height 13,600:border_hide 13 :' color 13,239,251,206 form 15:top 15,48:left 15,354:width 15,667:height 15,200:border_hide 15 :' color 15,255,178,181 form 16:top 16,600:left 16,354:width 16,667:height 16,048:border_hide 16 :' color 16,181,223,255
memo 2 :top 2,410:width 2,520:height 2,100:bar_horizontal 2:' color 2,255,251,231 timer 3 :timer_off 3 : on_timer 3,recoit_de_lotre_prg dlist 5 command_target_is 15 memo 6 :top 6,5:left 6,10:height 6,180:width 6,240:font_size 6,11:font_bold 6 :color 6,247,227,255 command_target_is 16 memo 7 :top 7,510:width 7,500:height 7,100:color 7,240,250,200
command_target_is 12 list 4 :left 4,5:height 4,300 :font_size 4,10 : on_click 4, commande show 0 ' width 0,600:top 0,20:height 0,900: show 0 item_add 4,"OUVRIR": item_add 5,"commande_charger|C:\TESTE\fichiers_teste\teste prg.fic" item_add 4,"FERMER": item_add 5,"commande|ferme" item_add 4,"IMPRIME": item_add 5,"commande|imprime" item_add 4,"Ouvrir le Menu":item_add 5,"commande|menu_ON" item_add 4,"Fermer le Menu":item_add 5,"commande|menu_OFF" item_add 4,"débloquer Form":item_add 5,"commande|débloque" item_add 4,"bloquer Form": item_add 5,"commande|bloque" item_add 4,"ARRET": item_add 5,"commande|stop"
saut$=chr$(10)+chr$(13) ' >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ' démarrage du programme en fond de tâche execute "C:\TESTE\fichiers_teste\Text_simplifié_clipboard.exe" wait 2000:beep : ' on vient d'ouvrir l'autre programme qui envoi ensuite un numéro de reconnaissance repeat a$=clipboard_string_paste$ if instr(a$,"Numéro contrôle:")>0 controle1$=right$(a$,len(a$)-instr(a$,":")) end_if until controle1$<>"" ' accusé de la réception du N°: clipboard_string_copy controle1$+saut$+"en attente":wait 1000 handll%=val(controle1$)
' <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< timer_on 3 on_change 2,recu_PressPapier ' ------------------------------------------------------------------------------ end
' ========================visité par le TIMER====================================================== recoit_de_lotre_prg: clear 2 clipboard_paste 2 return ' ============================================================================== recu_PressPapier: timer_off 3 a$=clipboard_string_paste$ if a$=controle1$+saut$+"ordre_reçu:QUITTEZ" then goto fin if instr(a$,controle1$+saut$+"ordre_reçu:charger")=1 then res% = dll_call2("WindowTopMost",handll%,1):message "bloc" i%=instr(a$,controle1$) if i%>0 if instr(a$,"attente")=0 b$="" : clear 6 repeat i%=instr(a$,saut$) if i%>0 b$=left$(a$,i%-1) item_add 6,b$ a$=right$(a$,len(a$)-i%-1) end_if until i%=0 end_if end_if clear 2 timer_on 3 return ' ====================================================================== commande: a$=item_read$(5,item_index(4)) ' a$=right$(a$,len(a$)-instr(a$,"}")) clipboard_string_copy controle1$+saut$+a$ return
fin: timer_off 3:dll_off terminate
Qu'est-ce qui cloche? A noté que c'est le handle de la form 7, et non celle du picture qui l'accompage. Il suffit de voir les image plus haut qui vont avec ce programme. Je n'ai pas encore effacé les morceaux de forme pour faire le trou. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: trou ou transparence dans un form Mar 22 Juin 2010 - 18:44 | |
| J'ai regardé ton programme et je ne vois pas d'anomalie évidente. Regarde mon petit programme de test et fais-le marcher par l'éditeur. Si tu cliques sur "Toujours devant", il n'y a pas moyen de mettre une autre fenêtre devant. Il doit y avoir un problème de passage du handle. Affiche le handle de la form 7 dans le programme qui l'envoie, et également dans le programme qui l'utilise, donc la variable handll%. Une autre solution consisterait à appeler ma fonction dans l'autre programme, celui qui crée la form 7, juste après la création de cette form. - Code:
-
label click_1
dim flag%, i% flag% = 1
dll_on "KGF.dll" button 1 top 1,10 left 1,10 width 1,100 caption 1,"Toujours devant" on_click 1,click_1
end
click_1: i% = dll_call2("WindowTopMost",handle(0),flag%) flag% = 1 - flag% if flag%=1 caption 1,"Toujours devant" else caption 1,"Normal" end_if return
| |
| | | Invité Invité
| Sujet: Re: trou ou transparence dans un form Mar 22 Juin 2010 - 19:26 | |
| Je viens de voir un problème. Effectivement ça marche au départ. Si je déplace la barre du haut sur la form, celle-ci a le dessus (je rajoute en éditant que la form a le dessus sur la barre) Par contre lorsque je clic sur la forme bloquée, elle perd sont blocage, car ensuite le clic sur mes multi-forme repasse dessus. Donc ton programme au départ, mais c'est seulement ensuite, dès le clic sur la forme, qu'il y a problème. Je rajoute cette image: C'est ok, mais ensuite dès que je clic sur la forme, tout redevient normal. Je viens de voir que la form reprend son statu de normal, par contre lorsque j'ouvre un autre programme, la forme se remet dessus ce programme, et reperd de nouveau son statu dès le clic sur la forme, et ceci à chaque lancement de programme. Ce qui veut dire que la forme est toujours bloquée pour un nouveau programme même si précédemment elle est passées dessous. J'ai pas l'impression d'être clair! |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: trou ou transparence dans un form Mar 22 Juin 2010 - 22:39 | |
| Si, si, c'est un descriptif suffisamment clair pour me permettre des tests ciblés. Je te tiendrai au courant.
EDIT
J'ai fait des essais exhaustifs, et je n'arrive pas à passer une fenêtre devant celle de mon petit programme test du post précédent. Prends-le dans l'éditeur Panoramic, exécute-le et essaie de passer une fenêtre devant. Même en cliquant dans la barre de tâches, cela ne marche pas, encore moins en cliquant dans une autre fenêtre.
As-tu essayé de faire l'appel de la fonction WindowTopMost dans le programme qui déclare la form 7, juste après la déclaration de la form 7 ou éventuellement juste après un show 7 ?
| |
| | | Invité Invité
| Sujet: Re: trou ou transparence dans un form Mer 23 Juin 2010 - 3:06 | |
| Je viens de faire l'essai directement di programme. J'ai mis l'appel à la fonction directement après la déclaration de form, et également après l'ouverture du fichier, après l'affichage. Ça ne marche pas du tout. J'ai compilé et repris le mode échange avec le presse papier, et cela fonctionne comme décrit dans le post précédent.
A propos qu'en est-il pour toi du mode hide et show? par rapport avec ton appel. |
| | | Invité Invité
| Sujet: Re: trou ou transparence dans un form Mer 23 Juin 2010 - 7:28 | |
| Je me suis posé la question depuis. Lorsque j'appelle cette fonction, la grille est affichée et est en attente. Là elle est au dessus. Mais si je clique sur la forme, une cellule est sollicitée et je passe par un sous programme de formatage aujourd'hui depuis que j'ai rajouté les fonction de centrée et position droite. Pour ce faire, je passe par une autre forme avec un picture pour connaitre la largeur du texte de la cellule comme on là fait ensemble. En rapidité, cela ne se voit pas vu que j'ai simplifié à l'extrème le procédé.
Est-ce que le passage dans une autre forme dans le programme ne retire pas provisoirement sa caractéristique de blocage?
Je ne peux pas faire d'essai d'ici ce soir. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: trou ou transparence dans un form Mer 23 Juin 2010 - 8:57 | |
| J'ai modifié mon programme de test pour ajouter uyne autre forme avec un champ edit et un bouton, mais le blocage fonctionne toujours aussi bien. Essaie ceci: - Code:
-
label click_1, click_4
dim flag%, i%, s$
dll_on "KGF.dll"
flag% = 1 off_error_goto button 1 top 1,10 left 1,10 width 1,100 caption 1,"Toujours devant" on_click 1,click_1
s$ = string$(30," ") i% = DLL_call1("KGFdllVersion",adr(s$)) message s$
form 2 command_target_is 2 top 2,50 left 2,400 edit 3 top 3,10 left 3,10 button 4 top 4,10 left 4,150 caption 4,"Coucou" on_click 4,click_4
end
click_1: i% = dll_call2("WindowTopMost",handle(0),flag%) flag% = 1 - flag% if flag%=1 caption 1,"Toujours devant" else caption 1,"Normal" end_if return
click_4: message "Coucou" return
| |
| | | Invité Invité
| Sujet: Re: trou ou transparence dans un form Mer 23 Juin 2010 - 15:14 | |
| Je viens d'avoir un peu de temps. Je comprends que tu veux montrer que tout est ok pour ta Dll, mais tu es comme Jack, si un exemple fonctionne, forcément le reste fonctionne (je pensais par exemple la lecture d'une vidéo sur un objet movie où à part la lecture d'une séquence d'une théière, je nai jamais pu lire ine petite vidéo) C'est humain. Mais ce qui m'intéresse est que ça fonctionne pour mon programme (si c'est possible - de toute façon c'est pas catastrophique si on n'y arrive pas). Veux-tu je je te joigne les deux codes. Dans le programme distant, j'ai mis la fenêtre devant et dans l'envoi, et dans chaque clic. J'ai mis dans l'appel d'une forme provisoir de ce programme à 0 pour voir. J'ai mis à 1 depuis le programme de commande, et toutes les formes à 0, même après réception du presse papier. J'ai fais un petit texte pour le fonctionnement de l'autre programme. Finalement je rajoute le zip des programmes. Ru en fais ce que tu veux, si tu veux tester Voir le Fichier : Controle.zip |
| | | Contenu sponsorisé
| Sujet: Re: trou ou transparence dans un form | |
| |
| | | | trou ou transparence dans un form | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |