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 :

Composants qui ne répondent plus au redimensionnement


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Composants qui ne répondent plus au redimensionnement
    Bonjour,

    je fais un preview où chaque thumbnail/imagette est codé avec un TImage, un TBevel et un TLabel. C'est géré comme un tableau de composants créés à l'exécution, le tout étant posé sur un TPanel. Tout va bien sauf au redimensionnement : dès que le bord du panel mord sur les composants, ces composants deviennent insensibles à tous les messages qui marchent quand les composants sont complètement visibles (dessin sur le TImage ou mise à jour du label).

    Je précise que le panel est posé sur deux frames.

    Merci de vos suggestions

  2. #2
    Membre Expert

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Par défaut
    Je suppose que tu disposes d'une fonction d'affichage pour tes vignettes. Essaye donc de coder l'événement FormResize de ta fenêtre de la façon suivante:

    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
     
    procedure TMainForm.FormResize(Sender: TObject);
    begin
      //désactiver ici les événements qui pourraient bloquer 
      //le redimentionnement en leur affectant la valeur nil.
      try
        Application.ProcessMessages;
      finally
        try
          proc_qui_affiche_tes_vignettes;
          //Réactiver ici les événements désactivés en entrée de procédure
        finally
        end;
      end;
    end;
    Cordialement

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour la réponse. Malheureusement 1/ les ProcessMessages ne changent pas le pb 2/ je ne sais pas ce qui bloque.

    En fait, j'ai réussi à débugger en supprimant un test qui bloque la mise à jour de l'affichage si le nombre de lignes ou de colonnes ne change pas. Mais :
    1/ la description du pb est toujours valable : par ex, un TImage répond à une demande de modification d'affichage jusqu'au moment où, en redimensionnant, le TImage commence à deborder de la fenêtre.
    2/ je ne comprends toujours pas pourquoi le test ne marche pas. Est-ce que c'est possible d'avoir un décalage entre l'événement OnResize et la dispo des dimensions Width et Height réelles ?

    En tout cas merci encore.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Par défaut
    Revois le codage de ton interface de sorte que le panel ne vienne pas partiellement recouvrir les composants.

    Pour cela, tu peux utiliser 2 panels et un splitter, gerer par code le repositionnement des composants en cas de redimensionnement ( c'est souvent le cas avec un label qui doit etre replacé correctement)

    Tu as également les propriétés Anchors et Constraints.



    ---

  5. #5
    Membre Expert

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Par défaut
    Bonjour,

    Pourrais-tu nous communiquer simplement ta procédure d'affichage ?

    Pour info, j'ai récemment codé une fonction qui affiche un preview pour une série de TForm embarquées et tout cela dans une TForm, un peu à la manière d'IE7.
    La différence avec ton problème c'est que la dimension de chaque vignette se recalcule automatiquement si l'on rezize la Tform (3 vignettes par lignes et n lignes).
    J'avais également rencontré des bloquages mais ils étaient provoqués par :
    1/ des événements redéfinis qui devaient être désactivés, réactivés respectivement avant et après le resize.
    2/ une mauvaise gestion de la temporisation avec la fonction d'affichage ce qui me semblerait répondre à ta dernière question.

    Citation Envoyé par papadrago
    Est-ce que c'est possible d'avoir un décalage entre l'événement OnResize et la dispo des dimensions Width et Height réelles ?

    Cordialement

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Par défaut
    As tu essayé de placer Repaint dans l'événement onResize de la fiche?

Discussions similaires

  1. Boutons qui ne répondent plus
    Par Vahia dans le forum Composants graphiques
    Réponses: 3
    Dernier message: 09/06/2015, 11h32
  2. Des boutons qui ne répondent plus !
    Par Franck.H dans le forum jQuery
    Réponses: 9
    Dernier message: 20/06/2014, 08h35
  3. Réponses: 5
    Dernier message: 16/04/2010, 19h43
  4. Réponses: 3
    Dernier message: 06/02/2007, 14h46
  5. Qui ne voi plus les images ou smiley du forum ?
    Par Marc Lussac dans le forum Evolutions du club
    Réponses: 30
    Dernier message: 13/09/2004, 13h36

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