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

Composants VCL Delphi Discussion :

Imbriquer des forms


Sujet :

Composants VCL Delphi

  1. #1
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut Imbriquer des forms
    Bonjour tous,

    j'ai une application composée de plusieurs forms. La fenêtre principale appelle les fenêtres secondaires ... tous ce passe bien. Cette application fonctionne correctement.

    j'essaie maintenant d'incorporer les fenêtres secondaires dans un panel (réceptacle) de la fenêtre principale.

    Pour faire cela, juste après la création dynamique d'une des fenêtres secondaires, je lui donne comme Parent le panel qui doit la recevoir dans la fenêtre principale. Puis je lance le showmodal de la fiche secondaire.

    L'insertion dans la panel se passe bien, je perd bien sur l'accès aux composants de la fenêtre principale, puisque la secondaire est showmodal.
    Mais mon problème est que je n'ai aucun accès aux composants de la fiche secondaire, comme si la fiche entière était disabled.

    Je voudrais pourvoir accèder normalement à ma fiche secondaire, une fois "incorporée" dans le panel.

    Est ce possible ? ou pas , et si oui ou est mon problème ...?

    merci a vous de m'éclairer.
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    j'essaie maintenant d'incorporer les fenêtres secondaires dans un panel (réceptacle) de la fenêtre principale.
    Le nom que vous cherchez pour cette technique c'est le docking

    (autant faire de l'auto promotion )
    je ne peux que vous conseiller de lire ce que j'en écris dans cet article Techniques d'enchainements de formes
    sinon il y a deux vidéos très instructives d'Alistair Christie
    https://www.google.com/url?sa=t&rct=...G0621AiGJ3lnC_
    https://www.google.com/url?sa=t&rct=...ixwNusrSxNA6H5
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut
    bonjour

    un peu plus d'informations donnera plus de compréhension a on sujet.

    En effet ce que je cherche à faire semble être du "docking". Mais en fait cela est beaucoup plus light, par exemple l'opérateur n'a aucune initiative en terme de docking ou undocking. Comme je l'avais dit, application donc je parle est fonctionnelle en mode SDI, et tourne sans problèmes sur des écrans d'un minimum de 15 pouces.

    mon besoin: est de passer cette application (à moindre modifs) sur un système transportable équipé d'un écran 8 pouces, tous en conservant une taille caractères de lecture aisée. De plus les opérateurs ne doivent pas avoir accès à Windows ( appli chargé a la place de l'explorateur de fichier)

    Ne voulant pas tout reprendre en terme de design, j'ai enlevé les bordures, la barre des titres de la fenêtre de la fenêtre principale et elle est "alclient" donc la fiche principale prends tout l'écran. Les boutons se resizent et on a redéfini les captions.

    Puis c'est là qu'intervient mon presque "Docking", ponctuellement j'imbrique dans un panel de ma fenêtre principale, une fonction qui aujourd'hui est codé dans une autre unité avec sa propre fiche. Et c'est la que ce pose le problème décrit dans le messages précédant. Après le passage de la propriété "form.secondaire.parent:=form.principale.panelx", je n'ai plus accès aux composants visuels, comme si les deux fenêtres étaient disabled.

    donc si il y a des idées ? merci d'avance
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    Par défaut
    Supprime aussi la bordure de la fenêtre secondaire.
    Il semble que ça force le style (TCreateParams) et ignore WS_CHILD. La fenêtre ne se comporte pas comme un contrôle enfant.

    Cela dit, ManualDock serait tout aussi simple à appliquer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    FormSecondaire.Parent := FormPrincipale.PanelX;
     
    //remplacé par
     
    FormSecondaire.ManualDock(FormPrincipale.PanelX, nil, alClient);

  5. #5
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut
    Merci a vous ,

    j'étais en train d'utiliser le Docking, mais ta solution de fenêtre secondaire et du parent me va aussi très bien.
    Surtout de la fenêtre secondaire était destinée à être sans bordure au final .

    merci a vous deux .
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

  6. #6
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Voici un exemple avec la doc associée
    Images attachées Images attachées
    Fichiers attachés Fichiers attachés

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    placer une fiche dans le Panel d'une autre ne pose pas de problème particulier je pense...mais faire un appel à ShowModal n'est pas possible car toutes les fenêtres autre que la fenêtre modale sont désactivées...ce qui comprend le parent

    à la rigueur, je mettrais la fenêtre secondaire en alClient pour qu'elle occupe tout l'espace de la fenêtre principale...ou dans un TPanel qui est lui même en alClient si la fiche secondaire ne supporte pas le redimensionnement.

    il y a fort longtemps j'avais développé une application sur le modèle web, la fiche principale comprenait des TLabel façon hyperlien qui permettaient d'ouvrir une fenêtre qui se mettait en alClient, et le bouton "Retour" se contentait de fermer la dernière fenêtre ouverte
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

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

Discussions similaires

  1. [1.x] imbriquer dynamiquement des forms sur symfony
    Par wind_of_o dans le forum Symfony
    Réponses: 5
    Dernier message: 22/03/2011, 15h19
  2. Réponses: 28
    Dernier message: 17/06/2010, 17h33
  3. Réponses: 11
    Dernier message: 28/02/2007, 12h18
  4. Réponses: 12
    Dernier message: 18/03/2004, 15h09
  5. [VB.NET]La bonne gestion des forms
    Par Wintermute dans le forum Windows Forms
    Réponses: 11
    Dernier message: 13/01/2004, 16h35

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