banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

 

Pied de page des forums

Powered by FluxBB