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 :

Comment tracer une ligne pardessus les controls existants dans la Form ?


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 74
    Points : 44
    Points
    44
    Par défaut Comment tracer une ligne pardessus les controls existants dans la Form ?
    Sous Delphi 7, je souhaite tracer des lignes dans une Form, pardessus tous les divers controls existants .
    Merci de m'indiquer la manière la plus simple de réaliser cela!

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par BaldeckJ Voir le message
    Sous Delphi 7, je souhaite tracer des lignes dans une Form, pardessus tous les divers controls existants .
    Merci de m'indiquer la manière la plus simple de réaliser cela!
    il y a de multiples façon d'y arriver...la plus simple dépendra du but recherché

    exemples:
    - ne pas utiliser de TWinControl sur la fiche
    - placer une fenêtre transparente par dessus la fiche
    - dessiner sur le DC de l'écran
    - dessiner les contrôles enfants dans un bitmap, les rendre invisible et dessiner le bitmap sur la fiche
    - ...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 74
    Points : 44
    Points
    44
    Par défaut Comment tracer une ligne pardessus les controls existants dans la Form ?
    Il s'agit de tracer un cadre autour de l'objet visuel pointé dans la Form, de tracer des lignes d'alignement avec les autres objets, ceci via les événements OnMouseDow, OnMouseUp, OnMouseMove des objets présents dans la Form.
    Un peu comme la fiche conception de Delphi.
    Je recherche une solution simple et performante.
    J'ai essayé avec des Panels et des Shapes mais j'ai des problèmes de couleur (Panel) et de visibilité (shape)

    Pouvez vous m'expliquer grossièrement vos solutions (et m'indiquer celle qui vous paraît la plus appropriée) :
    - placer une fenêtre transparente par dessus la fiche
    - dessiner sur le DC de l'écran
    - dessiner les contrôles enfants dans un bitmap, les rendre invisible et dessiner le bitmap sur la fiche


    Rq :
    - cela doit fonctionner avec tous types d'objets visuels (Palette d'outils Delphi)
    - sous Windows Vista

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Je ne sais pas comment Delphi gère cela, mais s'il est question de dessiner des lignes verticales ou horizontales, le plus simple semble en effet de placer des fenêtre par dessus la fiche...de la même façon que les "Hint"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    procedure TForm1.FormCreate(Sender: TObject);
    var
      cPanel: TForm;
      cPoint: TPoint;
    begin
      cPanel := TForm.CreateNew(Self);
      cPanel.BorderStyle := bsNone;
      cPanel.FormStyle := fsStayOnTop;
      cPanel.Color := clBlue;
      cPoint := Button1.ClientToScreen(Point(0, 0));
      cPanel.SetBounds(cPoint.X, cPoint.Y, 2, 150);
      cPanel.Show;
    end;
    ensuite il faut gérer sa position etc...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 74
    Points : 44
    Points
    44
    Par défaut Comment tracer une ligne pardessus les controls existants dans la Form ?
    J'ai besoin de continuer à accéder aux objets visuels via les événements propre à ceux-ci, donc je ne sais pas si la solution de placer des fenêtre par dessus la fiche est adéquate ?

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    J'ai besoin de continuer à accéder aux objets visuels via les événements propre à ceux-ci, donc je ne sais pas si la solution de placer des fenêtre par dessus la fiche est adéquate ?
    ... ben si tu places une fenêtre de l'épaisseur d'une ligne (soit 1 ou deux pixels) par dessus tu peux accéder à tout le reste : Oui / Non ?

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  7. #7
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour,

    Gilbert disait :
    ... ben si tu places une fenêtre de l'épaisseur d'une ligne (soit 1 ou deux pixels) par dessus tu peux accéder à tout le reste : Oui / Non ?
    Oui bonne idée, mais alors faudrait qu'entre en jeu la détection de Vista ou non, car ce coquin ajoute quelques pixels au niveau des bordures

    @+

  8. #8
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 74
    Points : 44
    Points
    44
    Par défaut
    En fait, la solution appliquée est réalisée avec des TPanel pour les lignes à tracer.
    Ne pas oublier qu'il y a un Pb de couleur qui est résolu comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      PanelLineLeft := TPanel.Create(Formxx);
      PanelLineLeft.Name := 'PanelLineLeft';
      PanelLineLeft.Parent := Formxx;
      PanelLineLeft.Width := 1;
      PanelLineLeft.Height := 0;
      PanelLineLeft.ParentBackground := True;
      PanelLineLeft.ParentColor := True;
      PanelLineLeft.ParentBackground := False;
      PanelLineLeft.ParentColor := False;
      PanelLineLeft.Color := clBlue;
    et redéfinition de données de position et de dimensionnement lors de l'événement OnMouseMove

    ne pas oublier "PanelLineLeft.BringToFront;" lors de l'ajout de nouveau controls dans la Form

  9. #9
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    En fait de fil en aiguille, pourquoi se compliquer la vie, puisqu'il existe encore du plus simple ?

    Par exemple dans la JVCL existe le JvMovableBevel qui devrait être l'idéal en ce cas.
    (Quoiqu'il possède la propriété "movable")

    Il peut se décliner, sous une seule ligne, ou bien un cadre.

    Ou encore un simple Bevel...

    Si même une seule ligne te suffit, alors te reste la possibilité d'utiliser un compo "ligne" tout bête.

    @+

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/07/2011, 19h46
  2. Comment tracer une ligne à la souris
    Par sebmag dans le forum Qt
    Réponses: 12
    Dernier message: 06/09/2010, 12h37
  3. [TASM] Comment tracer une ligne ?
    Par taze1 dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 08/05/2009, 19h02
  4. Réponses: 11
    Dernier message: 26/08/2007, 14h07
  5. Comment tracer une ligne verticale dans un graphique
    Par developpeur82 dans le forum MATLAB
    Réponses: 3
    Dernier message: 03/04/2007, 14h06

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