cs_deubal
Messages postés198Date d'inscriptionmercredi 26 novembre 2003StatutMembreDernière intervention26 août 2009
-
25 oct. 2005 à 15:46
DRJEROME
Messages postés436Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 5 février 2015
-
27 oct. 2005 à 17:46
bonjour,
je voudrais savoir si c'est possible d'afficher 2 colonne dans une listbox. Par exemple, une ville (col1) et le code postal (col2).
Comment faut faire ??
Merci par avance
Bonne journée
DRJEROME
Messages postés436Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 5 février 2015 25 oct. 2005 à 20:26
2° solution :
tu prends un Listbox normal, et tu lui mets (par exemple) la propriété "TabWidth" à 40 (choisis une valeur suffisament large par rapport à ton plus long item de ville)
<HR>
begin
listbox1.items.Add('Lyon'+chr(9)+'69000');
listbox1.items.Add('Paris'+chr(9)+'75000');
listbox1.items.Append('Marseille'+chr(9)+'13000');
end;
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 25 oct. 2005 à 16:17
avec l'evenement OnDrawItem.
tu stock une donnée de type : ville<separateur>code postal
une fois soumise dans la listbox il suffit de separer les deux et avec
quelques fonctions qui vont bien afficher les deux de maniere a ce
qu'il soit bien callés.
ListBox avec la propriété Style sur "lbOwnerDrawVariable"
les fonctions qui vont bien : GetVilleFrom et GetCodeFrom
// recupere uniquement le nom de la ville
function GetVilleFrom(line : string) : string;
var psep : integer;
sout : string;
begin
// on recupre la position du separateur
psep := Pos(';',line);
// on assigne Line a une variable de traitement
// car on ne peu pas agir directement sur Line
sout := line;
// on coupe la partie que l'on ne veut pas
delete(sout,psep,length(sout));
// on renvois le resultat
result := sout;
end;
// recupere uniquement le code postal
function GetCodeFrom(line : string) : string;
var psep : integer;
sout : string;
begin
psep := Pos(';',line);
sout := line;
delete(sout,1,psep);
result := sout;
end;
Exemple pour l'evenement OnDrawItem de la listbox :
cs_deubal
Messages postés198Date d'inscriptionmercredi 26 novembre 2003StatutMembreDernière intervention26 août 2009 25 oct. 2005 à 16:34
je te remercie pour tout ce code.
d'autant plus, que cela est très appréciable d'avoir les commentaires (surtout pour une novice comme moi !!)
encore merci
Bonne journée
Vous n’avez pas trouvé la réponse que vous recherchez ?
";" etant le separateur par defaut que j'ai placer.
tu peu le remplacer par exemple par # ou | ou > ou @ ou $ ou * ou %
ect... ect... bref par n'importe quel caractere qui serat a coup sur
pas utiliser dans la chaine.
par exemple n'utilise pas - ou ' ou / car les noms de ville peuvent les inclures.
note que les fonctions GetVille et GetCode peuvent etre remaniée pour d'autre programme.
tu peu egalement dessiner le numero des lignes, le nom des colones ect...
pour cela du devras travailler dans DrawItem
exemple d'affichage des numero de ligne et ligne de separation :
// le numero de l'index +1 pour correspondre a la ligne
cs_deubal
Messages postés198Date d'inscriptionmercredi 26 novembre 2003StatutMembreDernière intervention26 août 2009 26 oct. 2005 à 09:27
wouahou, je vois que ma question permet plusieurs solutions...
Je vous remercie tous(ou toutes) pour cela
m'en vais tester les 2 methodes et voir laquelle correspond le mieux a ce que je souaite.
Encor merci
DRJEROME
Messages postés436Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 5 février 2015 27 oct. 2005 à 17:46
j'avais bien dit :
<HR>
tu prends un Listbox normal, et tu lui mets (par exemple) la propriété "TabWidth" à 40 (choisis une valeur suffisament large par rapport à ton plus long item de ville)
<HR>
Je traduis : (ça veut dire ce que ça veut dire) :
Choisir des valeurs suffisamment larges càd au-delà de 40 pour le "TabWidth", si nécessaire