Accueil > Forum > > > > affecter une procedure OnWorkBegin
affecter une procedure OnWorkBegin
mercredi 8 avril 2009 à 10:29:33 |
affecter une procedure OnWorkBegin

Gerard
|
Je voudrais avoir un bargraph qui montre la progression d'un transfert de fichier. J'utilise les composants Indy10 avec Turbo Delphi. Je n'arrive pas à affecter mes procédures OnWorkbegin et OnWork au IdTCPClient le code suivant sort des erreurs: IdTCPClient1.OnWorkBegin:= IdTCPOnWorkBegin(Sender,wmRead,AWorkCount); OnWork:= IdTCPWork; Le premier me dit que les types sont incompatibles (TWorkbeginEvent et procédure) Le second que je n'ai pas assez de paramètres... Bien sûr j'ai tourné tout cela dans tous les sens..avec, sans paramètres... J'ai même essayé un transtypage d'un TworkBeginEvent.... 
|
|
mercredi 8 avril 2009 à 12:58:32 |
Re : affecter une procedure OnWorkBegin

Bacterius
|
Ben evidemment ... un TWorkBeginEvent est une méthode d'objet avec plusieurs procédures, il te faut les respecter.
Exemple simple : tu as un événement, dans un composant lambda, qui te fournit un nom d'utilisateur et son mot de passe (en plus du traditionnel Sender). La déclaration de cette méthode d'objet est :
TMonEvenement = procedure (Sender: TObject; User, Password: String) of Object;
Quand tu vas déclarer une procédure pour répondre à cet événement, il te faudra la déclarer comme çela :
procedure TForm1.ReponseEvenement(Sender: TObject; User, Password: String);
Et voilà :)
Cordialement, Bacterius !
|
|
mercredi 8 avril 2009 à 13:02:35 |
Re : affecter une procedure OnWorkBegin

Bacterius
|
Oups il fallait lire "paramètres" à la place de "procédures" dans la première phrase :)
Cordialement, Bacterius !
|
|
jeudi 9 avril 2009 à 10:10:01 |
Re : affecter une procedure OnWorkBegin

Gerard
|
Merci de ta réponse, mais je ne dois pas être bien malin, ou mal réveillé... je ne comprends pas tout. 1) Comment la première déclaration est-elle rattachée à ton objet lambda? 2) comment la procedure Réponse à l'évènement est-elle rattachée à la première déclaration? J'ai bien sûr essayé, mais cela me sort toujours des erreurs...
|
|
jeudi 9 avril 2009 à 16:07:41 |
Re : affecter une procedure OnWorkBegin

Bacterius
|
Pour lier, tu fais :
procedure TForm1.MonEvenement(LesParametresQuiCorrespondentACetEvenement);
begin
... Le code de l'événement ...
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// On rattache l'événement
MonCompo.MonEvenement := MonEvenement;
end;
Et voilà !
Cordialement, Bacterius !
|
|
jeudi 9 avril 2009 à 22:24:18 |
Re : affecter une procedure OnWorkBegin

Delphiprog
|
Pour que ce soit plus clair pour notre ami et si je puis me permettre : Il eût mieux valu écrire : procedure TForm1.FormCreate(Sender: TObject); begin // On rattache l'événement MonCompo.OnMonEvenement := MonEvenement; end; Au lieu de : procedure TForm1.FormCreate(Sender: TObject); begin // On rattache l'événement MonCompo.MonEvenement := MonEvenement; end; Autrement, pour affecter une méthode à un évènement, il faut que la méthode soit conforme à la signature du type attendu. C'est ce qu'a essayé de t'expliquer maître Bacterius  May Delphi be with you
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
|
|
jeudi 9 avril 2009 à 22:31:35 |
Re : affecter une procedure OnWorkBegin

Bacterius
|
Oui désolé j'ai oublié le On. Et voilà c'est la signature de la méthode, voilà c'est le mot que je cherchais :) merci DelphiProg :)
Cordialement, Bacterius !
|
|
vendredi 10 avril 2009 à 06:30:53 |
Re : affecter une procedure OnWorkBegin

Gerard
|
Il me semble que c'est ce que j'ai fait. Cela marche pour OnConnected et OnDisconnected (qui n'ont que Sender comme paramètre) mais pas pour OnWorkBegin et on work qui ont d'autres paramètres. Voilà mon code: Déclaration dans la partie publique de la déclaration de la form. public { Déclarations publiques } IdTCPClient1: TIdTCPClient; procedure IdTCPClient1OnConnected(Sender: Tobject); procedure IdTCPWork(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); procedure IdTCPOnWorkBegin(Sender: Tobject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); end; Partie dans la création de la form... procedure TForm1.FormCreate(Sender: TObject); begin IdTCPClient1:= TIdTCPClient.Create(self); With IdTCPClient1 do Begin Port:=3000; Host:='localhost'; OnConnected:= IdTCPClient1OnConnected; OnDisconnected:= IdTCPClient1OnConnected; IdTCPClient1.OnWorkBegin:= IdTCPOnWorkBegin(Sender,wmRead,AWorkCount); OnWork:= IdTCPWork; ReadTimeout:=10000; end;
Et bien sûr la déclaration des procédures que je n'ajoute pas: cela n'est pas le problème. Donc: On connected et OnDisconnected marchent, mais pas OnWorkBegin et Onwork. J'ai essayé sans paramètre (ex OnWork) ou avec paramètres (OnWorkBegin) Dans le premier cas le compilateur me signale pas assez de paramètres, dans le second E2010 Types incompatibles : 'TWorkBeginEvent' et 'procedure, untyped pointer or untyped parameter' (Le type des paramètres est bien déclaré en partie commune... et on ne peut pas les redéclarer ici: syntaxe incorrecte..)
|
|
vendredi 10 avril 2009 à 14:42:46 |
Re : affecter une procedure OnWorkBegin

Bacterius
|
En général, si tu reçois l'erreur "procedure, untyped pointer or untyped parameter" c'est que tu essaies de filer à un événement une procédure "flottante", c'est-à-dire qui n'est pas une méthode. Il faut que ta procédure à rattacher à l'événement soit déclarée après le "public" de la fiche, par exemple.
Cordialement, Bacterius !
|
|
vendredi 10 avril 2009 à 14:48:50 |
Re : affecter une procedure OnWorkBegin

Bacterius
|
Et euh ça c'est pas bon du tout :
IdTCPClient1.OnWorkBegin:= IdTCPOnWorkBegin(Sender,wmRead,AWorkCount);
Essaye ça ?
IdTCPClient1.OnWorkBegin := IdTCPOnWorkBegin;
Si ça ne fonctionne pas c'est que tu n'as pas les bons paramètres pour OnWorkBegin, réfère-toi à la doc.
Cordialement, Bacterius !
|
|
Cette discussion est classée dans : procedure, affecter, onwork, onworkbegin, tworkbeginevent
Répondre à ce message
Sujets en rapport avec ce message
Ou placer les procedures [ par magicvinni ]
J'ai fait une procedure init ( qui initialise un certain nombre de variables comme son nom l'indique.) Cette procedure doit etre lancée dès le début d
Savoir si une procedure est en cours d'exécution [ par Jos ]
Bonjour, J'aimerais donc savoir si une procedure est en cours d'éxécution, de façon à déterminer si celle-ci a lancé l'exécution d'une autre.Merci.
appel de procedure entre fenetre [ par bdv ]
quelqu'un connait il la manière d'appeler une procedure appartenant à une fenetre X depuis une fenetre Y. cette procedure est dans la unit de X. en ut
Messages windows [ par Gysmo ]
Salut, Je n'arrive pas a faire d'operation logic sur les messages de windows de cette maniere:procedure TForm1.FormCreate(Sender: TObject);begin App
pb avec les composants reseaux [ par dampeel ]
Je réalise un petit programme en ce moment et j'ai une question a poser à ce propos...J'utilise des composants serversocket et clientsocket pour réali
Evenement = toujours procedure [ par MasterJ ]
Bonjour,Un petit test comme ca me porte a croire que les evenement ne peuvent etre pris en charge que par des procedures. Je voulais savoir si c'est
Je pensais faire un Keylogger mais c pas si simple... [ par Youyou0214 ]
je voudrais faire un keylogger mais je viens a peine de commencer et des problemes se posent deja. Je voulait que mon application demarre au demarrage
Je pensais faire un Keylogger mais c pas si simple... [ par Youyou0214 ]
je voudrais faire un keylogger mais je viens a peine de commencer et des problemes se posent deja. Je voulait que mon application demarre au demarrage
THREADS ERREUR [ par w38 ]
Bonjour,Étant donné que j'ai une application qui met un temps fou, j'ai décidéd'utiliser des threads.Toutefois, le bouquin que j'ai stipule une formul
Hints dans une DLL [ par almi ]
J'ai une fenêtre (TForm) qui fonctionne parfaitement dans mon executable.Si je la place dans une DLL, j'obtiens le message :Ne peut assigner TFont à T
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|