LISTBOX et OBJECT [Résolu]

Messages postés
6
Date d'inscription
mardi 17 décembre 2002
Dernière intervention
15 septembre 2009
- - Dernière réponse : DENNLER
Messages postés
6
Date d'inscription
mardi 17 décembre 2002
Dernière intervention
15 septembre 2009
- 15 sept. 2009 à 19:04
Bonjour,
je désire utiliser un élement de type Tcolor avec une listBox.

ListBox1.Items.AddObject (ColorToString (Colors[I]),TObject(Colors[I])); // Pour Créer un élément
ListBox1.Canvas.Font.Color := TColor(ListBox1.Items.Objects [Index]); // Pour Récupérer l'information

Mais comment modifier un enregistrement ??
TColor(ListBox1.Items.Objects [Index]):= ?????; // Erreur
D'avance merci
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
3
Merci
sous Delphi < 2007

const
  Colors : array[0..1] of integer = ($00FF00, $FF0000);

procedure TForm7.FormCreate(Sender: TObject);
begin
  // Items[0] = 0000FF00
  // Objects[0] = 0x0000FF00
  ListBox1.Items.AddObject(format('%.8x',[Colors[0]]), Pointer(Colors[0]));

  // Objects[0] = 0x00FF0000
  ListBox1.Items.Objects[0] := Pointer(Colors[1]);

  // Color = $00FF0000
  color := integer(ListBox1.Items.Objects[0]);
end;



sous Delphi >= 2007

const
  MaxColors = (10 shl 20) div SizeOf(Integer);

type
  // Attention Colors utilise le champ Objects!
  // on utilise soit l'un, soit l'autre.
  TStringsHelper = class helper for TStrings
  private
    function GetColors(index: integer): integer;
    procedure SetColors(index: integer; const Value: integer);
  public
    function AddColor(const Str: string; const Color: integer): integer;
    property Colors[index: integer] : integer read GetColors write SetColors;
  end;



const
  Colors : array[0..1] of integer = ($00FF00, $FF0000);

procedure TForm7.FormCreate(Sender: TObject);
begin
  ListBox1.Items.AddColor(format('%.8x',[Colors[0]]), Colors[0]);

  ListBox1.Items.Colors[0] := Colors[1];

  color := ListBox1.Items.Colors[0];
end;



{ TStringsHelper }

function TStringsHelper.AddColor(const Str: string; const Color: integer): integer;
begin
  AddObject(Str, Pointer(Color));
end;

function TStringsHelper.GetColors(index: integer): integer;
begin
  result := integer(Objects[index]);
end;

procedure TStringsHelper.SetColors(index: integer; const Value: integer);
begin
  Objects[index] := pointer(Value);
end;

Merci f0xi 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de f0xi
Messages postés
6
Date d'inscription
mardi 17 décembre 2002
Dernière intervention
15 septembre 2009
0
Merci
Bonjour,
Merci pour cette réponse rapide qui me permet de mieux comprendre l'utilisation des objects dans une listbox.
Commenter la réponse de DENNLER

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.