vieuxpere
Messages postés195Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention17 décembre 2014
-
11 mars 2008 à 15:22
vieuxpere
Messages postés195Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention17 décembre 2014
-
14 mars 2008 à 21:07
Bonjour,
Je souhaiterai savoir comment faire apparaitre les ascenseurs verticaux sur un listbox quand on affiche des données à l'interieur via la méhode canvas (ce n'est donc pas considéré comme des items).
le probleme que j'ai donc c'est que je ne vois pas les informations du bas quand le nombre d'informations à afficher est superieur à la hauteur de mon listbox (puisque que je n'ai pas les asenceurs).
J'espere que j'ai étais clair. Merci par avance de votre aide.
A voir également:
Comment faire apparaitre les ascenseurs sur un listbox où on a écrit avec la mét
Procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
Begin
With TListBox(Control) Do Begin
{On efface le fond} Canvas.FillRect(Rect);
{Si Item est numérique alors on l'écrit
en Rouge (Rouge pâle si sélectionné) + Gras + Barré
Sinon en Bleu (Blanc si sélectionné) + Gras + Italique}
With Canvas.Font Do
If StrToIntDef(Items[Index], -1) = -1Then
Begin
If odSelected In State Then
Color := clWhite
Else
Color := clBlue;
Style := [fsBold, fsItalic];
End
Else
Begin
If odSelected In State Then
Color : = $00C1C1FF
Else
Color := clRed;
Style := [fsBold, fsStrikeOut];
End ;
{Et on dessine le texte}
DrawText(Canvas.Handle, PChar(Items[Index]), -1 , Rect, DT_VCENTER Or DT_SINGLELINE Or DT_LEFT);
End;
End;
{Fonction qui crée une Chaine Numérique aléatoirement} Function BuildNumStr:String;
Var J : Integer;
Begin
SetLength(Result, 8);
For J : = 1 To 8 Do
Result[J] := Chr(Random(10) + 48);
End ;
{Fonction qui crée une Chaine de caractères aléatoirement}
Function BuildStr:String;
Var J : Integer;
Begin
SetLength(Result, 8);
For J : = 1 To 8 Do
Result[J] := Chr(Random(25) + 97);
End ;
Procedure TForm1.button1Click(Sender: TObject);
Var I : Integer;
TmpStr : String;
Begin
With ListBox1.Items Do Try
{On efface tout}
Clear;
BeginUpdate;
{Crée 30 Items aléatoirement} For I : = 1 To 30 Do Begin
If I Mod 3 = 2 Then
{Tous les 3 Items créer une chaine de caractères numérique}
TmpStr : = BuildNumStr
Else
{Autrement créer une chaine de caractères normale} TmpStr := BuildStr;
{Et on l'ajoute à la liste d'Items}
Add(TmpStr);
End ;
Finally
EndUpdate;
End;
End;
Procedure TForm1.FormCreate(Sender: TObject);
Begin
Randomize;
End;
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 14 mars 2008 à 20:48
La moindre des choses c'est de prendre le temps de répondre
à ceux qui ont fait l'effort de te donner ce que tu demandes ...
d'autant plus que cette réponse est complète il n'y a plus rien à faire que recopier, compiler le code pour voir le résultat.
sinon la prochaine fois tu risques d'attendre longtemps avant d'avoir une réponse à tes questions.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 11 mars 2008 à 23:46
Salut,
la méthode que tu utilises n'est pas la bonne.
Le fait de personnaliser l'affichage de la ListBox "avec la méthode Canvas" ne te dispense pas de rentrer les données correctement ... avec la méthode Items.Add (par Exemple)
si tu respectes cela la ScrollBar s'affichera toute seule.