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 :

Comment désactiver le Focused d'un Listview!


Sujet :

Delphi

  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 321
    Par défaut Comment désactiver le Focused d'un Listview!
    Bonsoir,
    Je n'arrive pas à trouver une manière à retirer le Focused d'un ListView en cliquant sur la zone..
    voici ce que j'ai fait au debut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Item.Focused := False;
    Ceci fonctionne, mais en cliquant sur la ligne elle devient selectionner puis si on déclique de la souris
    la ligne blueâtre disparais. Mon problème est que je ne veut pas que cette ligne s'affiche quand on clique
    avec la souris sur la zone.

    En cherchant j'ai fait des test de cette manière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TFrame.ListView1CustomDrawItem(
      Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
     
    var
      focusrect : Trect;
    ..
     
    ToFrame1.ListView1.OwnerDraw := True;
    Sender.Canvas.DrawFocusRect(focusrect);
    J'ai fais ceci à partir d'un example que j'ai trouver
    mais je ne sais pas quoi mettre entre les parentèses du DrawFocusRect!!
    (La compilation ce fait sans faute mais au clique la ligne selection apparait toujours)
    A vrais dire je n'ai pas bien compris comment redessiner ce rectangle....
    Merci pour l'aides
    Salutations
    Ardely

  2. #2
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Citation Envoyé par Ardely
    A vrais dire je n'ai pas bien compris comment redessiner ce rectangle....

    Bonsoir,

    Essaies pour le DrawFocusRect:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ListView1.Canvas.ClipRect
    a la place de focusrect

    En espérant t'aider,
    @ +

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 321
    Par défaut
    Bonsoir,
    Je viens d'essayé mais ce rectangle bleuté est toujours active si je clique sur
    la liste. Merci pour l'info.

  4. #4
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,

    Effectivement, je n'avais pas saisi si tu avais besoin de la faire apparaître ou pas.
    Si tu passes la valeur OwnerDraw a true de ton ListView dans l'inspecteur d'objet, il te faut alors gerer tout le dessin des éléments dans l'objet.
    Donc si tu n'indiques rien de particulier lorsque l'utilisateur selectionne une ligne, par ex lors d'un test du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void __fastcall TForm2::ListView1CustomDrawItem(TCustomListView *Sender,
    	  TListItem *Item, TCustomDrawState State, bool &DefaultDraw)
    {
    //etc, etc ...
    if (State.Contains(cdsSelected))
    {
    //bla, bla...
    }
    }
    alors il n'y a pas de raison pour que le 'FocusRect' apparaisse ...

    (désolé, c'est du code de C++Builder, mais l'idée reste la même)

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    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 081
    Par défaut
    ou tout simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TFrmTestDivers.ListView1Change(Sender: TObject; Item: TListItem; Change: TItemChange);
    begin
      ListView_SetItemState(ListView1.Handle, Item.Index, 0, LVIS_SELECTED); // Renvoie un Booleen ...
    end;
    ajoute "CommCtrl" dans tes uses ...
    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

  6. #6
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 321
    Par défaut
    Bonjours,
    Peut-tu m'expliquer 'ListView_SetItemState' et l'identificateur 'LVIS_SELECTE'
    Merci

  7. #7
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 321
    Par défaut
    Est-ce possible comme mentionner au début:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sender.Canvas.DrawFocusRect(focusrect);
    ou tout Simplement de changer la couleur de Blue et Blanc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sender.Canvas.Brush.Color := clWhite
    Salutations

  8. #8
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 321
    Par défaut
    Tu sais,.. je viens de tester la procedure de 'ShaiLeTroll' a vrais dire j'ai été un peut trop vite en oubliant 'CommCtrl' dans les uses. sorry
    Merci et bon Weekend
    Salutations

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/06/2024, 13h02
  2. Réponses: 3
    Dernier message: 28/06/2007, 12h25
  3. Réponses: 8
    Dernier message: 24/07/2003, 10h45
  4. Réponses: 2
    Dernier message: 09/07/2003, 14h10
  5. Comment désactiver Ctrl+Alt+Del sous Windows XP
    Par ETOKA dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 04/06/2003, 13h34

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