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

Composants VCL Delphi Discussion :

Control partiellement visible


Sujet :

Composants VCL Delphi

  1. #1
    Membre éclairé
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 423
    Par défaut Control partiellement visible
    Bonjour à tous,

    Il me semble avoir vu une propriété ou une méthode permettant de savoir si un control est totalement ou partiellement visible.
    Par exemple dans un Tscrollbox, en mode exécution, pas en conception, si le composant dépasse la largeur de la fiche ...

    J'espère être clair ?

    C'est peut être aussi une API Windows, je ne sais plus. Pourtant il me semble bien avoir vu ça,

    merci pour votre aide,

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 053
    Par défaut
    Sur le TTreeView, il y a une API pour rendre un élément visible, ou MakeFullyVisible sur une TForm, sur un TControl en général c'est moins sûr

    Déjà, il faut récupérer la fenêtre au premier plan, si c'est ta fenêtre, il suffit de comparer la Position des ScrollBars par rapport au TControl
    Si c'est une autre fenêtre, il faut en plus vérifier qu'elle ne recouvre pas partiellement le TControl
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éclairé
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 423
    Par défaut
    Bonjour Shai,

    Oui, merci, mais ce n'est pas de ça que ma mémoire faisait état.
    Mais, bon en 40 ans de dev et les neurones qui pètent au fur et à mesure, je fais peut être erreur.

    En fait c'est plutôt un event qu'il me faudrait, je n'ai plus qu'a l'écrire pour gérer les contrôles, c'est pas compliqué.
    Comme c'est balot de réécrire ce qui existe déjà, je demandais à tout hasard.

    merci

  4. #4
    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 : 55
    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
    Salut, cela ne me dit rien...le truc qui s'en approcherait le plus c'est peut-être IntersectRect() entre le BoundsRect du composant et le ClientRect de son parent
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre éclairé
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 423
    Par défaut
    Bonjour Paul,

    Oui, je vais regarder cette fonction, et voir si elle m'aide à détecter un chevauchement de région,

    merci

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 053
    Par défaut
    Ah les régions, donc c'est GetClipBox qui fourni le rectangle contenant toute la zone devant être dessiné, la zone visible, donc si plus petite que la BoundRect, c'est qu'il n'est pas complèment visible.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 921
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 921
    Par défaut
    Peut-être faisais-tu allusion à UIAutomation IsOffscreen.

    J'ai fait un essai mais ce n'est pas concluant dans une ScrollBox.

    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
    uses UIAutomationClient_TLB;
     
    function TForm1.IsOffScreen(aControl :TWinControl): boolean;
    var
      Element :IUIAUtomationElement;
      RetVal  :integer;
    begin
      with TCUIAutomation8.Create(nil) do
      try
        ElementFromHandle(pointer(aControl.Handle), Element);
        Element.Get_CurrentIsOffscreen(RetVal);
        Result := boolean(RetVal);
      finally
        Free;
      end;
    end;
    Sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    type
      TVisibility = (tvHidden, tvPartial, tvFull);
     
    function GetVisibility(aControl, aContainer :TControl) :TVisibility;
    begin
      if aContainer.ClientRect.Contains(aControl.BoundsRect) then Exit(tvFull);
      if aContainer.ClientRect.IntersectsWith(aControl.BoundsRect) then Exit(tvPartial);
      Result := tvHidden;
    end;

  8. #8
    Membre éclairé
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 423
    Par défaut
    Voilà des idées intéressantes, je vais potasser et tester de mon coté, avec vos propositions, je vais bien trouver un moyen de m'en sortir.

    Merci

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

Discussions similaires

  1. Dossier partagé partiellement visible
    Par YannOss dans le forum Administration
    Réponses: 3
    Dernier message: 06/08/2014, 21h38
  2. Bind seulement si le controle est visible
    Par dudule dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 05/12/2013, 16h44
  3. Occuper la place d'un controle non visible
    Par benny-blanco dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/05/2012, 20h46
  4. Disque partiellement visible
    Par zuulcoder dans le forum OpenGL
    Réponses: 6
    Dernier message: 29/04/2011, 09h56
  5. Réponses: 4
    Dernier message: 06/11/2006, 17h42

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