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 :

Affichage Centrer ou à Droite dans combobox


Sujet :

Delphi

  1. #1
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 67
    Points : 68
    Points
    68
    Par défaut Affichage Centrer ou à Droite dans combobox
    Bonjour,

    Je voudrais, lorsque je quitte le combobox, que l'affichage des éléments saisis ou la ligne sélectionnée dans l'itemlist soient affichés au centre, à droite ou à gauche suivant un choix d'alignement.

    Cette option m'est nécessaire pour harmoniser la présentation d'un écran pour saisir des données.

    J'ai déjà modifié certains points qui me donnent satisfaction.
    - Couleur différente suivant que nous avons le focus ou pas ;
    - présentation du bord avec un couleur de mon choix ;
    - évité le grisement si composant est avec enabled à False - Choix d'un fond rouge avec écriture en blanc ;
    - Modification des polices ou fontes en fonction de la possession du focus ou pas.

    Par contre, j'échoue dans la mise en place d'affichage après avoir quitté le composant. L'affichage se fait suivant mon choix dès la sortie, mais revient à gauche immédiatement.

    Il doit exister un évènement qui se réalise après cette sortie et qui conduit vers l'affichage standard.

    J'ai essayé plusieurs solution, notamment d'utiliser les instructions ES_RIGHT ou ES_CENTER comme pour un TEdit, mais sans résultat.

    Le WM_PAINT de la combobox ne traite que le dessin de la combobox mais pas l'affichage des données.

    Même WndProc de la combobox ne permet pas régler cette difficulté car parmi les messages CB_ je ne vois pas celui qui peut être utilisé après la perte de focus par le composant.

    Merci pour votre aide dans la résolution de cette difficulté en me proposant une méthode ou en m'indiquant le site ou je peux trouver une approche de solution.

    J'ai déjà réalisé cette modification dans un TEdit avec succès, mais pour la combobox cela est plus complexe.

    Merci à tous les prgrammeurs qui m'apporteront leur aide.

  2. #2
    Membre éclairé
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Points : 746
    Points
    746
    Par défaut
    place la propriété Style de ton ComboBox à csOwnerDrawFixed et place ceci dans l'évènement OnDrawItem :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    var
      texte : String;
    begin
      with (Control as TComboBox).Canvas do begin
        Brush.Style := bsSolid;
        Brush.Color := clWhite;
        FillRect(Rect);
        texte := (Control as TComboBox).Items[Index];
        TextOut(Rect.Right - TextWidth(texte), Rect.Top, texte);
      end;
    end;
    à arranger (je vais pas tout faire non plus ) mais c'est une piste
    Donnez un poisson à un homme et il mangera pendant un jour... Apprenez-lui à pêcher et il s'assiéra dans une barque et boira de la bière toute la journée

  3. #3
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 67
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    Merci pour le code, mais ce n'est pas ce que je recherche. Je connaissais déjà cette partie de code et utilisé. Il est d'ailleurs publié sur internet sur plusieurs sites. Pour ma demande, il s'agit du cas ou la propriété style est "csDropDown".

    De plus le centrage ou l'alignement à gauche n'est utile qu'après avoir quitté le composant. Focus sur un autre composant.

    En fait ma demande, ne concerne que le rectangle d'affichage et nullement la partie déroulante de la liste des options possibles.

    J'ai déja constaté qu'en surchargeant "ComboWndProc", il est possible de modifier l'affichage. Par contre, certaines situations ne sont pas gérées.

    Je continue mes recherches.

    Merci d'avance.

Discussions similaires

  1. [XL-2007] Alignement droite dans combobox
    Par danisoaz dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/05/2011, 09h51
  2. Affichage texte justifié à droite dans label
    Par dupont166 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 25/09/2006, 07h40
  3. Réponses: 3
    Dernier message: 01/06/2006, 19h45
  4. Affichage par defaut dans combobox
    Par creale10 dans le forum IHM
    Réponses: 10
    Dernier message: 11/02/2006, 09h04
  5. []probleme affichage valeur dans combobox
    Par gup dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/09/2005, 09h22

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