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

Delphi Discussion :

Placer dans une TForm un TFrame créé dans une DLL


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 44
    Par défaut Placer dans une TForm un TFrame créé dans une DLL
    Bonjour,

    Dans mon application, je crée dynamiquement un TFrame et je lui indique que son Parent est un TPanel déjà existant, ce qui marche parfaitement bien. Par contre, maintenant que je veux mettre ce TPanel dans une DLL et le créer dynamiquement depuis la DLL, j'ai un message d'erreur "Le controle XXX n'a pas de fenêtre parente".

    J'ai essayé depuis en assignant au Handle de l'application créée par la DLL le Handle de l'application .exe appelante, en passant une TForm existante en paramètre du Create de mon TFrame pour qu'il ait un gestionnaire, en affectant le handle de cette même TForm au ParentWindow du TFrame, et je tombe un peu à court d'idées.

    Sur le net et sur les tutorials je n'ai pu trouver que la création d'une TForm via une dll, et effectivement ça fonctionne très bien. Au pire je pourrais créer la TFrame dans une TForm et faire en sorte que la TForm suive le déplacement de la TForm parent mais c'est plutôt du bidouillage. N'y aurait-il pas plutôt une solution au problème que je rencontre ?

    J'ai remarqué d'ailleurs dans la FAQ un article sur : Pourquoi j'obtiens le message "Impossible d'affecter TFont à TFont" ?, et dans ce post l'auteur indique comment résoudre ce problème (que j'ai eu et que j'ai résolu, merci à lui !) mais ça ne résoud pas ce nouveau problème évoqué plus haut. Je ne trouve pas d'autres informations à ce sujet, donc si quelqu'un aurait ne serait-ce qu'une idée de ce qu'il manque pour que ça fonctionne, je suis preneur !

    Merci d'avance

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    quel est donc l'intérêt de créer un TFrame dans une DLL ?!

    moi y'a des choses qui m'échappent

    Alors, soit tu utilises des Packages et puis voilà !

    soit tu parts sur la route sinueuse de ceux qui ne veulent pas faire comme c'est indiqué dans la doc, et tu vas passer du temps sur les forums

    Sinon, que ce soit un TFrame ou un TForm, la méthode CreateParented sert justement à créer un TWinControl sur un composant Windows non-Delphi.

    Tu vas me dire que ton composant EST un composant Delphi, je te dirais oui MAIS, car il y a un mais, soit tu utilises des packages afin de pouvoir partager tes composants entre l'exe et ta DLL/Package, soit tu ne le fais pas, et pour l'un, les composants de l'autre ne doivent être vus QUE comme des composants Windows, c'est à dire un HWnd obtenu par Form1.Handle ou Frame1.Handle selon le cas.

    On ne peut pas avoir le beurre et l'argent du beurre
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    J'ai, fut un temps, resolut le probleme en utilisant la methode setPArent de windows ... mais on est confronte a d'autres petits soucis ... notement au niveaux de l'utilisation des anchors ....

    Sinon je viens juste, il y a quelques jours de penser a un truc sympas : Creer une classe TComponentFactory, qui creer, et parametre dynamiquement des elements graphiques comme des TButtons, TLabels,etc ... le tout pilotable depuis une serie d'interfaces.

    DE cette maniere, tout composant enregistré dans la factory peut etre manipule depuis la dll, et de meme, la dll peut instancier des composants directement dans l'exe .....

    Plutot que de placer le code graphique directement dans la dll, l'interface est gerer dans l'exe via des scriptes de conceptions ....

    Un peut utopique peut etre mais sympas a mon avis
    Par contre, peut etre un peu lourd ... vu qu'il va faloir integrer dans le code tous les composants graphiques

    A voir mais ca peut donenr des idees

  4. #4
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Citation Envoyé par tothpaul
    soit tu parts sur la route sinueuse de ceux qui ne veulent pas faire comme c'est indiqué dans la doc, et tu vas passer du temps sur les forums
    Au passage .. c'est ecrit quoi dans la doc ?

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par Clorish
    Au passage .. c'est ecrit quoi dans la doc ?
    que la VCL n'est pas conçue pour être utiliser entre DLL et EXE

    d'ailleurs Delphi n'offre aucune possibilité d'exporter une classe Delphi d'une DLL vers un EXE...sauf à utiliser des packets qui sont des DLL spécialement étudiée pour cela

    Sinon ton idée de placer tous dans l'EXE est intéressante, mais ça interdit l'ajout d'un nouveau composant J'ai étudié vaguement la question avec l'idée d'une Remote VCL. A l'image d'un serveur Web, le serveur "remote VCL" fournit des DFM que le client "remote VCL" peut afficher
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre extrêmement actif
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 219
    Par défaut
    Bonsoir,

    sans hésiter tu dois utiliser les packages, c'est souple et ça marche.

    @++
    Dany

  7. #7
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut
    il y a un tuto sur développez écrit par Sébastien Doeraene(sjrd),Éric Leconte(Clorish) sur l'utilisation des plugins tu peut t'inspirer
    ici

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/08/2012, 10h24
  2. Fermer une TForm à partir du code dans OnShow
    Par FredericB dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/09/2007, 00h37
  3. executer une application dans une tform existante
    Par MarcS dans le forum Delphi
    Réponses: 2
    Dernier message: 30/10/2006, 16h14
  4. [D2006] [VCL.NET] Afficher une page dans un Tform.
    Par RamDevTeam dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 13/02/2006, 15h27
  5. TForm pour plusieurs fenêtre dans une même fonction ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/11/2005, 12h38

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