Lancer une action en différé

Soyez le premier à donner votre avis sur cette source.

Vue 5 052 fois - Téléchargée 689 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
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 !
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
42
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 !
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.
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
42
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;
Afficher les 12 commentaires

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.