Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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é ?

#1 Thu 22 May 2008 11:21

Lyck
Juste Inscrit !
Date d'inscription: 22 May 2008
Messages: 3

Soucis Liaison MapInfo / DLL Delphi

Bonjour,

Je viens de reprendre une application MapBasic 5.5 / Dll Delphi 5 dans laquelle on me demande de rajouter une fonctionnalité.
Venant juste de me lancer dans ces 2 technologies, je me retrouve perdu.

Je dois créer une fonctionalité qui me permet d'affichier un formulaire Delphi et d'y renseigner des champs en fonction de ma sélection sur ma carte.

Je crée un ToolButton pour lancer  mon formulaire ( au départ les champs sont vides ). Puis je souhaite récupérer l'identifiant de mon objet et le nom de la couche.
Cepandant une fois le formulaire lancé je n'arrive plus à sélectionner les éléments sur ma carte, je ne peux donc pas récupérer l'identifiant de mon objet ni le nom de la couche sur laquelle je click.


N'ayant pas trouvé de sujet sur le forum sur ce point, je me permet de poster.

Ma question est : Comment faire pour pouvoir selectionner des objets dans ma carte tout en rafraichissant mon formulaire Delphi.



Cordialement,

Dernière modification par Lyck (Thu 22 May 2008 11:23)

Hors ligne

 

#2 Mon 26 May 2008 11:43

Sebastien Vernier
Invité

Re: Soucis Liaison MapInfo / DLL Delphi

Bonjour,

Vous lancez sans doute votre formulaire en mode modal.
Afficher le seulement en mode normal (Form.show()) et choisissez pour la propriété FormStyle la valeur StayOnTop.

Votre formulaire se lancera en restant tout le temps à l'écran et vous pourrez sélectionner dans votre carte votre objet.

A vous d'indiquer ensuite au formulaire de rafraichir ses données (soit manuellement par un bouton par exemple ou en automatique en utilisant par exemple la gestion évènementielle de MapInfo au niveau de la procédure SelChangeHandler)

Cordialement,

Sébastien

 

#3 Mon 26 May 2008 13:40

Lyck
Juste Inscrit !
Date d'inscription: 22 May 2008
Messages: 3

Re: Soucis Liaison MapInfo / DLL Delphi

Merci de ces informations.

Hors ligne

 

#4 Mon 26 May 2008 14:15

Lyck
Juste Inscrit !
Date d'inscription: 22 May 2008
Messages: 3

Re: Soucis Liaison MapInfo / DLL Delphi

J'affiche bien mon formulaire en utilisant la méthode show() et non le mode modal.

J'ai placé le FormStyle en StayOnTop.

Pour rafraichir j'utilise la procédure SelChangeHandler

mon problème est que lorsque je click sur mon ToolButon je ne passe pas en mode selection.

Code:

ToolButton    
       Icon MI_ICON_ARROW
       ID 4242 
       Calling MaProcedure

Sub SelChangedHandler
 call MaProcedure
End Sub

Sub MaProcedure
 [......]
 call DLL_Reset_Form  
   if selectioninfo(SEL_INFO_NROWS) <> 0 Then
      [........]
      call DLL__Maj_Form
   end if
End Sub

Pour palier ce probleme au lieu d'appeler ma procédure sur le ToolButon j'utilise la selection.

Code:

ToolButton    
       Icon MI_ICON_ARROW
       ID 4242 
       Calling M_TOOLS_SELECTOR

Maintenant cela pose un autre soucis. Je peux selectionner ( ce qui était mon but ) mais mon ToolButon ne sert à rien. Cela ne devient plus une fonctionalité activable avec un bouton mais une modification de la selection de base.

J'ai essayer de  verrouiller ma procédure avec un test.

Code:

Sub SelChangedHandler
 call MaProcedure
End Sub

Sub MaProcedure
  if  commandinfo(CMD_INFO_TOOLBTN) = 4242 then 
   [......]
   call DLL_Reset_Form  
     if selectioninfo(SEL_INFO_NROWS) <> 0 Then
        [........]
       call DLL__Maj_Form
     end if
  end if
End Sub

Le soucis avec ce contrôle c'est que si aucun ToolButon n'est activé alors un Message d'erreur apparaît.

Du coup j'ai bien avancé mais je n'arive pas à faire ce que l'on me demande, je suis bloqué

Hors ligne

 

#5 Tue 27 May 2008 12:11

Sebastien Vernier
Invité

Re: Soucis Liaison MapInfo / DLL Delphi

Bonjour,

Désolé de ne vous répondre que maintenant.

Je pense que vous ne prenez pas le problème dans le bon sens.
A l'heure actuelle, vous utilisez un ToolButton en renvoyant lors de son utilisation sur l'activation du M_TOOLS_SELECTOR.

Si vous utilisez un ToolButton, c'est pour qu'il remplisse sa fonction d'outil.
Il serait préférable sur l'événement déclenché par l'utilisation de l'outil de sélectionner par programmation l'objet sous le curseur et ensuite de lancer l'affichage du formulaire (en modal ou pas suivant le fonctionnement recherché).

Sébastien

PS: Il est normal que la fonction CommanInfo() ne marche pas, car elle ne devrait être utilisée que dans les procédures évènementielles liées à l'élément sur lequel elle doit renvoyer des informations.

 

Pied de page des forums

Powered by FluxBB