Checklistbox

Signaler
Messages postés
8
Date d'inscription
mercredi 3 mars 2004
Statut
Membre
Dernière intervention
6 avril 2007
-
Messages postés
8
Date d'inscription
mercredi 3 mars 2004
Statut
Membre
Dernière intervention
6 avril 2007
-
bonjour à tous
voilà mon soucis: je desire encoder dans mon checklistbox la liste des clients present dans un point de vente et y associer l'id de l'encaissement!
j'utilise donc  la ligne de commande suivante dans une boucle pour creer chaque item :
     valeur:=form1.rech_encaissement.FieldByName('id_encais').Value;              CheckListBox1.AddItem(form1.client.FieldByName('nom').Value+form1.client.FieldByName('prenom').value,tobject(string(valeur)));
(cette commande fonctionne dans une autre partie de l'applic mais le tobject est un integer)    

lorsque je demande par un showmessage le contenu de valeur celui-ci me donne "id_encais' correctement
    showmessage('valeur:'+valeur);
par contre lorsque je demande par la meme formule le contenu de tobject des enregistrement selecionné
    showmessage('object:'+string(CheckListBox1.Items.Objects[i]));
 là c'est une catastrophe
j'ai un peu tout et n'importe quoi qui arrive!
    généralement le premier item est correct les suivants me donne soit des signes cabalistiques soit un message enorme avec rien dedans voire meme une saturation memoire!
pour me faciliter les choses j'ai essayer de trouver un dbchecklistbox mais rien trouver à l'heure actuel... c'est pourquoi je fais appel à l'équipe
merci d'avance de toutes vos suggestions et de vorte aide

5 réponses

Messages postés
3827
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
16 décembre 2021
46
Salut,

Essay comme ceci :

showmessage('object:' + CheckListBox1.Items[i]);
 

@+
Cirec
Messages postés
8
Date d'inscription
mercredi 3 mars 2004
Statut
Membre
Dernière intervention
6 avril 2007

merci de ta reponse cirec mais
cela va me donner le nom et le prenom du client non? c'est la valeur de l'object qui m'interesse! mais je vais essayer quand meme
Messages postés
8
Date d'inscription
mercredi 3 mars 2004
Statut
Membre
Dernière intervention
6 avril 2007

c'est bien ce que je pensais de cette manière on recupère la valeur de l'item et non la valeur de l'object
or c'est la valeur de l'object qui m'interresse car cet id doit servir plutard dans la procedure
merci quand meme de ta reponse
Messages postés
3827
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
16 décembre 2021
46
Bon alors si j'ai bien compris tu désires mettre dans l'object une valeur de type Integer et bien sur pouvoir la récuperer


 


c'est possible mais il faut convertir la valeur en String (avec IntToStr(Valeur) ) et là ça fonctionne :


 



Var

  sstr : String = 'Essais pour DelphiFr';
  Valeur : String = '123456';



implementation




{$R *.DFM}




procedure TForm1.Button1Click(Sender: TObject);
begin
 CheckListBox1.Items.AddObject(sstr, TObject(LongInt(Valeur)));
end;



procedure TForm1.CheckListBox1Click(Sender: TObject);
Const Txt = '%s  %s';
begin
   ShowMessage(Format(Txt, [CheckListBox1.Items[CheckListBox1.ItemIndex], String(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex])]));
end;















@+
Cirec
Messages postés
8
Date d'inscription
mercredi 3 mars 2004
Statut
Membre
Dernière intervention
6 avril 2007

helas...
en fait j'expliquais que autre part dans mon application j'utilisais cette propriété avec un integer et que cela marchais extremement bien.
ma question est jstement pour l'executer avec un string. car a cet endroit mon id_caisse est composé de plusieurs element qui en font un systeme unique mais qui est un string!
je viens de faire une petite application qui illuste ce qui ne va pas et qui reprend grossomodo l'idée
deux formulaires:
form1
unit Unit2;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,unit3, StdCtrls, CheckLst;
type
  TForm2 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    CheckListBox1: TCheckListBox;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
form3.show;
end;
procedure TForm2.Button2Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to form2.CheckListBox1.Count-1 do
  begin

   if form2.CheckListBox1.Checked[i] then
   showmessage('item:'+checklistbox1.items[i]+' object:'+string(CheckListBox1.Items.Objects[i]));
   end;
end;
end.
form2
unit Unit3;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm3 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;
var
  Form3: TForm3;
implementation
uses
unit2;
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
begin
form2.CheckListBox1.AddItem(edit1.Text,tobject(string(edit2.Text)));
end;
end.
donc le form2.button1 permet d'ouvrir un formulaire pour remplir de checklist
le form2.button2 permet de lire les infos du checklistbox item+object... selectionne quelques items et remarque les phenomènes