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 :

Petite question sur un TCheckListBox


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 51
    Par défaut Petite question sur un TCheckListBox
    Bonjour à tous,

    J'ai une question a propos du composant Checklistbox, rien ne vaut mieu qu'un exemple, je voudrai savoir si il est possible de faire ceci :



    Vous l'avez compris, je voudrai pouvoir supprimer la "case à cocher" pour y mettre un texte simple et en dessous remettre les cases à cocher. Si cela est possible, merci de me dire comme faire ?

    Merci d'avance,
    Tom.

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    SAlut
    Je pense pas que se soit faisable comme tu l'entend,pas simplement du moins, par contre tu peux faire comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    checklistbox1.ItemEnabled[0] := False;
    La case a cocher devient grise et ce n'est plus possible de la cocher.
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Salut,

    Peux-tu nous expliquer pourquoi tu souhaites faire ce choix afin de voir si on ne peut pas trouver une solution plus adéquate ? Chaque première ligne devra être de cette façon ?

    Il y a peut être un moyen en passant par un Canvas.TextOut ... mais bon, je pense pas que ça sera très très pratique surtout lorque de la sélection ...

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Re

    [Edit]
    Citation Envoyé par Ero-Sennin
    Il y a peut être un moyen en passant par un Canvas.TextOut ...
    +1
    [/Edit]
    Et si vraiment tu y tiens en faisant comme ca ca fait ce que tu veux, mais attention meme si on ne le vois pas le checkbox existe toujour et on peut le cocher et le decocher en cliquant a son emplacement sous le text

    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
    procedure TForm1.CheckListBox1DrawItem(Control: TWinControl;
      Index: Integer; Rect: TRect; State: TOwnerDrawState);
     
    begin
         If Index = 0 then
         begin
              CheckListBox1.Canvas.FillRect(Rect);
              CheckListBox1.Canvas.TextOut(Rect.Left - 13 , Rect.Top, (Control as TCheckListBox).Items[Index])  { affiche le texte }
         end
         else
         begin
              CheckListBox1.Canvas.FillRect(Rect);
              CheckListBox1.Canvas.TextOut(Rect.Left , Rect.Top, (Control as TCheckListBox).Items[Index])  { affiche le texte }
     
         end;
    end;
    Il faut mettre la propriete style du CheckList a lbOwnerDrawVariable.

    A plus
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Citation Envoyé par Qwazerty Voir le message
    Re

    Et si vraiment tu y tiens en faisant comme ca ca fait ce que tu veux, mais attention meme si on ne le vois pas le checkbox existe toujour et on peut le cocher et le decocher en cliquant a son emplacement sous le text

    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
    procedure TForm1.CheckListBox1DrawItem(Control: TWinControl;
      Index: Integer; Rect: TRect; State: TOwnerDrawState);
     
    begin
         If Index = 0 then
         begin
              CheckListBox1.Canvas.FillRect(Rect);
              CheckListBox1.Canvas.TextOut(Rect.Left - 13 , Rect.Top, (Control as TCheckListBox).Items[Index])  { affiche le texte }
         end
         else
         begin
              CheckListBox1.Canvas.FillRect(Rect);
              CheckListBox1.Canvas.TextOut(Rect.Left , Rect.Top, (Control as TCheckListBox).Items[Index])  { affiche le texte }
     
         end;
    end;
    Il faut mettre la propriete style du CheckList a lbOwnerDrawVariable.

    A plus
    Qwaz
    Tout à fait C'est pour celà que je disais que niveau de la sélection, ca va pas être terrible terrible

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Re
    C'est sur...
    Le plus simple serait de faire une list des items devant ne pas avoir de checkbox et d'utiliser cette list dans la methode Onclickchecked pour ne rien faire si l'item coché est dans la liste mais ca reste du bricolage
    A++
    Qwaz
    bonne nuit

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 51
    Par défaut
    Bonjour à tous,

    Déjà merci beaucoup pour toutes vos réponses, et en plus très rapidement !

    Citation Envoyé par Qwazerty
    SAlut
    Je pense pas que se soit faisable comme tu l'entend,pas simplement du moins, par contre tu peux faire comme ca

    Code :

    checklistbox1.ItemEnabled[0] := False;La case a cocher devient grise et ce n'est plus possible de la cocher.
    A++
    Qwaz
    C'est une idée, mais cela ne convient pas dans mon cas, surtout pour une question de clarté.

    Citation Envoyé par ero-sennin
    Salut,

    Peux-tu nous expliquer pourquoi tu souhaites faire ce choix afin de voir si on ne peut pas trouver une solution plus adéquate ? Chaque première ligne devra être de cette façon ?

    Il y a peut être un moyen en passant par un Canvas.TextOut ... mais bon, je pense pas que ça sera très très pratique surtout lorque de la sélection ...
    Je souhaite faire ce choix afin de classe mes liste en catégorie, je trouve que ca pourrait être clair, mais c'est peut être pas simple. Est ce qu'il existe un autre composant peut être plus approprié ?

    Citation Envoyé par Qwazerty
    Et si vraiment tu y tiens en faisant comme ca ca fait ce que tu veux, mais attention meme si on ne le vois pas le checkbox existe toujour et on peut le cocher et le decocher en cliquant a son emplacement sous le text

    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
    procedure TForm1.CheckListBox1DrawItem(Control: TWinControl;
      Index: Integer; Rect: TRect; State: TOwnerDrawState);
     
    begin
         If Index = 0 then
         begin
              CheckListBox1.Canvas.FillRect(Rect);
              CheckListBox1.Canvas.TextOut(Rect.Left - 13 , Rect.Top, (Control as TCheckListBox).Items[Index])  { affiche le texte }
         end
         else
         begin
              CheckListBox1.Canvas.FillRect(Rect);
              CheckListBox1.Canvas.TextOut(Rect.Left , Rect.Top, (Control as TCheckListBox).Items[Index])  { affiche le texte }
     
         end;
    end;
    Il faut mettre la propriete style du CheckList a lbOwnerDrawVariable.

    A plus
    Qwaz
    Je vais voir ce que cela donne, mais c'est peut être une bonne idée.

    Pensez vous qu'il y a un autre moyen plus simple avec un autre composant ?

    En tout cas merci beaucoup de vos réponse, j'essaye ce que Qwazerty à mis.

    Agri.

    EDIT : J'ai essayer la solution de Qwazerty, et je dois dire que c'est presque parfait ! Ne serait il pas possible de supprimer la case à cocher en dessous du texte ? Ca la lorsqu'on sélectionne le texte, on vois bien que la sélection s'arrête à la bordure droite de la case à coher !
    Par contre j'ai un autre question, est ce qu'il est possible d'appliquer cette technique à plusieurs case ?

Discussions similaires

  1. [ATL] Petite question sur les progress bar
    Par MrMaze dans le forum MFC
    Réponses: 1
    Dernier message: 06/05/2005, 09h40
  2. [Visuel XP] Petite question sur le theme XP...
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 12
    Dernier message: 20/01/2005, 14h41
  3. petite question sur le composant IBX ...
    Par vbcasimir dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/01/2005, 10h33
  4. Réponses: 3
    Dernier message: 08/12/2004, 13h58
  5. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49

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