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 :

TreeView selected color et lostfocus


Sujet :

Delphi

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Février 2005
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 317
    Par défaut TreeView selected color et lostfocus
    Salut à tous, je penses que vous savez que lorsque l'on sélectionne un élément d'un listview, le fond de celui-ci devient bleu/noir. Est-il possible sans redessiner sois même le composant (ownerDraw) de gardé le fond de l'item sélectionné lorsque le treeview perds le focus ?

    Merci!

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Février 2005
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 317
    Par défaut
    bon voila comment j'ai fait:
    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
    procedure TfrmMain.treefieldsCustomDrawItem(Sender: TCustomTreeView;
      Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
    begin
    with sender do
    begin
      if (node=sender.Selected) then
      begin
      canvas.brush.color:=CLNavy;
      canvas.Font.Color:=CLWhite;
      canvas.Font.style:=[fsbold];
      end
      else
      begin
      canvas.brush.color:=clwindow;
      canvas.Font.Color:=CLBlack;
      canvas.Font.style:=[];
      end;
      canvas.FillRect(node.DisplayRect(true)); //ici mettre false pour colorier toute la ligne
      canvas.TextOut(node.DisplayRect(true).left,node.DisplayRect(true).top,node.Text);
    end;
    end;

  3. #3
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Salut
    Il me semble que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      if (node=sender.Selected) then
    paut avantageusement être remplacé par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      if State = dsSelected then
    Le State du paramètre représente l'état de l'item en cours de dessin. Vérifie dsSelected dans l'aide, je n'en suis pas sûr
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Février 2005
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 317
    Par défaut
    Ca marche pas je ne sais pourquoi :s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Syntaxe 
     
     
    [Delphi] type TCustomDrawState = set of (cdsSelected, cdsGrayed, cdsDisabled, cdsChecked, cdsFocused, cdsDefault, cdsHot, cdsMarked, cdsIndeterminate);
    Je mets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      if (State = cdsSelected) then
    Et j'obtiens l'erreur:
    [Pascal Erreur] Unit1.pas(1451): E2008 Types incompatibles

    Edit: Il fallait faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (cdsSelected in state) then

  5. #5
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Citation Envoyé par nek_kro_kvlt
    Edit: Il fallait faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (cdsSelected in state) then
    AH oui c'est vrai désolé
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Février 2005
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 317
    Par défaut
    Il y avait aussi une propriété HideSelection qui mise a false garce un état grisé sur l'item sélectionné !

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

Discussions similaires

  1. Listbox selection color
    Par soeursourire dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 29/05/2013, 16h29
  2. TREEVIEW select VB.net 2005
    Par tro2blabla dans le forum VB.NET
    Réponses: 3
    Dernier message: 10/07/2008, 17h57
  3. [TreeView] Selection par double-clique d'une ligne
    Par knarf87 dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 07/07/2008, 11h20
  4. [JFace] TreeViewer : selection "vide"
    Par Mucho dans le forum SWT/JFace
    Réponses: 9
    Dernier message: 30/05/2007, 18h21
  5. Colorer le texte d'une node d'un treeView
    Par SBP dans le forum MFC
    Réponses: 3
    Dernier message: 28/10/2004, 19h34

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