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 :

Changement de propriétaire à la volée


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 312
    Points : 184
    Points
    184
    Par défaut Changement de propriétaire à la volée
    Bonjour est il possible de changer le propriétaire d'un objet à la volée , merci d'avance ...

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 665
    Points : 25 459
    Points
    25 459
    Par défaut
    Assez simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure ChangeOwner(const AComponent, AOwner: TComponent);
    begin
      if Assigned(AComponent) then
        if Assigned(AComponent.Owner) then
          AComponent.Owner.RemoveComponent(AComponent);
     
      if Assigned(AOwner) then
        AOwner.InsertComponent(AComponent);
    end;
    Si ton Owner est une forme, que ton Component passé en paramètre est une référence publiée et que tu souhaite ne pas perdre cette référence publiée du composant, bon j'ai bidouillé ça pour une application récemment, c'était plus simple que de me taper toute la modification d'un code basée sur le owner, ça reste une bidouille :

    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
    20
    21
    22
    23
    24
    25
    26
    27
      procedure ChangeOwnerKeepReference(var AComponent: TComponent; AOwner: TComponent);
      var
        SaveComponent: TComponent;
        Field: ^TComponent;
        I: Integer;
      begin
        if Assigned(AComponent) and Assigned(AComponent.Owner) and Assigned(AOwner) then
        begin
          if AComponent.Owner <> AOwner then
          begin
            SaveComponent := AComponent; // Mémorise la référence avant qu'elle soit mis à nil
            AComponent.Owner.RemoveComponent(AComponent); // RemoveComponent mets la référence publiée de AComponent dans son Owner a nil !
            AOwner.InsertComponent(SaveComponent);
            AComponent := SaveComponent;
     
            if AComponent is TWinControl then
              for I := 0 to TWinControl(AComponent).ControlCount - 1 do
              begin
                SaveComponent := TComponent(TWinControl(AComponent).Controls[I]);
                Field := SaveComponent.Owner.FieldAddress(SaveComponent.Name);
                ChangeOwner(SaveComponent, AOwner);
                if Field <> nil then
                  Field^ := SaveComponent;
              end;
          end;
        end;
      end;

Discussions similaires

  1. Changement du charset à la volée
    Par dingoth dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 21/01/2008, 17h01
  2. Changement de propriétaire
    Par Poisson59 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 24/07/2007, 09h32
  3. [D2007] Changement de langue à la volée
    Par sovitec dans le forum Delphi
    Réponses: 1
    Dernier message: 10/07/2007, 13h06
  4. [ASE][12.0] Changement de propriétaire de BDD
    Par Lps dans le forum Sybase
    Réponses: 4
    Dernier message: 09/01/2006, 14h26
  5. Changement de propriétaire
    Par Florent PORRAS dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/08/2004, 15h25

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