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

Langage Delphi Discussion :

[DLL] FindControl


Sujet :

Langage Delphi

  1. #1
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut [DLL] FindControl
    Salut à tous

    J'ai créé une application et une dll. Dans une fonction de cette DLL, je passe le handle d'un composant (button, Form, Panel,etc...) contenu dans l'application mère.

    Ca donne ça:

    Code de l'application:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Test(Application.Handle,Panel1.Handle);
    Code de la DLL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure Test(AppHandle:HWND;ObjHandle:HWND);
    begin
      Application.Handle:=AppHandle;
      Panel:=TPanel(FindControl(ObjHandle));
    end;
    Et Panel est systématiquement à nil...
    J'ai contrôlé ObjHandle et il est non vide (<>0)...
    Comment ça se fait :
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  2. #2
    Membre chevronné
    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
    Points : 2 158
    Points
    2 158
    Par défaut
    Quel est le but de ta Dll ??
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  3. #3
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Ca ne peut pas fonctionner, car FindControl ne peut trouver que des composants dans l'arborescence de propriétaires (Owner) en partant de Application.

    Pour reprendre l'idée de Clorish, si le but est de faire un plug-in contenant un composant visuel, il y a ce tutoriel (qui n'est pas encore référencé dans les tutoriels).
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut à tous les deux
    Citation Envoyé par sjrd
    Ca ne peut pas fonctionner, car FindControl ne peut trouver que des composants dans l'arborescence de propriétaires (Owner) en partant de Application.
    Ben justement, si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Application.Handle:=AppHandle;
    Ca ne marche pas? je lui donne pourtant le TApplication du programme mère...

    Citation Envoyé par sjrd
    Pour reprendre l'idée de Clorish, si le but est de faire un plug-in contenant un composant visuel, il y a ce tutoriel (qui n'est pas encore référencé dans les tutoriels).
    Oui oui je sais ça, on en avait déjà pas mal discuté de tout ça
    Mais c'est précisemment pour développer ma propre méthode... Celle avec les handles et les DLL...

    Merci
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  5. #5
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Je viens de lire (et de récupérer ) la page que tu m'as dite et ça m'a bien séduit, le système des interfaces

    sjrd: tu verras que ma méthode est beaucoupo moins propre mais ça marche aussi!
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  6. #6
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Citation Envoyé par Pedro204
    Citation Envoyé par sjrd
    Ca ne peut pas fonctionner, car FindControl ne peut trouver que des composants dans l'arborescence de propriétaires (Owner) en partant de Application.
    Ben justement, si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Application.Handle:=AppHandle;
    Ca ne marche pas? je lui donne pourtant le TApplication du programme mère...
    Non ça ne fonctionne pas non plus, car le fait d'affecter le Handle ne modifie pas pour autant l'instance. En fait FindControl doit faire qqch dans ce genre ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function TComponent.FindControl(Hand : THandle) : TWinControl;
    var I : integer;
    begin
      if (Self is TWinControl) and (TWinControl(Self).Handle = Hand) then
      begin
        Result := TWinControl(Self);
        exit;
      end;
      for I := 0 to ComponentCount-1 do
      begin
        Result := Components[I].FindControl(Hand);
        if Result <> nil then exit;
      end;
    end;
     
    function FindControl(Handle : THandle) : TWinControl;
    begin
      Result := Application.FindControl(Handle);
    end;
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  7. #7
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    OK merci
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

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

Discussions similaires

  1. [CR] Infos sur l'utilisation de dll
    Par step dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 09/08/2002, 11h35
  2. Declarer une dll Delphi ?
    Par DelphiCool dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/07/2002, 10h07
  3. Débug de DLL
    Par Bayard dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/07/2002, 15h08
  4. Equivalent à ExeName pour une DLL
    Par Smortex dans le forum Langage
    Réponses: 7
    Dernier message: 16/07/2002, 21h07
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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