Lancer une action en différé

Soyez le premier à donner votre avis sur cette source.

Vue 4 908 fois - Téléchargée 670 fois

Description

Cette petite source présente l'utilisation d'une fonctionalité bas niveau appelé 'PostMessage' qui permet de lancer une action en différé.

Conclusion :


Dans mon exemple je créé un composant en dynamique.
Ce composant au niveau de son 'OnClick' je lui dit de se supprimer lui même.
En gros de scier la branche sur laquelle je suis assis, d'ou problème.
Le 'PostMessage' est là pour régler ce soucis technique. :-)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Lassal
Messages postés
27
Date d'inscription
jeudi 7 novembre 2002
Statut
Membre
Dernière intervention
21 mai 2008
-
Oui pour info moi je développe sous Delphi 7. :-)
Ahh oui, tu a tout à fait raison Cirec. Sous D6, on reçoit même plus qu'une seule insulte ! Par contre moi je n'ai pas d'erreur abstraite ...

Bref, pour faire du code compatible, faites comme Lassal. Pour ceux qui auraient doutés de l'utilité du code, vous avez un argument de choix en plus !
cirec
Messages postés
3809
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 septembre 2019
32 -
Bon j'ai la réponse au mystère ...
enfin je crois :)

je suppose que tout comme moi Florenth a compiler le code avec TurboDelphi (D10) !

Parce que sous D9 on obtient effectivement un message d'insulte mais pas sous D10

Testé avec ton code juste en remplaçant:

PostMessage(Self.Handle, WM_POST, 0, 0);
Par
f_tCheckBoxToDelete.Free;


Ensuite j'ai refait le teste avec le code que je donnais dans mon précédant message
et la surprise sous D9 si je clique en premier sur la CheckBox 3, 4, ou 5 j'obtiens une erreur abstraite mais en cliquant d'abord sur la CheckBox 0, 1, ou 2 pas d'erreur ??????
Et bien sur sous D10 pas de problème !!!!

Voilà ... bizarre ... non !
cs_Lassal
Messages postés
27
Date d'inscription
jeudi 7 novembre 2002
Statut
Membre
Dernière intervention
21 mai 2008
-
Bah justement j'ai eu besoin de trouver cette solution de PostMessage car j'avais des violations d'accès lors de la suppression de CheckBox depuis l'évenement OnClick de ce même composant.
Pareil avec des panels créés en dynamique pour une une appli de gestion de carnet d'adresse récupéré depuis GroupWise.
cirec
Messages postés
3809
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 septembre 2019
32 -
Je dirai même plus :

avec des TCheckBox ça fonctionne aussi ????


procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
begin
for I := 0 to 5 do
with TCheckBox.Create(Nil) do
begin
Parent := Self;
Name := Format('CheckBox%d', [I]);
Left := 15;
Top := 15 + 30 * I;
Caption := Format('CheckBox n°%d', [I]);
OnClick := BtnClick;
end;
end;

procedure TForm1.BtnClick(Sender: TObject);
begin
(Sender as TCheckBox).Free;
end;

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.