LISTBOX et OBJECT [Résolu]

DENNLER 6 Messages postés mardi 17 décembre 2002Date d'inscription 15 septembre 2009 Dernière intervention - 15 sept. 2009 à 08:39 - Dernière réponse : DENNLER 6 Messages postés mardi 17 décembre 2002Date d'inscription 15 septembre 2009 Dernière intervention
- 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
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 15 sept. 2009 à 17:16
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de f0xi
DENNLER 6 Messages postés mardi 17 décembre 2002Date d'inscription 15 septembre 2009 Dernière intervention - 15 sept. 2009 à 19:04
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.