Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : utilisation avancée du composant combobox sur delphi 5 [ Divers / Débutant(e) ] (ibrahimakhalil)

vendredi 24 novembre 2006 à 20:55:56 | utilisation avancée du composant combobox sur delphi 5

ibrahimakhalil

BALDE THIERNO HAMIDOU ETUDIANT A L'UNIVERSITE DE CONAKRY EN INFORMATIQUE
Je suis sur un projet et je veux utiliser combobox pour creer une liste comme la feuille d'excel ou je peut mettre nom et prenoms date de naissance lieu pays mais je ne parviens pas faire quelque chose de bien je demande l'aide detaillée car je suis bébutant, et c'est mon prémier projet un peu costaud puisque je doit faire un agenda ou je dois gerer les temps etc..
priere de bien vouloir m'aider



vendredi 24 novembre 2006 à 21:37:05 | Re : utilisation avancée du composant combobox sur delphi 5

cirec

Membre Club Administrateur CodeS-SourceS
Salut,

un TListView me parait plus approprié vu le nombre d'information que tu dois y stocker !



 
@+
Cirec


vendredi 24 novembre 2006 à 22:56:54 | Re : utilisation avancée du composant combobox sur delphi 5

cirec

Membre Club Administrateur CodeS-SourceS
une autre solution :

Tu places sur une nouvelle fiche :
2 TEdit
1 TDateTimePicker
1 TButton
1 TComboBox


Type
PMyRec = ^TMyRec; // Déclaration d'un type pointeur sur données Record
TMyRec = Record
  FName: string// Prénom
  LName: string; // Nom
  FDate: TDate; // Date de naissance
end;

//  Inscription des données dans TCombobox
procedure TForm1.Button1Click(Sender: TObject);
var
  MyRecPtr: PMyRec;
begin
  New(MyRecPtr); //  Nouveau pointeur sur données
  MyRecPtr^.FName := Edit1.Text; //  Mise à jour des données
  MyRecPtr^.LName := Edit2.Text;
  MyRecPtr^.FDate := DateTimePicker1.Date;
//  Enregistrement dans  Combobox.Items.Object sous le nom LName
  Combobox1.Items.AddObject(Edit2.Text, TObject(MyRecPtr));
end;

//  Lecture des données depuis TCombobox
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Edit1.Text := PMyRec(Combobox1.Items.Objects[ComboBox1.ItemIndex])^.FName;
  Edit2.Text := PMyRec(Combobox1.Items.Objects[ComboBox1.ItemIndex])^.LName;
  DateTimePicker1.date := PMyRec(Combobox1.Items.Objects[ComboBox1.ItemIndex])^.FDate;
end;

Tu remplis comme suit :

Edit1 pour le Prénom
Edit2 pour le Nom
DateTimePicker1 pour la date de naissance
puis tu cliques sur le button1 pour enregistrer les données dans le ComboBox1

tu répètes l'opérations deux fois au moins pour pouvoir tester

et ensuite tu cliques sur l'item de ton choix dans le ComboBox1 pour voir les données s'afficher dans les TEdit et le TDateTimePicker

voilà bonne nuit ...

 
@+
Cirec


samedi 25 novembre 2006 à 00:54:51 | Re : utilisation avancée du composant combobox sur delphi 5

Caribensila

Membre Club
La prière de Ibrahim a été exhaussée avec brio.



Merci pour cette leçon, Cirec.

samedi 25 novembre 2006 à 09:00:46 | Re : utilisation avancée du composant combobox sur delphi 5

Delphiprog

Administrateur CodeS-SourceS
Certes, mon cher Caribensila, la prière de IBrahim est exaucuée mais j'ai bien peur qu'un cauchemar soit en train de naitre !
En effet, dans la solution proposée par Cirec, quid de la libération de mémoire ?

Voici une approche orientée objet et facilitant cette libération des objets créés :

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    edFirstName: TEdit;
    edLastName: TEdit;
    btnAdd: TButton;
    cbxUserData: TComboBox;
    dtpBirthDate: TDateTimePicker;
   
procedure btnAddClick(Sender: TObject);
   
procedure cbxUserDataChange(Sender: TObject);
   
procedure FormDestroy(Sender: TObject);
 
private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
type
  {Déclaration d'un classe "helper" facilitant
  la mémorisation des données dasn la liste déroulante}
  TUserData = class
  public
    Firstname: string;
    LastName:
string;
    BirthDate: TDate;
 
end;


procedure TForm1.btnAddClick(Sender: TObject);
var
  UserData: TUserData;
begin
  //Création d'un objet TUserData
  UserData := TUserData.Create;
 
{On renseigne ses champs avec les valeurs saisies à l'écran}
  UserData.Firstname := edFirstName.Text;
  UserData.LastName := edLastName.Text;
  UserData.BirthDate := dtpBirthDate.Date;
 
{Ajout de l'objet à la liste}
  cbxUserData.Items.AddObject(edLastName.Text, UserData);
 
{L'item actif de la liste est celui qu'on vient d'ajouter}
  cbxUserData.ItemIndex := cbxUserData.Items.Count - 1;
end;

procedure TForm1.cbxUserDataChange(Sender: TObject);
var
  UserData: TUserData;
begin
  {On s'assure d'abord qu'un élément est sélectionné !}
  if cbxUserData.ItemIndex <> -1then
  begin
    {On récupère l'élément TUserData actuellement sélectionné}
    UserData := cbxUserData.Items.Objects[cbxUserData.ItemIndex] as TUserData;
    {On affiche les valeurs de l'élément TUserData actuellement sélectionné}
    edFirstName.Text := UserData.Firstname;
    edLastName.Text := UserData.LastName;
    dtpBirthDate.Date := UserData.BirthDate;
 
end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
  i: integer;
begin
  {NE PAS OUBLIER de libérer les objets pointés par la liste !!!
  Ici, on détruit du dernier au premier :}
  for i := cbxUserData.Items.Count - 1 downto 0 do
     cbxUserData.Items.Objects[i].Free;

end;

end.

C'est un peu plus propre.
Comme Ibrahim a dit qu'il était débutant, mieux vaut, à mon avis, ne pas l'orienter vers l'usage des pointeurs dès maintenant.

May Delphi be with you !

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.


samedi 25 novembre 2006 à 12:30:32 | Re : utilisation avancée du composant combobox sur delphi 5

cirec

Membre Club Administrateur CodeS-SourceS
Bon alors si on se met a donner des codes complet ... lol

je n'ai jamais dit que le code que j'ai donné était complet mais vu les déclarations de Delphiprog ... je me sens obligé

mais d'un autre coté quand je donne un code complet on me dit que je ne devrais pas ... je suis trop gentil ... il faut qu'ils cherchent par eux même ...

Enfin ... voici le code :

Type
PMyRec = ^TMyRec;
TMyRec = record
  FName: string;
  LName: string;
  FDate: TDate;
end;

Var MonTab : Array Of PMyRec; // Déclaration supplémentaire

procedure TForm1.Button2Click(Sender: TObject);
var
  MyRecPtr: PMyRec;
begin
  New(MyRecPtr);
  MyRecPtr^.FName := Edit1.Text;
  MyRecPtr^.LName := Edit2.Text;
  MyRecPtr^.FDate := DateTimePicker1.Date;
  SetLength(MonTab, Combobox1.Items.Count +1); // Déclaration supplémentaire
  MonTab[High(MonTab)] := MyRecPtr; // Déclaration supplémentaire
  Combobox1.Items.AddObject(Edit1.Text, TObject(MonTab[High(MonTab)]));
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Edit1.Text := PMyRec(Combobox1.Items.Objects[ComboBox1.ItemIndex])^.FName;
  Edit2.Text := PMyRec(Combobox1.Items.Objects[ComboBox1.ItemIndex])^.LName;
  DateTimePicker1.date := PMyRec(Combobox1.Items.Objects[ComboBox1.ItemIndex])^.FDate;
end;

//  Et pour finir la libération des prisonniers ... euh ... des pointeurs
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
Var I : Integer;
begin
  For I := 0 To ComboBox1.Items.Count - 1 Do
   Dispose(PMyRec(Combobox1.Items.Objects[I]));
  Finalize(MonTab);
end;

Voilà j'ai fait le ménage ...
Maintenent c'est propre !!!   non ?

 
@+
Cirec


samedi 25 novembre 2006 à 13:06:34 | Re : utilisation avancée du composant combobox sur delphi 5

cirec

Membre Club Administrateur CodeS-SourceS
Bon en fait j'ai posté un peut trop vite.


Voici la source sans code inutile :

Type
PMyRec = ^TMyRec;
TMyRec = record
  FName: string;
  LName: string;
  FDate: TDate;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  MyRecPtr: PMyRec;
begin
  New(MyRecPtr);
  MyRecPtr^.FName := Edit1.Text;
  MyRecPtr^.LName := Edit2.Text;
  MyRecPtr^.FDate := DateTimePicker1.Date;
  Combobox1.Items.AddObject(Edit1.Text, TObject(MyRecPtr));
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Edit1.Text := PMyRec(Combobox1.Items.Objects[ComboBox1.ItemIndex])^.FName;
  Edit2.Text := PMyRec(Combobox1.Items.Objects[ComboBox1.ItemIndex])^.LName;
  DateTimePicker1.date := PMyRec(Combobox1.Items.Objects[ComboBox1.ItemIndex])^.FDate;
end;


// en fait c'est la seul chose qui change avec le code de mon premier message
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
Var I : Integer;
begin
  For I := 0 To ComboBox1.Items.Count - 1 Do
   Dispose(PMyRec(Combobox1.Items.Objects[I]));
end;



 
@+
Cirec


samedi 25 novembre 2006 à 14:41:18 | Re : utilisation avancée du composant combobox sur delphi 5

japee

Membre Club Administrateur CodeS-SourceS
Bonjour,

C'est vrai, il y a souvent plus de codes utiles, intéressants et... consistants sur
le forum que dans la section des codes sources...

Comme je suis un peu hors-sujet, j'ouvre un topic, à +

japee

samedi 25 novembre 2006 à 14:47:53 | Re : utilisation avancée du composant combobox sur delphi 5

Delphiprog

Administrateur CodeS-SourceS
C'est vrai que tu es gentil
Trop ? faut voir...

Dans le cas présent et vu qu'ibrahimakhalil est débutant, autant lui indiquer les bonnes façons de faire.
Nos deux solutions semblent équivalentes en apparence. Mais comme ibrahimakhalil n'a pas précisé s'il travaillait avec Delphi pour Win32 ou Delphi pour .Net, j'ai préféré assurer avec du code sans pointeurs, ce qui fonctionne dans les deux cas.

Maintenant ibrahimakhalil, c'est à toi de jouer !

May Delphi be with you !

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.


samedi 25 novembre 2006 à 15:40:31 | Re : utilisation avancée du composant combobox sur delphi 5

cirec

Membre Club Administrateur CodeS-SourceS
@ Delphiprog
oui il est vrai que les pointeurs ne sont plus utilisables sous .Net ...
mais je pense pouvoir affirmer qu'il développe pour Win32 vu le titre donné a sa question :
"utilisation avancée du composant combobox sur delphi 5 "

@ Japee
je suis entièrement d'accord avec toi sur la présence de codes plus consistants sur le forum que dans les codes sources.

Et a ce propos il serait peut être intéressant de pouvoir mettre dans ses favoris (sur CS) des liens qui pointes sur des questions du forum afin de pouvoir retrouver facilement ces perles.

 
@+
Cirec



1 2 3

Cette discussion est classé dans : combobox, composant, utilisation, delphi, avancée


Répondre à ce message

Sujets en rapport avec ce message

Utilisation du composant TComport [ par FouratiSST ] Bonjour,j'ai besoin d'aide sur l'utilisation du composant Tcomport. Merci bcp de vouloir m'aider sur mon projet.En faite je suis entraint de faire une composant TStringAlignGrid [ par bubu4242 ] Bonjour à tout le monde,Nouveau sur ce forum, j'espère que je n'enfreins pas le règlement en envoyant ce message ici.Voilà : avec Delphi 1 j'utilisais Utiliser le client Outlook avec Delphi [ par coco59211 ] Bonjour,Je tiens à signaler en premier lieu que je ne suis pas programmeur et que mes connaissances en Delphi sont donc assez basiques.Je viens de réa Installation d'une DLL pour Delphi 2007 [ par lofo18 ] Bonjour tout le monde,Je code sous Delphi 7 depuis quelque temps, et je suis passé à Delphi Studio 2007 depuis peu.mon problème est que j'ai une DLL " listbox et combobox en delphi [ par romualdus ] bonjour a tous, voici mon probleme,j'ai un listbox qui contient 10 elements et je souhaiterais les affectes 1 a 1 dans 10 edit  differents(l'ordre de Composant NMSMTP de Delphi 4 [ par c_icla ] Bonjour,J'ai un utilitaire developpé en Delphi 4 qui utilise le composant NMSMTP de D4 pour envoyer un fichier par mail.J'aimerais le passer en D2005. Manque le composant TTimer [ par roeugene ] Dans l'application que j'ai développé en Delphi 7, j'utilisé le composant TTimer. Maintenant quand j'ouvre l'application sous Delphi 7 sur un autr Installation d'un composant... dur dur [ par misteroupskod ] Bonjour et merci à ceux qui prendrons la peine de lire ce message .Voila je n'arrive pas a installé un composant, ce n'est pas le premier qui me pose Composant ActiveX [ par Creature_Funebre ] Bonjour,Après multiple recherche divers, je vous pose ma seul et unique question.OU puis-je trouver le composer  WebBrowser pour Delphi 6Ainsi que le d'Installshield Express (delphi 7) [ par BELDJEBEL ] Comme plusieurs utilisateurs d'Installshield Express (delphi 7) je coince sur son utilisation. En effet à partir d'un programme très basique, pour com


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.