Probleme pour copier le contenue d'une listbox dans le press-papier windows.

maxoudu328 Messages postés 52 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 mai 2007 - 14 oct. 2005 à 21:50
 barsaoui_ses - 27 avril 2007 à 00:24
Bonjour,

Voila cela fait deux jour que je me suis lance dans le delphi et plus generalement dans la programmation desktop, hier je créer ma premiere calculatrice et pour me simplifier la vie lorsque j'aide un amie a sans-cesse netoyer son pc j'ai voulue confectionner une ptite boite a outil qui me donnerait plusieur info sur osn pc aux moment ou il y a le probleme...

Pour l'instant j'arrive a afficher son IP (bah oui il a une ip dynamique alor quand j'ai besoin de le savoir ... ) et le plus important a mon gout les processus actif sur son pc (la source de souvent bien des lag) mais pour encor plus de simplicité je voudais que en 1 clic le contenue d'une listbox ce copie dans le presse-papier windows pour qu'il n'est plus qu'a me le copie par msn ou autre.

Mais voila c'est processus ne sont pas une simple ligne de carractere avec des saut de ligne mais plusieur ligne qui mon l'air independante, enfin bref je V vous colle ma source ca sera surment plus clair :

-------------------------------------------------

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Tlhelp32,
StdCtrls, ExtCtrls, winsock;

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label3: TLabel;
ListBox1: TListBox;
Button2: TButton;


Function checkIP(HWSADataErr:Pchar;HIPAddress:Pchar):boolean;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;

Type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;

var
Form1: TForm1;

implementation

{$R *.DFM}

Function TForm1.checkIP(HWSADataErr:Pchar;HIPAddress:Pchar):boolean;
var
HHostEnt : PHostEnt;
HPaPinAddr : PaPInAddr;
HName : array [0..255] of char;
I : Integer;
HWSAData : TWSADATA;
SIPAddress : ShortString;
begin

Result := false;

if WSAStartup($0101, HWSAData) <> 0 then begin
case WSAGetLastError of
WSASYSNOTREADY : HWSADataErr:=pchar('Indicates that the underlying network '+
'subsystem is not ready for network communication.');
WSAVERNOTSUPPORTED : HWSADataErr:=pchar('The version of Windows Sockets support '+
'requested is not provided by this particular '+
'Windows Sockets implementation.');
WSAEINPROGRESS : HWSADataErr:=pchar('A blocking Windows Sockets 1.1 operation is '+
'in progress.');
WSAEPROCLIM : HWSADataErr:=pchar('Limit on the number of tasks supported by '+
'the Windows Sockets implementation has been reached.');
WSAEFAULT : HWSADataErr:=pchar('The lpWSAData is not a valid pointer.');
end;
Exit;
end;

if GetHostName(@HName, SizeOf(HName)) = 0 then begin
HHostEnt :=GetHostByName(@HName);
if HHostEnt <> nil then begin

// IP Internet
HPaPinAddr := PaPInAddr(HHostEnt^.h_addr_list);
I := 0;
while HPaPinAddr^[I] <> nil do begin
SIPAddress:=StrPas(inet_ntoa(HPaPinAddr^[I]^));
Inc(I);
end;

StrLcopy(HIPAddress,@SIPAddress[1],length(SIPAddress));
Result:=true;
///////
{
// IP PC Local
SIPAddress:='';
for i:=0 to HHostEnt^.h_length - 1 do
SIPAddress:=SIPAddress + IntToStr(ord(HHostEnt^.h_addr_list^[i])) + '.';

StrLcopy(HIPAddress,@SIPAddress[1],length(SIPAddress)-1); // on supprime le dernier '.'
Result:=true;
//////
}
end
else begin
case WSAGetLastError of
WSANOTINITIALISED : HWSADataErr:=pchar('A successful WSAStartup must occur before '+
'using this function.');
WSAENETDOWN : HWSADataErr:=pchar('The network subsystem has failed.');
WSAHOST_NOT_FOUND : HWSADataErr:=pchar('Authoritative Answer Host not found.');
WSATRY_AGAIN : HWSADataErr:=pchar('Non-Authoritative Host not found, or server failure.');
WSANO_RECOVERY : HWSADataErr:=pchar('Nonrecoverable error occurred.');
WSANO_DATA : HWSADataErr:=pchar('Valid name, no data record of requested type.');
WSAEINPROGRESS : HWSADataErr:=pchar('A blocking Windows Sockets 1.1 call is in '+
'progress, or the service provider is still '+
'processing a callback function.');
WSAEFAULT : HWSADataErr:=pchar('The name argument is not a valid part of '+
'the user address space.');
WSAEINTR : HWSADataErr:=pchar('The (blocking) call was canceled through '+
'WSACancelBlockingCall.');
end;
end;
end
else begin
case WSAGetLastError of
WSAEFAULT : HWSADataErr:=pchar('The name argument is not a valid part of the '+
'user address space, or the buffer size specified '+
'by namelen argument is too small to hold the '+
'complete host name.');
WSANOTINITIALISED : HWSADataErr:=pchar('A successful WSAStartup must occur before '+
'using this function.');
WSAENETDOWN : HWSADataErr:=pchar('The network subsystem has failed.');
WSAEINPROGRESS : HWSADataErr:=pchar('A blocking Windows Sockets 1.1 call is '+
'in progress, or the service provider is '+
'still processing a callback function.');
end;
end;

WSACleanup;
end;




procedure TForm1.Button1Click(Sender: TObject);
var
MyError,
MyIPAddress : array[0..255] of char;
begin
if checkIP(@MyError,@MyIPAddress) then label1.caption:=string(MyIpAddress)
else label1.caption:=string(MyError);
end;






procedure TForm1.Button2Click(Sender: TObject);
var
LPPE : TProcessEntry32;
H : Thandle;
begin

Listbox1.Clear;
h:=CreateToolhelp32Snapshot(TH32CS_SNAPALL ,0);
Lppe.DwSize:=Sizeof(TProcessEntry32);
if Process32First(h,lppe)
then
Begin;
listbox1.items.add(LPPE.szexefile);
while Process32next(h,lppe) do
begin
listbox1.items.add(LPPE.szexefile);
end;

End;
Closehandle(h);
end;
end.



------------------------------------------------

Bon je vous avoue que je n'est pas tous code de A à Z, je n'est pas c'est certain les connaissance nessaicaire (deux jour d'aprentisage faut avouer que c'est peut :) ) j'ai utiliser plusieur sources en les modifiant pour les adapter a mes besoins.

Je veut bien presiser que tous fonctionne a 100% et que je ne post pas pour une malfonctionnement mais parceque je ne sait pas comment copie le contenue de la listbox dans le press-papier windows.

Je vous passe donc la main et vous demande de porter un minimum d'interet a mon probleme qui est peu etre trés simple mais qui pour moi plus vite sera regle mieu ca sera :)

Cordialement, Max.

28 réponses

maxoudu328 Messages postés 52 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 mai 2007
14 oct. 2005 à 21:57
Avant tout ne tene pas compte du premier message qui ne contene aucun formatage, venant surment du fait que j'ai utiliser Opera.

Bonjour,Voila cela fait deux jour que je me suis lance dans le delphi et plus generalement dans la programmation desktop, hier je créer ma premiere calculatrice et pour me simplifier la vie lorsque j'aide un amie a sans-cesse netoyer son pc j'ai voulue confectionner une ptite boite a outil qui me donnerait plusieur info sur osn pc aux moment ou il y a le probleme...
Pour l'instant j'arrive a afficher son IP (bah oui il a une ip dynamique alor quand j'ai besoin de le savoir ... ) et le plus important a mon gout les processus actif sur son pc (la source de souvent bien des lag) mais pour encor plus de simplicité je voudais que en 1 clic le contenue d'une listbox ce copie dans le presse-papier windows pour qu'il n'est plus qu'a me le copie par msn ou autre.
Mais voila c'est processus ne sont pas une simple ligne de carractere avec des saut de ligne mais plusieur ligne qui mon l'air independante, enfin bref je V vous colle ma source ca sera surment plus clair :


unit Unit1;


interface


uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Tlhelp32,
StdCtrls, ExtCtrls, winsock;


type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label3: TLabel;
ListBox1: TListBox;
Button2: TButton;



Function checkIP(HWSADataErr:Pchar;HIPAddress:Pchar):boolean;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;


Type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;


var
Form1: TForm1;


implementation


{$R *.DFM}


Function TForm1.checkIP(HWSADataErr:Pchar;HIPAddress:Pchar):boolean;
var
HHostEnt : PHostEnt;
HPaPinAddr : PaPInAddr;
HName : array [0..255] of char;
I : Integer;
HWSAData : TWSADATA;
SIPAddress : ShortString;
begin


Result := false;


if WSAStartup($0101, HWSAData) <> 0 then begin
case WSAGetLastError of
WSASYSNOTREADY : HWSADataErr:=pchar('Indicates that the underlying network '+
'subsystem is not ready for network communication.');
WSAVERNOTSUPPORTED : HWSADataErr:=pchar('The version of Windows Sockets support '+
'requested is not provided by this particular '+
'Windows Sockets implementation.');
WSAEINPROGRESS : HWSADataErr:=pchar('A blocking Windows Sockets 1.1 operation is '+
'in progress.');
WSAEPROCLIM : HWSADataErr:=pchar('Limit on the number of tasks supported by '+
'the Windows Sockets implementation has been reached.');
WSAEFAULT : HWSADataErr:=pchar('The lpWSAData is not a valid pointer.');
end;
Exit;
end;


if GetHostName(@HName, SizeOf(HName)) = 0 then begin
HHostEnt :=GetHostByName(@HName);
if HHostEnt <> nil then begin


// IP Internet
HPaPinAddr := PaPInAddr(HHostEnt^.h_addr_list);
I := 0;
while HPaPinAddr^[I] <> nil do begin
SIPAddress:=StrPas(inet_ntoa(HPaPinAddr^[I]^));
Inc(I);
end;


StrLcopy(HIPAddress,@SIPAddress[1],length(SIPAddress));
Result:=true;
///////
{
// IP PC Local
SIPAddress:='';
for i:=0 to HHostEnt^.h_length - 1 do
SIPAddress:=SIPAddress + IntToStr(ord(HHostEnt^.h_addr_list^[i])) + '.';


StrLcopy(HIPAddress,@SIPAddress[1],length(SIPAddress)-1); // on supprime le dernier '.'
Result:=true;
//////
}
end
else begin
case WSAGetLastError of
WSANOTINITIALISED : HWSADataErr:=pchar('A successful WSAStartup must occur before '+
'using this function.');
WSAENETDOWN : HWSADataErr:=pchar('The network subsystem has failed.');
WSAHOST_NOT_FOUND : HWSADataErr:=pchar('Authoritative Answer Host not found.');
WSATRY_AGAIN : HWSADataErr:=pchar('Non-Authoritative Host not found, or server failure.');
WSANO_RECOVERY : HWSADataErr:=pchar('Nonrecoverable error occurred.');
WSANO_DATA : HWSADataErr:=pchar('Valid name, no data record of requested type.');
WSAEINPROGRESS : HWSADataErr:=pchar('A blocking Windows Sockets 1.1 call is in '+
'progress, or the service provider is still '+
'processing a callback function.');
WSAEFAULT : HWSADataErr:=pchar('The name argument is not a valid part of '+
'the user address space.');
WSAEINTR : HWSADataErr:=pchar('The (blocking) call was canceled through '+
'WSACancelBlockingCall.');
end;
end;
end
else begin
case WSAGetLastError of
WSAEFAULT : HWSADataErr:=pchar('The name argument is not a valid part of the '+
'user address space, or the buffer size specified '+
'by namelen argument is too small to hold the '+
'complete host name.');
WSANOTINITIALISED : HWSADataErr:=pchar('A successful WSAStartup must occur before '+
'using this function.');
WSAENETDOWN : HWSADataErr:=pchar('The network subsystem has failed.');
WSAEINPROGRESS : HWSADataErr:=pchar('A blocking Windows Sockets 1.1 call is '+
'in progress, or the service provider is '+
'still processing a callback function.');
end;
end;


WSACleanup;
end;



procedure TForm1.Button1Click(Sender: TObject);
var
MyError,
MyIPAddress : array[0..255] of char;
begin
if checkIP(@MyError,@MyIPAddress) then label1.caption:=string(MyIpAddress)
else label1.caption:=string(MyError);
end;



procedure TForm1.Button2Click(Sender: TObject);
var
LPPE : TProcessEntry32;
H : Thandle;
begin


Listbox1.Clear;
h:=CreateToolhelp32Snapshot(TH32CS_SNAPALL ,0);
Lppe.DwSize:=Sizeof(TProcessEntry32);
if Process32First(h,lppe)
then
Begin;
listbox1.items.add(LPPE.szexefile);
while Process32next(h,lppe) do
begin
listbox1.items.add(LPPE.szexefile);
end;


End;
Closehandle(h);
end;
end.

Bon je vous avoue que je n'est pas tous code de A à Z, je n'est pas c'est certain les connaissance nessaicaire (deux jour d'aprentisage faut avouer que c'est peut :) ) j'ai utiliser plusieur sources en les modifiant pour les adapter a mes besoins.
Je veut bien presiser que tous fonctionne a 100% et que je ne post pas pour une malfonctionnement mais parceque je ne sait pas comment copie le contenue de la listbox dans le press-papier windows.
Je vous passe donc la main et vous demande de porter un minimum d'interet a mon probleme qui est peu etre trés simple mais qui pour moi plus vite sera regle mieu ca sera :)

Cordialement, Max.
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
14 oct. 2005 à 23:07
salut,

vas voir cette source:

PRESSE-PAPIERS & CIE

je pense que cela peut te donner des idees pour l'utilisation du presse papier

bonne prog
0
maxoudu328 Messages postés 52 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 mai 2007
14 oct. 2005 à 23:32
Ben mon probleme c'est surtout commnt gerer la listbox pour mettre tous les element avec par exemple un saut de ligne a la fin de chaque element dans une variable, pour que ca done a la fin une chaine de caractere :

ex :

[process systeme]
explorer.exe
msnmsgr.exe
rudll32.exe

je voudrais que ca donne a la fin :

[process systeme] \n explorer.exe \n msnmsgr.exe \n rundll32.exe

ou qq chose d'exploitable dans ce genre les saut de ligne sont les seul que je connaissae mais je crois que ce n'est pas ce la qui sont utilise par delphi)

charger le tout dans une varible pour ensuite l'utiliser, y'aurais ptetre aussi moyen d'utilise rl e xml mais ca en delphi j'y connait vraiment rieeeeeeeen (dailleur un peu comme tou dans le delphi).

Cordialement, Max.
0
maxoudu328 Messages postés 52 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 mai 2007
14 oct. 2005 à 23:38
Source pas mal mais rien sur les listbox :'( ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
14 oct. 2005 à 23:44
tu fais:

var buffer:string;

i:integer;

begin

for i:= 0 to listbox.count-1 do

begin

buffer: =buffer+ listbox.item[i]+'\n';//on concatene les chaines en une seule

end;

end;

en final tu n'as qu'une seule chaine qui contient la totalite de la listbox enfin si j'ai bien compris ta question

bonne prog
0
maxoudu328 Messages postés 52 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 mai 2007
14 oct. 2005 à 23:57
bas je veut que chaque item de la listbox soit a la suite et separe par un saut de ligne, je pence pas que c'est bien compliqué.
0
maxoudu328 Messages postés 52 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 mai 2007
15 oct. 2005 à 00:11
@jlen100

j'ai un identificateur non declarer sur le "item" de :

listbox1.item[i]

sinon j'ai l'impression en me basant sur mes connaissance de prog qui se limite au langage web que sai ce que je cherche.
0
maxoudu328 Messages postés 52 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 mai 2007
15 oct. 2005 à 00:12
lol t'avait oublie le "s" de items...
0
maxoudu328 Messages postés 52 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 mai 2007
15 oct. 2005 à 00:19
par contre dans un label c'est quoi le code pour fair un saut de ligne parceque \n et '+#13+' ne marche pas .
0
maxoudu328 Messages postés 52 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 mai 2007
15 oct. 2005 à 00:59
bon listoire de saut de ligne est regle, la fonction de copie dans le presse papier aussi maintenant je voudrai savoir si il est posible de fair une fonction pour que l'on rentre un identifiant dans un tedit pour kill le presesus qui est assosie a cette identifiant

et il faudrait aussi que l'identifiant apparaise a cote du nom du processus .. voila je veut pas le code direct (quoi que :D ) mais au moin savoir si c'est possible et pas trop complique et si vous avez de bonnes piste sur le sujet , n'oublie pas j'ai commencé hier alor ne me sortait pas de truc trop sompliqué non plus.

Cordialement, max
0
bv94 Messages postés 40 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 16 décembre 2006 1
15 oct. 2005 à 01:03
HProc := OpenProcess(1,False,ProcessID);
TerminateProcess(HProc,4);

ou processid est le handle de ton processus à tuer...

BV94
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
15 oct. 2005 à 07:03
excuse moi de ne te repondre que maintenant mais je m'étais deconnecté

effectivement j'avais oublié le s de l'item (la fatigue sans
doute).pour faire une saut de ligne dans un label il faut mettre chaine1+#10+#13+chaine2:

label1.Caption:='A'+#10+#13+'B';

nota: n'oublie paas de mettre la propriete AutoSize a true;

sinon pour detriure un process en cours la solution de bv94 me parrait tout à fait correcte

bonne prog
0
maxoudu328 Messages postés 52 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 mai 2007
15 oct. 2005 à 10:38
euuu dsl mais je voit pas trop ce que je doit fair de ces deux lignes de code par rapport au mien cité plus haut.
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
15 oct. 2005 à 11:03
le #10+#13 remplace le \n
0
maxoudu328 Messages postés 52 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 mai 2007
15 oct. 2005 à 11:26
non lol si ta lue mon post plus haut ca fait ltps (c'est relatif) que j'ai regle ce probleme je parle du code pour donne un identifiant unique a chaque processus actif histoire de pouvoir l'identifier lors d'un kill :

HProc := OpenProcess(1,False,ProcessID);
TerminateProcess(HProc,4);

Voila j'ai remplacer mon :

h:=CreateToolhelp32Snapshot(TH32CS_SNAPALL ,0);

Qui correspond a une variable de type Thandle

Par :

HProc := OpenProcess(1,False,ProcessID);

Mai ca me donne un identificateur sur le ProcessID donc bon si il faut le declarer vous pouriez me dire comment fair ou peut etre il faut fair autre chose enfin bref je ne sait pas donc si vous pouriez mieu me detailler cette fonction, Merci.

Cordialement.
0
maxoudu328 Messages postés 52 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 mai 2007
15 oct. 2005 à 18:34
Hey je up un peu parceque je fait que cherche mais je trouve pas comment afficher le PID a cote du nom du processus, et comment par la suite fair un kill selon ce PID ...

J'ai fait a peut prés tout les message du forum et toute les sources je les est décortiqué dans tout les sens mais ya trop de truc et c'est pas encor trés limpide pour moi donc si qq aurait juste les ligne qu'il me faut + 1 mini explication de ce qu'on en fait j'en serait vraiment trés content.

Cordialement,Max
0
bv94 Messages postés 40 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 16 décembre 2006 1
15 oct. 2005 à 20:43
Re,

voici une procedure qui devrait te ramener dans une listview les infos dont tu as besoin, je crois.
Attention, je n'ai pas tapé ce code sous delphi donc pas testé à la compile...

procedure Taprocedure;
var
Hdl: HWND;
entry : PROCESSENTRY32;
ID : cardinal;
newitem : tlistitem;
begin
hdl := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
entry.dwSize := sizeof(entry);
if Process32First(hdl,entry) then
begin
with tonlistview do
begin
newitem := Add;
newitem.caption := (entry.szExeFile);
newitem.subitems.add(inttostr(entry.th32ProcessID));
while Process32Next(hdl,entry) do
begin
Add(entry.szExeFile);
with FORMmain.LVencours.Items do
begin
newitem := Add;
newitem.caption := (entry.szExeFile);
newitem.subitems.add(inttostr(entry.th32ProcessID));
end;
application.ProcessMessages;
end;
free;
end;
end;
end;

Ensuite, sur l'événement on change de ton listview :

begin
Edit1.text := tonlistview.subitems.strings[0];
end;

Et sur le bouton qui va tuer le process :

var
hproc : thandle;
begin
hproc := OpenProcess(1,False,ProcessID);
TerminateProcess(HProc,4);
end;

En esperant que ceci va pouvoir t'aider... Sinon, n'hesite pas a redemander. ;-)

BV94
0
bv94 Messages postés 40 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 16 décembre 2006 1
15 oct. 2005 à 20:46
Désolé, ne pas lire

Et sur le bouton qui va tuer le process :

var
hproc : thandle;
begin
hproc := OpenProcess(1,False,ProcessID);
TerminateProcess(HProc,4);
end;

mais

Et sur le bouton qui va tuer le process :

var
hproc : thandle;
begin
hproc := OpenProcess(1,False,strtoint(TonEdit.text));
TerminateProcess(HProc,4);
end;

BV94
0
maxoudu328 Messages postés 52 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 mai 2007
15 oct. 2005 à 22:28
Procedure afficherProc;
var
Hdl: HWND;
entry : PROCESSENTRY32;
ID : cardinal;
newitem : tlistitem;
begin
hdl := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
entry.dwSize := sizeof(entry);
if Process32First(hdl,entry) then
begin
with Tlistview do
begin
newitem := Add;
newitem.caption := (entry.szExeFile);
newitem.subitems.add(inttostr(entry.th32ProcessID));
while Process32Next(hdl,entry) do
begin
Add(entry.szExeFile);
with FORMmain.LVencours.Items do
begin
newitem := Add;
newitem.caption := (entry.szExeFile);
newitem.subitems.add(inttostr(entry.th32ProcessID));
end;
application.ProcessMessages;
end;
free;
end;
end;
end;

J'ai des erreur aux niveaux des element en rouge .

Voila j'ai un listview -> listview
2 elements dans cette listview -> 0 - processus | 1 - ID

Donc j'ai une erreur aux niveau des add en tant qu'identificateur non declarer.

J'espere que tu poura me dire d'ou ca vient et sinon deja un GRDDDDDDDDd merci.
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
15 oct. 2005 à 23:28
add n'est pas une propriete de Tlistview pour ajouter un element à listView utilise additem et item.add à listitem cela devrait donner:

newitem := item.Add;

bonne prog
0
Rejoignez-nous