IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

Prompt() jscript avec Intraweb


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Chef de projet
    Inscrit en
    Juin 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 101
    Par défaut Prompt() jscript avec Intraweb
    Bonjour à tous,

    je bute sur problème particulier :

    J'ai une grid (intraweb) avec des cellules clickable.

    Je souhaiterais que sur l'evénement OnCellClick, un popup javascript s'ouvre, avec une valeur texte à saisir et 2 boutons (Ok et Cancel)

    Si je clique sur cancel, ca ferme simplement la popup.

    si je clique sur ok, il faut que mon code Delphi récupère la valeur texte saisie, puis, en l'associant aux informations de la cellule cliquée, exécuter une action particulière coté serveur.

    Je suis avec D2006

    Merci.

    edit :
    En fait, là ou j'ai un probleme, c'est comment récupérer le champ saisi et le bouton cliqué dans mon code Delphi du "OnCellClick"

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    IntraWeb est la librairie la plus mal documentée de Delphi !
    C'est une Honte !

    Tu utilises une TIWGrid son OnCellClick du type TIWOnCellClick

    En C++BuilderXE2, j'ai ceci dans les HPP
    En C++Builder 2007, j'ai aussi les PAS associé, je te conseille de les lire si tu les a !

    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef void __fastcall (__closure *TIWOnCellClick)(System::TObject* ASender, const int ARow, const int AColumn);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      TIWOnCellClick = procedure(ASender: TObject; const ARow: Integer; const AColumn: Integer) of object;
    les prototypes qui sont finalement les seules sources d'informations potables !

    tu notes que tu as ARow et AColumn, cela devrait te permettre d'accéder à Cell[]

    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    __property TIWGridCell* Cell[const int ARow][const int AColumn] = {read=GetCell};
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    property Cell[const ARow: Integer; const AColumn: Integer]: TIWGridCell read GetCell;
    C'est pour gérer le OnCellClick de la TIWGrid !

    Pense que tu as accès à tout les JS générés, tu as une propriété Scripts, il me semble dans les IWControl, tu peux donc mettre un formulaire intermédiaire comme IWAdvMessageDialog de TMS et reprendre l’exécution normal du script

    Sinon tu vas devoir gérer tes propres évènements, et là, tu n'es pas sorti de l'auberge !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éprouvé
    Homme Profil pro
    Chef de projet
    Inscrit en
    Juin 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 101
    Par défaut
    Merci de ta réponse, mais j'ai dû mal m'expliquer.

    Mon problème est de 2 ordres :
    1 - afficher une popup javascript dès que je clic sur une cellule clickable.
    Cette popup doit être du type prompt() de facon à me proposer de saisir une info de type texte.(en fait, c'est un code à 4 chiffres).
    Cett popup doit en plus avoir 2 boutons. Cancel et Valid.
    Si cancel est clické, ça ferme simplement la popup sans faire d'appel au serveur, comme si je n'avais pas clické sur la cellule.

    2 - Si valid est clické, je veux pouvoir récupérer le code saisi dans la popup et le traiter dans dans la procedure OnCellClick()

    Quant au javascript qui doit être invoqué, je sais où le placer, il y a une propriété pour ça dans la classe TIWAppForm

    mon seul problème étant de savoir cooment l'invoquer, et comment passer sa variable "code" au programme Delphi.
    Normalement, on peut l'invoquer grace à la propriété ScriptEvent, mais TIWGrid en est dépourvu !

    Voili, voilou...

    PS: TMS ne peut être une solution pour moi car payante...

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    J'ai très bien compris ton problème, et comme je le disais, il te faut regarder le script JS qui appel OnCellClick et tu dois le refaire manuellement ton propre appel JS OnCellClick en injectant dans ScriptEvent avec ta fenêtre intermédiaire !

    En fait, je ne vois pas où tu bloques, tu connais déjà tous les éléments !
    J'ai aidé un collègue de la même façon en modifiant ScriptEvent pour effectuer un traitement JS AVANT l'appel du Serveur (qui comme toi était optionnel)

    ScriptEvents apparait en public dans le TIWCustomControl donc par héritage la TIWCustomGrid et la TIWGrid en bénéficie !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre éprouvé
    Homme Profil pro
    Chef de projet
    Inscrit en
    Juin 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 101
    Par défaut
    Yo !
    Oui, je sais il s'est passé 4 mois... Comme je ne trouvais pas de solution propre, j'ai fait autrement pour ne pas être bloqué, mais maintenant, je reviens dessus.

    j'ai donc une grille (TiwGrid) dont une cellule contient un lien hypertext.
    Je voudrais lorsque je clic sur ce lien effectuer un javascript avant d'exécuter la procédure MaIwGrid1CellClick.

    J'ai donc fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    MaIwGrid1.OnCellClick:=MaIwGrid1CellClick;
     
    .../...
     
    MaIwGrid1[Raw,Col].text:='Cliquer ici';
    MaIwGrid1[Raw,Col].clickable:=true;
    Ce code génère ce html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onclick="SubmitClickConfirm('MaIwGrid1','1_2', true, '');return false;">Cliquer ici</a>
    A priori, '1_2' correspond à Raw_Col.

    Mais voilà, il n'y a pas de propriété ScriptEvents pour la cellule. Donc il n'y a pas de moyen de modifier le "onclick" de la balise <a>

    J'ai donc investigué plus loin en essayant de modifier le code javascript de SubmitClickConfirm en faisant un traitement particulier en fonction du premier paramètre (nom de l'objet), mai impossible de mettre la main sur le fichier javascript qui l'implémente (IWCommon.js_8.0.1).
    D'après le html généré, ce fichier est ici : http://localhost:8888/js/IWCommon.js_8.0.1
    Qui peut me dire où se trouve ce fichier ?

    Merci.

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Les fichiers JS sont incorporés en ressource de l'Exe (je n'ai testé que le mode StandAlone), je ne crois pas que l'on a accès à ces fichiers, en tout cas pas avec la version fournie avec Delphi
    Possible qu'une version complète offre plus de souplesse à ce sujet

    On peut les lire dans Intraweb_120_160.bpl pour la version XE2, c'est en binaire, donc pas très exploitable !
    C'est des templates dans lesquels IW injecte le nom des variables, il concatènent une palanquée d'élément JS dans la page HTML plus des JS prédéfini comme IWCommon

    Normalement tu n'as pas a modifié ces fichiers, ce n'est pas le fonctionnement prévu par Intraweb, mais ils ont prévu que tu puisses injecter tes propres JS
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/04/2010, 12h35
  2. Passage de paramètres avec Intraweb
    Par julesclaude dans le forum Web & réseau
    Réponses: 3
    Dernier message: 06/10/2008, 20h09
  3. [Jscript] différencer avec Javascript
    Par pmartin8 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 28/10/2005, 16h51
  4. Frame avec Intraweb
    Par misterbillyboy dans le forum Web & réseau
    Réponses: 2
    Dernier message: 20/06/2003, 09h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo