watrem
Messages postés51Date d'inscriptionsamedi 15 octobre 2005StatutMembreDernière intervention17 août 2008
-
5 mai 2008 à 14:37
watrem
Messages postés51Date d'inscriptionsamedi 15 octobre 2005StatutMembreDernière intervention17 août 2008
-
6 mai 2008 à 20:15
Bonjour j'ai telecharger sur le site un code tres court permettant d'afficher l'heure dans une StatutBar. Je n'ai aucune erreur au niveau du code mais a l'executon l'heure n'apparait pas .
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202237 6 mai 2008 à 00:15
kénanahafout d'avoir l'heure dans la barre de status puisque tu l'as dans la barre des taches! :)
Idle c'est de la crotte en barre en plus ... faut bouger la souris pour que ça fasse quelque chose ...
aucun interet si on doit bouger la souris tout le temps pour voir l'heure.
le mieux pour afficher l'heure c'est un Timer! pouf
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
procedure AppIdle(Sender: TObject; var Done: Boolean);
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.AppIdle(Sender: TObject; var Done: Boolean);
begin
application.Title := TimeToStr(Now);
done := not self.Active; // uniquement si la fenetre est active
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnIdle := AppIdle;
end;
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 6 mai 2008 à 00:26
"Idle c'est de la crotte en barre en plus ... faut bouger la souris pour que ça fasse quelque chose ...
aucun interet si on doit bouger la souris tout le temps pour voir l'heure."
depuis quand il faut bouger la souris !!!!!
MAIS NON .... justement Idle est appelé quand l'application ne fait rien
et ça arrive souvant
bien sûr un Timer reste la meilleur manière ... mais le but de la source de Delphiprog était d'utiliser les temps mort d'une application
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 6 mai 2008 à 13:08
"
oui c pas relie pas de point bleu mais je pense savoir pourquoi"
c'est ce que je te disai ... la raison est que as copier le code au lieu de doucle cliquer sur l'évènnement pour le compléter par la suite ^^
clique sur réponse acceptée si elle te convient
@+
Cirec
<hr siz="" />
Vous n’avez pas trouvé la réponse que vous recherchez ?
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 6 mai 2008 à 14:16
tu cliques sur la Statusbar
dans l'inspecteur d'objet propiété Panels ---> tu cliques sur les 3 petits points à droite (...)
une fenêtre s'ouvre tu y sélectionnes " 1 - StatusPanel "
et dans l'inspecteur d'objet propriété Alignement tu selectionnes "taRightJustify"
et voilà le texte restera à droite tout le temps
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 6 mai 2008 à 17:23
Bonjour,
oui mais attention : moi j'aime bien mettre la version du programme tout a droite dans la barre de status, mais parfois ca coute un peu (pour version 1.31 il affiche juste version 1. et un petit bout du 3 ...)
Alors méfiance ^^ mets des espaces après au pire (StatusBar1.Panels[1].Text := TimeToStr(now) + ' '; )
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 5 mai 2008 à 18:24
Bonjour, il est inutile d'utiliser "Done", puisqu'un contrôle d'éxecution ne passe pas à la ligne suivante tant que la ligne en cours n'est pas terminée.
Quant à ton code, je ne vois pas la déclaration de la variable "now".
Et n'oublie pas de mettre le SimpleText de ton StatusBar à False, et tout devrait marcher ;)
Cordialement, Bacterius !
PS : j'ai trouvé un site avec pas mal de composants sympa, le voici :
watrem
Messages postés51Date d'inscriptionsamedi 15 octobre 2005StatutMembreDernière intervention17 août 2008 5 mai 2008 à 18:36
Salut , ben en faite dans le source i n'y a pas de declaration de la variable "now" donc forcement qu je ne l'ai pas mise , pour le moment j'en suis a reproduire betement bg !!!!!!!
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20082 5 mai 2008 à 19:42
Euh Bactérius, now() c'est une fonction système, pas une variable !!!
Donc aucun soucis de ce coté là.
ton code est juste si tu vires le "done := False" et que tu t'assures que tos statusbar ait deux panels (l'heure s'affiche dans le deuxième d'après ton code)
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 5 mai 2008 à 20:09
Bonjour,
ok excusez moi (et Bacterius ne prend pas d'accent ^^)
Au temps pour moi, je ne connaissais pas "now" :)
Un petit conseil : si il y a juste l'heure qui doit s'afficher dans ta statusbar, tu fixes SimpleText à True, et tu marque l'heure dans StatusBar.Caption.
De plus, je pense que Florenth a raison, c'est la seule explication logique, a priori ^^ Essaye de mettre 2 panels dans ta statusbar ;)
watrem
Messages postés51Date d'inscriptionsamedi 15 octobre 2005StatutMembreDernière intervention17 août 2008 5 mai 2008 à 21:13
Bacterius je te remercie de te casser la tete moi aussi je cherche j'ai ouvert 2 delphi et j'ai tout comparer !!
le code fonctionne dans les deux cas , sauf que moi j'ai pas l'heure qui s'inscrit ( au moins je ne sera jamais a la bourre) ,j'ai lu que c'etait mieux d utiliser ce code qu'un TTimer c'est pour cette raison que je voudrais l'utiliser .
Si ca n marche pas c'est qu il y a forcement une raison , donc faut trouver la cause. la solution que tu me propose ne corrige pas l'erreur c'est une autre methode que de toute facon je vais essayer.
Mais je suis tetu et faut que cette fonction fonctionne bg
Sinon je ne vois pas comment le code ne pourrait pas marcher chez toi.
Quelle version de Delphi utilises-tu ?
On va t'aider à résoudre le problème t'inquiete pas ^^ on y arrivera :p
Je vais te demander quelques petits trucs pour aider à résoudre ton problème :
- ta version de Delphi
- si tu as des composants non-standards installés
- si tu as des messages d'erreur, décris-les le plus possible
- vérifie bien si le code est exactement pareil.
- vérifie aussi le fichier projet
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 5 mai 2008 à 21:38
Bonsoir,
@Cirec : je n'ai pas fait d'unité, je me suis trompé en écrivant, j'ai en fait arrangé un tout petit peu les procédures GradientRect et GradientTriangle dans ton unité, pour empecher le tracage à moins de 2 couleurs pour la première, et moins de 4 pour la deuxième, rien de plus ...
Par contre j'ai construit une petit application autour de ton code, avec le même système de briques et tout, pour mon usage personnel (j'adore avoir un dégradé en arrière-plan de bureau ... mmmh ...).
Si tu veux je peux t'envoyer l'application que j'ai construit autour de ton code, mais il est pas optimisé, la je cherche à l'améliorer, et je cherche surtout une facon de faire des dégradés autour d'un polygone ou d'un cercle :) Voila tout est dit :p
watrem
Messages postés51Date d'inscriptionsamedi 15 octobre 2005StatutMembreDernière intervention17 août 2008 6 mai 2008 à 12:42
Bon je ne sait pas jusqu'a quelle point je suis con MAIS J'Y ARRIVE PAS !!! bon je vais decrire toute les procedures que j'execute
1) Ouverture de RAD Studio 2007 // Nouveau Projet // Application Fiche VCL.
j'obtiens ca :
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm2 = class(TForm)
TStatutBar1 : TStatutBar;
procedure FormCreate (sender : TObject);
private
{ Déclarations privées }
procedure AppIdle (sender : TObject; var : done : Boolean);
public
{ Déclarations publiques }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.AppIdle (Sender : TObject; var Done : Boolean);
begin
application.Title := TimeToStr (now);
done := not self.Active;
end;
procedure TForm2.FormCreate (Sender: TObject);
begin
Application.OnIdle :=AppIdle;
End;
End.
2) En mode Conception j'ajoute le composant TSTATUTBAR ( operation 1)
3) En mode Conception je double-clic sur le composant TSTATUTBAR et je creet
0 - TStatutPanel
1 - TstatutPanel (j'ai bien mes deux panels visible sur ma forme)
En mode CODE j'ai une erreur que je n'avais pas avant car je faisais des copier//coller
4) Creation de la procedure AppIdle dans les declarations { private}
procedure AppIdle (Sender : TOject ; var Done : Boolean); (operation 2)
5) Je cree la Premiere procedure
procedure TForm2.AppIdle (Sender : TObject; var Done : Boolean);
begin
application.Title := TimeToStr (now);
done := not self.Active;
end;
6) je cree la 2 ieme procedure
procedure TForm2.FormCreate (Sender: TObject);
begin
Application.OnIdle :=AppIdle;
End;
End.
j'ai Aucun message d'erreur je fait F9
Resultat : J'ai pas l heure qui s'affiche dans la statut bar et ca m'gave
Siquelqu'un sait pourquoi merci de me le dire ca fait 2 jour que je suis dessus !!!!!
watrem
Messages postés51Date d'inscriptionsamedi 15 octobre 2005StatutMembreDernière intervention17 août 2008 6 mai 2008 à 12:56
oui et au debut j'ai copier exactement le logiciel telecharger j'ai tout comparer ds les moindres details celui de delphiprog fonctionne la meme chose a l'identique cree par mes soins fonctionne pas et j'en suis a me demander si je sait lire lol