Affichage dans un Combobox

Signaler
Messages postés
133
Date d'inscription
mercredi 4 janvier 2006
Statut
Membre
Dernière intervention
7 septembre 2010
-
Messages postés
133
Date d'inscription
mercredi 4 janvier 2006
Statut
Membre
Dernière intervention
7 septembre 2010
-
J'utilise un Affichage couleur dans un Combobox.
Tout est paramétrée en police 8 (font.size:=8).


Tout marche mais lorsque l'utilisateur change la taille de police, le texte dans mon combobox se chevauche ...
Comment faire pour décaler le texte plus bas, en sachant que le choix de la taille est max 12 (font.size:=12) ?


procedure TForm2.ComboBoxCouleurDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with (Control as TComboBox).Canvas do
begin
FillRect(Rect);
TextOut(30, Rect.Top,ComboBoxCouleur.Items[Index]);
Pen.Color := clBlack;
Brush.Color := ColorConst[Index];
Rectangle(Rect.Left + 2, Rect.Top + 2, 24,Rect.Top + 15);
end;
end;

3 réponses

Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Avant d'écrire la ligne avec Textout, utilise la méthode TextHeight pour connaitre la hauteur nécessaire avec la taille de la police courante sur ton canvas.

<hr color="#008000">Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Messages postés
133
Date d'inscription
mercredi 4 janvier 2006
Statut
Membre
Dernière intervention
7 septembre 2010

La propriété Style du TComboBox est à csOwnerDrawVariable.

Pour TextHeight, j'ai essayé avec OnMeasureItem dans lequel j'affectais differentes valeurs à Font.Height et je faisais un refresh ... Comme ca ne marchait pas du tout, j'ai essayé de modifier la hauteur de mes rectangles dans le combobox et ce de facon definitive en jouant avec :
Rectangle(Rect.Left + 2, Rect.Top + 2, 24,Rect.Top + 15);
Le problème est que ca ne marche que si je cliquais sur l'item ... Tu vois une solution ?
Messages postés
133
Date d'inscription
mercredi 4 janvier 2006
Statut
Membre
Dernière intervention
7 septembre 2010

J'ai enfin une réponse qui a defaut de faire entierement ce que je veux, resoud en partie mon problème avec ItemHeight de TCombobox.
Certes, il aurait mieux valu que j'arrive a adapter en fonction de la taille de la police, mais bon, avec un case of + combobox, ca devrait le faire. Ce n'est pas de la Grande programmation, mais ca dépanne.