#1 Thu 29 April 2010 13:46
- Cyril Chat
- Participant actif
- Lieu: Niort
- Date d'inscription: 14 Feb 2010
- Messages: 90
[MapBasic 9.x] Mélange d'ID de fenêtres
Bonjour à tous,
Je dois insérer un logo dans une mise en page. Cette insertion se trouve dans une boucle.
Lors du premier passage de la boucle, tout se passe bien, la fenêtre du logo est ouverte, le logo inséré...
Lors du deuxième passage, cela ne fonctionne pas car il y a apparemment une confusion dans les ID des fenêtres : la première fois, la map avec le logo est au premier plan, mais ensuite la fenêtre au premier plan n'est plus la même.
Voici le code :
Code:
'-----on insère le logo----- 'on ouvre la table du logo Open table "C:\Documents and Settings\cyril.chat.DDE-79\Bureau\Stage\Doc_WOR\Bloc_Marque_DDT.TAB" 'on insertion du logo en configurant sa fenetre 'bool1 = FALSE 'For c=1 to numWindows() If WindowInfo(c, WIN_INFO_NAME) = "logo" THEN 'bool1= TRUE 'End if 'Next 'If bool1 = FALSE Then map from Bloc_Marque_DDT width 2.5 units "cm" height 2.5 units "cm" min 'End if 'on profite que cette fenêtre soit au premier plan pour la renommer 'Set Window FrontWindow() Title "logo" 'on récupère l'ID de la fenetre logo 'ddt_logo = FrontWindow() 'on crée le cadre logo dans la mise en page en le placant Create Frame into Window IdLayout (1, 28.7) (4, 25.7) Pen(1,1,0) brush(1, 16777215, 16777215) from Title "logo" FillFrame On
Ce que je souhaiterais faire, c'est lui dire si le logo est déjà ouvert, tu ne l'ouvres pas et l'insère. Je pense que toute la partie précédée des guillements " ' " n'est pas utile.
Je pensais faire un truc du genre
Code:
If InStr(1, WIN_INFO_NAME, ";logo;") = 0 then Open table "C:\Documents and Settings\cyril.chat.DDE-79\Bureau\Stage\Doc_WOR\Bloc_Marque_DDT.TAB" End If
comme on m'avais proposé pour un autre problème, mais cela ne fonctionne pas, trop de bug...
Si vous avez une idée, merci
Hors ligne
#2 Thu 29 April 2010 15:05
- Cyril Chat
- Participant actif
- Lieu: Niort
- Date d'inscription: 14 Feb 2010
- Messages: 90
Re: [MapBasic 9.x] Mélange d'ID de fenêtres
J'ai tenté ceci :
Code:
open table "C:\Documents and Settings\cyril.chat.DDE-79\Bureau\Stage\Doc_WOR\Bloc_Marque_DDT.TAB" map from Bloc_Marque_DDT width 2.5 units "cm" height 2.5 units "cm" min for k=1 to NumWindows() If WindowInfo(k,3)=1 then IdMap=WindowID(k) ElseIf WindowInfo(k,3)=27 then IdLegende=WindowID(k) ElseIf WindowInfo(k,3)=1011 then IdLogo=WindowID(k) End If Next print "Carte : "+str$(IdMap) print "Légende : "+str$(IdLegende) print "Logo : "+str$(IdLogo) [...] 'on crée le cadre logo dans la mise en page en le placant Create Frame into Window IdLayout (1, 28.7) (4, 25.7) Pen(1,1,0) brush(1, 16777215, 16777215) from window IdLogo FillFrame On
Mais cela me retourne "Identifiant de fenêtre non valide : 0". Cela provient du code (1011), mais je ne sais pas lequel utilisé. J'en ai essayé plusieurs sens succés.
Donc si quelqu'un connait le bon code... Merci
Hors ligne
#3 Tue 14 September 2010 21:19
- jean94
- Participant assidu
- Date d'inscription: 13 Aug 2009
- Messages: 436
Re: [MapBasic 9.x] Mélange d'ID de fenêtres
Bonjour,
S'il n'est pas trop tard...J'ai eu le meme problème en fait je crois que ton problème (code#2) est que ton logo est une fenetre de type Map window. Donc tu pourrais lui donne un autre "if" imbriqué avec un "WIN_INFO_TABLE" pour identifier le WindowId qui correspond à ta table logo. Et supprimer ton dernier Elseif
JF
Hors ligne