Création de composant et nregistrement de la form [Résolu]

Messages postés
120
Date d'inscription
mardi 8 juillet 2008
Statut
Membre
Dernière intervention
1 décembre 2010
- - Dernière réponse : cavalier2400
Messages postés
120
Date d'inscription
mardi 8 juillet 2008
Statut
Membre
Dernière intervention
1 décembre 2010
- 17 juil. 2009 à 10:55
Bonsoir, exemple, Tlabel.create(self);
                                      .Parent:=...
                                      .Name:= ...
Ce que je cherche c'est la suite, comment enregistré la form, comme fait l'assistant Delphi, Merci.
Afficher la suite 

6/26 réponses

Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
5
0
Merci
Attends Cantador je t'envoie un spam pour la forme !

Cordialement, Bacterius !
Commenter la réponse de Bacterius
Messages postés
120
Date d'inscription
mardi 8 juillet 2008
Statut
Membre
Dernière intervention
1 décembre 2010
1
0
Merci
Le problème de la forme de ni69(forme progressive), est presque résolu, j'ai trouvé une solution...
Ces trois lignes;
après avoir arrêté le timer de la fiche principale.
pour ne pas rappeler la forme, attendre la fin de la minute, if isrunning=false then
begin
sleep(50000);
main.Timer1.Enabled := true;
end;

et ClientHeight=OGhigh, en ClientHeight>OGhigh
et tous va pour le mieux.;, SVP s'il ya une autre possibilité, evitant ce tempo... Merci
Commenter la réponse de cavalier2400
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
j'ai regardé ton source.
dans l'activate de la forme principale tu as placé un
Timer1.Enabled := true; ce qui conduit à réactiver le timer sans arrêt..
car cet événement se déclenche de façon intempestive.
Mais c'est nécessaire aussi de maintenir le timer puisqu'en permanence ce dernier scanne tous les rendez-vous et vérifient ceux dont la date et l'heure sont arrivés à échéance afin de déclencher l'alerte.

En fait, tu devrais pouvoir améliorer le processus en plaçant la procédure d'affichage de l'alerte dans un vrai Thread ce qui permettra de dissocier d'une partles deux actions et d'autre part aussi vraisemblablement de supprimer un des deux
Application.ProcessMessages;

cantador
Commenter la réponse de cs_cantador
Messages postés
120
Date d'inscription
mardi 8 juillet 2008
Statut
Membre
Dernière intervention
1 décembre 2010
1
0
Merci
Bonjour Cantador, la petite idée d'en haut marche, (mais c du passable)
> Pour les processMssages: je les ai tous supprimés mais ça n'a rien données,
> tandis que pour le timer que pour letimer de mainform, il faut bien le réactiver à un moment ou un autre,
> J'ai trouvé un exemple, qui s'est heurté au même problème, --> il a trouvé comme solution, gardé l'alarme figé (pas de phase down) jusqu'à un click de l'utilisateur...
--- si je retrouve cet exemple je te passerai le lien... Merci Cantador.
Commenter la réponse de cavalier2400
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
désolé le clic est parti trop vite...


En fait, tu devrais pouvoir améliorer le processus en plaçant la procédure d'affichage de l'alerte dans un vrai Thread ce qui permettra de dissocier les deux actions et te donnera aussi vraisemblablementla possiblité de supprimer un des deux Application.ProcessMessages car il ne faut pas abuser de cette écrite.

Enfin, il faudrait aussi prévoir une purge automatique des rendez-vous dès que ceux-ci sont périmés en plaçant une fonction à l'ouverture du programme et à la fin de l'alerte.

Inconvénient de ce soft, il faut qu'il soit en permanence ouvert pour qu'il fonctionne.

Donc, prévoir une mise en veille afin de le rendre complétement opérationnel.

sinon, l'ensemble est assez bien écrit.

A quand le dépôt sur CS ?

cantador
Commenter la réponse de cs_cantador
Messages postés
120
Date d'inscription
mardi 8 juillet 2008
Statut
Membre
Dernière intervention
1 décembre 2010
1
0
Merci
Bonjour Cantador,
- C un module d'un autre programme
- le check est à faulse, la purge sera fera après un changement de date (raison: pour les statistiques du jour),

essaye ça dans main
if listview1.Items[ii-1].Checked then
if t=h(now, false) then
if result then
begin
main.Timer1.Enabled := false;
listview1.Items[ii-1].Checked:=false;
showmessage('ok');
AlertMsgBox('x','y',3,true ); // c de Ni69
end;

et

dans ni69 dans ws_down:
end else if AlertWindowState = WS_DOWN then begin // PHASE DE DESCENTE
ClientHeight := ClientHeight - 1;
Top := Top + 1;
if ClientHeight=1 then begin // Une fois en bas, on arrête
AlertWindowState:=WS_DISABLED;
ExecutionTimer.Enabled := false;
Visible := false;
IsRunning := false; // Changement de l'état du drapeau pour permettre une autre exécution
if isrunning=false then
begin
sleep(50000);
main.Timer1.Enabled := true;
end;

le truckage marche, mais j'aime pas.
je vais modifier le sleep(50000) par une fonction qui controle un changement de minute
tel que t1>t0

t1 minute courante
t0 minute du début de la procédure ni69

La fonction existe dans dateutils!!!
et là c'est parfait.
(Pourquoi changer le sleep?) tous simplement on risque de ne pas voir s'exécuter la minute suivante! puisque on connait le temps que dure la ni69, mais pas exactement début de la minute, milieu ou fin... et si le sleep est un peu court, risque qu'elle s'exécute une 2ème fois, c'est une chronatie entre le pas du timer et le sleep, autant éviter tous,...
Commenter la réponse de cavalier2400