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 :

Position d'objet dans un autre objet


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Par défaut Position d'objet dans un autre objet
    Bonjour,
    J'ai créé un objet (TCustomControl) dans lequel je place d'autres "petits" objets, ils ont une place bien définit par rapport au parent. C'est à dire qu'un "petit" objet peut ce trouver à 1/8 du début, l'autre à 1/2 l'autre au 1/10 leur nombre et leur place sont fonction de l'utilisateur.

    Mes objets ce placent comme il faut mais quand je redimentionne le parent tout fonctionne correctement mais le positionnement de tous les petits objet est long, trop long
    Voici mon code (je place dans un tableau la liste des composants créés) :
    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
    var y : integer;
    begin
     
      y:=1;
      while (Sous_periodes.cells[9,y]<>'') and (Sous_periodes.cells[6,y]='Visible') do
      begin
        with (components[strtoint(Sous_periodes.cells[9,y])] as TSousPeriode) do
        begin
          left:=Position_sur_ligne(Sous_periodes.cells[2,y]);
          width:=Position_sur_ligne(Sous_periodes.cells[3,y])-Position_sur_ligne(Sous_periodes.cells[2,y]);
        end;
     
        inc(y);
      end;
    end;

    La question est : Y a t'il une méthode pour que le repostionnement des sous objets se fasse plus rapidement.

    J'espère avoir été claire et je vous remerci pour vos conseils

  2. #2
    Membre Expert Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 553
    Par défaut
    Je suppose que le code fourni est celui du positionnement de tes objets (au début ou à chaque redimmensionnement du parent)?
    Tu peux d'abord essayer, à chaque redimmensionnement :
    *Rendre visible:=false tous les objets.
    *Les positionner.
    *Les rendre tous visible:=true
    Il est possible que ça aille plus vite (sans que je sache pourquoi) mais surtout ça va plus vite subjectivement pour le client.
    Et en plus ce n'est pas long à faire.

  3. #3
    Membre éclairé Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Par défaut
    Citation Envoyé par philnext
    Je suppose que le code fourni est celui du positionnement de tes objets (au début ou à chaque redimmensionnement du parent)?
    Heu oui biensur, j'avais oublié de le préciser.

    Bien je viens de tester visible:=false et mouvenet puis visible=true, et bien j'ai gagné en rapidité mais c'est pas encore ça.

    Je te remerci, je vais tester de tout cacher puis déplacer puis tout rafficher pour voir si ça ira encore plus rapidement

    merci encore

  4. #4
    Membre éclairé Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Par défaut
    Citation Envoyé par Speed41
    je vais tester de tout cacher puis déplacer puis tout rafficher pour voir si ça ira encore plus rapidement
    et ben c'est pas encore ça

  5. #5
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Peut-être que la propriété components[<component_name>] prend du temps.

    Il faudrait essayer de faire qqchose du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //initialisation
    Sous_periodes.objects[x,y]:=components[strtoint(Sous_periodes.cells[9,y])] ;
    ...
    // utilisation Sous_periodes.objects[x,y] 
    TsousPeriode(Sous_periodes.objects[x,y]).left:=...

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 218
    Par défaut
    essaie peut-être de désactiver la rafraichissement auto du canvas avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DisableAlign;
    try
    finally
      EnableAlign;
    end;

Discussions similaires

  1. [PHP 5.3] Un objet dans un autre objet
    Par nakk01 dans le forum Langage
    Réponses: 2
    Dernier message: 19/10/2009, 14h38
  2. Réponses: 9
    Dernier message: 08/01/2009, 18h08
  3. Réponses: 2
    Dernier message: 28/06/2008, 23h08
  4. Réponses: 5
    Dernier message: 22/04/2008, 10h41
  5. Réponses: 7
    Dernier message: 10/02/2007, 05h41

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