begin process at 2010 09 06 05:54:02
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > WALLPAPER ET CALENDRIER

WALLPAPER ET CALENDRIER


 Information sur la source

Note :
Aucune note
Catégorie :Graphique Classé sous :wallpaper, papier peint, calendrier Niveau :Débutant Date de création :16/04/2008 Date de mise à jour :18/04/2008 17:37:46 Vu / téléchargé :6 182 / 355

Auteur : akkroch

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Amateurs de Delphi, Bonjour...
Ce programme permet de positionner un nouveau papier peint sur le bureau de manière aléatoire sur les 10 premiers .BMP trouvés (je sais, c'est le nième programme...)
Il a pour seule particularité d'afficher également un calendrier annuel en haut à droite, avec effet sur la date du jour.
Dans cette version, il n'est pas paramétrable, mais devrait le devenir dans la prochaine.
J’ai essayé de le commenter au maximum.
Je tiens particulièrement à remercier VERTY (sur ce site), qui, sans même le savoir, m’a donné envie de programmer en Delphi grâce à son programme ‘calendrier’, qui fait approximativement la même chose que le mien, mais en tellement mieux, que je vais rester modeste très longtemps.
Je sollicite vos critiques, pour peu qu'elles soient constructives et me permettent de progresser ou de me donner des idées d’amélioration pour les versions à venir.
A bientôt les Delphiphiles ;-)
PS : question N° 1 – Il n’y a qu’une procédure (activate). N’ai-je pas intérêt à la découper en plusieurs petites procédures ?



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

16 avril 2008 22:56:31 :
Whoups... 1 erreur: le répertoire C:\FONDS doit exister et avoir au moins 1 fihier BMP
18 avril 2008 17:37:46 :
Bonjour à tous, Suite aux conseils de F0xi voici les 1ères modifications: - remplacement de la majorité des 'If' pour des 'Case' - " de 'terminate' 'par close' - essai de rendre tout ça cohérent Maintenant je m'attaque au parametrage du programme A bientôt pour de nouvelles aventures

 Sources de la même categorie

Source avec Zip Source avec une capture AUSSI PRATIQUE QUE CANVAS.PIXELS[ ] MAIS JUSQU'À 450 FOIS PL... par Caribensila
Source avec Zip Source avec une capture REMPLISSAGE D'UNE COURBE DE BÉZIER par barbichette
Source avec Zip Source avec une capture DESKTOPICONFLYING par cantador
Source avec Zip Source avec une capture DÉFILEMENT D'UN TEXTE SOUS FORME D'IMAGE SUR UN AFFICHEUR À ... par zwail1
Source avec Zip Source avec une capture CONVERSION PIXEL, MM, INCH, TWIPS, POINT... par yanb

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture GÉNÉRATEUR DE CALENDRIER TYPE AGENDA par beckerich
Source avec Zip Source avec une capture WALLPAPERCAM par regismarion
Source avec Zip Source avec une capture CALCUL DE L'ARGUS AUTOMOBILE RAPIDE par Encore1ben
Source avec Zip Source avec une capture CALENDRIER LANCEUR D'APPLICATIONS par candid
Source avec Zip Source avec une capture GESTION DE CALENDRIER DYNAMIQUE par docfullspeed

Commentaires et avis

Commentaire de f0xi le 17/04/2008 02:58:36 administrateur CS

Salut!

premier point, Le zip :

pas besoin des fichiers .DOF, .CFG et .DCU

deuxieme point, Les commentaires :

parfait! une source commentée, même avec un code "bancal" c'est toujours mieux!

troisieme point, TForm1.Create :

ON UTILISE JAMAIS LA VARIABLE GLOBALE DE LA FICHE (FORMx) A L'INTERIEUR DE LA CLASSE (TFORMx)!
on utilise Self ou rien tout simplement.
ce qui donne la premiere correction :

procedure TForm1.FormCreate(Sender: TObject);
begin
  Top         := 0;
  Left        := 0;
  Width       := Screen.Width;
  Height      := Screen.Height;
  BorderStyle := bsNone;
end;


Quatrieme point, Indentation du code!
Un code indenté est un code lisible.
l'indentation c'est l'espace et la marge que l'on laisse entre les lignes de codes (methode dite de l'escalier) afin de delimiter chacunes des portions de codes :

procedure ....;[a la ligne]
begin[a la ligne]
  [2 espaces]portion de code
  [2 espaces]boucle, bloc try, begin etc
  [2 espaces]+[2 espaces]portion de code du bloc
  [2 espaces]end;
end;

exemple :

function UnTruc(parametres): resultat;
var
  n : integer;
  UnObjet : Classe;
begin
  UnObjet := Classe.Create;
  try
    for n := 0 to 10 do
    begin
      UnObjet.Propriété[n] := Parametre[n];
      UnObjet.MiseAJours;
    end;
  finally
    UnObjet.Free;
  end;
end;
  
beaucoup plus lisible que :

function UnTruc(parametres): resultat;
var n : integer; UnObjet : Classe;
begin
UnObjet := Classe.Create;
try
for n := 0 to 10 do begin
UnObjet.Propriété[n] := Parametre[n]; UnObjet.MiseAJours;
end;
finally
UnObjet.Free;
end;
end;  


Cinquieme point, Les mots réservés :

For, If, Begin, End etc ne sont pas a mettre tout en majuscules!
ça rend le code illisible et ça fait mal au yeux.
exemple bon :
tout en minuscules :
for ... to/downto ... do ...
if ... then ... else ...
repeat ... until
try ... finally ... end

notation "phrase" :

For ... to/downTo ... do
If ... then ... else ...
Repeat ... until
Try ... Finally ... end

remarque la notation en "dos de chameau" du downTo.
c'est la notation la plus utilisé en Delphi, Java et ActionScript.
elle permet de mieux lire les identifiants et mots réservés du langage,
et donc le code.

exemples illisibles donc déconseillés :
networkcablestatus
NETWORKCABLESTATUS

exemples lisibles donc conseillés :
NetworkCableStatus -> notation Delphi/VB/Java
NETWORK_CABLE_STATUS -> notation C/C++/Microsoft
networkCableStatus -> notation AS
network_cable_status -> notation quelquonque mais valable.


Sixiemement, les longues imbrication de IF THEN ELSE :

on peut les remplacer la plupart du temps par un Case ... Of.

    case Bcl1 of
      1..3 : Ordo[Bcl1].Y := 010;
      4..6 : Ordo[Bcl1].Y := 180;
      7..9 : Ordo[Bcl1].Y := 350;
    else
      Ordo[Bcl1].Y := 520;
    end;

    case (Blc1 mod 3) of
      1 : Ordo[Bcl1].X := Screen.Width - 555;
      2 : Ordo[Bcl1].X := Screen.Width - 370;
    else
      Ordo[Bcl1].X := Screen.Width - 185;
    end;

Les cases sont plus performantes et moins lourdes de code que les long if then else a la chaine.


Septiemement, Objet, creation/liberation en bloc sécurisé :

cela evite les Leak lors d'erreur du programme. si delphi nous mache beaucoup le travail dans les creations et liberation d'objet, il vaut toujours mieux sécuriser les blocs afin d'assurer la liberation d'objet, de reference ou de pointeur afin de laisser une memoire toujours clean aprés l'arret de notre programme.

donc :

Bmp := TBitmap.Create;
try
  (... code ...)
finally
  Bmp.Free; {ou FreeAndNil(Bmp) }
end;

cela nous assure la liberation de Bmp même en cas d'exception du programme.


Huitiemement, sortie "propre" du programme :

Eteindre un PC en coupant l'alimentation, ça marche. c'est bourrin mais le resultat et que le PC est eteint.
par contre, ça peut bousiller les disques durs, voir la carte mere.

Pour un programme c'est pareils. Application.Terminate c'est bien, mais c'est a réserver pour l'extinction du programme lors d'un cas d'erreur particulier (ressource manquante, condition d'execution non remplie), certe les risques materiels sont quasi-inexistant, par contre cela peut etre risqué pour les données.
Pour quitter un programme proprement, il faut appeler la methode Close de la fiche principale.
soit ici a la fin de ta routine :
  Self.Close;
ou tout simplement
  Close;

cela permet de conserver la chaine évènementielle de la fermeture des fiches.


pour ce qui est de ça :

DeskTopHandle := GetDeskTopWindow;    
DeviceContext := GetDC(DeskTopHandle);

GetDesktopWindow renvois le handle du bureau windows, en gros, la reference a l'objet correspondant a ce dernier.

GetDC quand a lui, fournit, si il existe, la reference au contexte de dessin d'un objet selon son handle. donc la zone ou l'on peut dessiner.

on peut même dans certain cas faire abstraction d'une variable pour le handle de la fiche en faisant tout simplement :
DesktopDC := GetDC(GetDesktopWindow);


Commentaire de akkroch le 17/04/2008 09:03:58

Merci f0xi ! je sens bien en toi le passionné qui cherche à partager sa passion (la preuve: qui ferait des commentaires à 3 heures du matin ;-))
tes critiques et commentaires vont me permettre de progresser (c'est d'ailleurs ce que je sollicitais).
Dès ce soir je m'attelle à corriger la majorité des erreurs que tu signales, bien qu'à titre personnel je préfère mettre les mots réservés en majuscule (mais si ce sont des conventions...)
Je vais également me procurer quelques livres. Pour l'instant ma seule aide (toi même mis à part) à été la touche F1 dans Delphi 6.

Commentaire de f0xi le 17/04/2008 15:44:26 administrateur CS

Et je t'encourage dans cette voie!
y'a longtemps qu'on as pas eu de petits nouveaux comme toi ici.

Pour ce qui est de la notation du code, tu fait comme tu le sens, mais le mieux est d'appliquer les conventions borland, comme ça, tout le monde ecrit le code de façon identique et donc lisible par tous.
L'indentation est quand a elle plus importante que la notation.
Tu peu jeter un oeuil aux sources des top 50 (DelphiProg, Florenth, GrandVizir, Cirec, Japee, Debiars, Mauricio, Caribensila etc) de DelphiFR, faire un tours dans les tutos aussi.

bon courage et bonne continuation.

Commentaire de cirec le 19/04/2008 11:42:27 administrateur CS

Que dire de plus ...

juste que tu pouvais te passer d'un GetDC ainsi que du BitBlt. d'ailleurs à ce sujet tu ne libères toujours pas le DC avec ReleaseDC en fin d'utilisation.

tu pouvais dessiner directement dans le bitmap ce qui te permettrait de créer l'image sans que l'utilisateur ne voit rien, en toute transparence quoi!

Et l'idée d'utiliser un répertoire à part n'est pas forcément la meilleur chose à faire. ça oblige l'utilisateur à créer un répertoire (au nom exacte) et a y mettre des images BMP.

Alors que tu pouvais utiliser directement le répertoire "MesImages" par exemple!!! Comment ?
regarde ici :
http://www.delphifr.com/codes/UTILITAIRE_39080.aspx

en tout cas bravo ... et bonne continuation pour la suite.

ps : pour la convention d'écriture et les habitudes ... comme le Florenth on en as tous eut et certaines sont tenaces mais si tu t'y mets de suite ce sera plus simple que de s'y mettre après 5 ou 10 ans de programmation ^^
Personnellement j'écris toujours encore tout en dos de chameau même les mots réservés ^^ et à ce propos je vous signale que c'est l'auto complétion de l'IDE qui me le fait et j'ai rien changé dans les options (moi je trouve que ça en facilite la lecture). Mais c'est pas la pire des manie .. tant que le reste est respecté (plus ou moins ^^)

Commentaire de VERTY le 21/04/2008 09:39:40

Bonjour

Je n'ais plus le temps de developper
mais je suis ravi que ma source est fait des adeptes
Un peu larguer maintenant sur les versions delphi,je n'ais d'ailleurs pas reinstallé ma version delphi depuis un plantage de micro
Bonne continuation dans le developpement
j'essaierais de m'y remettre un jour
@plus

Commentaire de akkroch le 23/04/2008 15:57:29

Merci pour tous vos commentaires.
Ca me fait chaud au coeur de voir des personnes qui se donnent la peine de me faire profiter de leur compétence juste pour le plaisir d'accueillir un nouveau dans la communauté.
La version corrigée va un peu tarder, pour la bonne raison que nous allons vers les beaux jours ;-) et que mon amie ne comprend pas que je préfère apprendre à programmer que tondre la pelouse. J'ai aussi tant de concepts à assimiler pour faire un programme qui vaille le coup d'être simplement regardé...
Le but ultime est qu'il soit entièrement parametrable, qu'il n'apparaisse que dans le systray (pour pouvoir changer d'image de manière aléatoire) et qu'en positionnant la souris sur certaines dates choisies un hint apparaisse avec la tâche du jour à accomplir (tout en restant dans une image bureau)
souhaitez moi bonne chance !!!
PS Si l'un d'entre vous connait un administrateur du site, proposez lui de sous diviser les codes par rapport à la version de chaque compilateur (ce qui est valable en delphi 7, ne l'était peut être pas en Delphi 3)...
A bientôt

Commentaire de hfr11 le 28/04/2008 13:07:06

Bonjour à tous...

Après avoir lu ces commentaires...
Petite remarque d'ordre général générée par le ragard d'un administrateur de site :
Un programme qu'aime un administrateur est un programme ou "tout" est paramétrable. Sur un réseau local, sous Windows, chaque utilisateur a ce qu'on appelle "un profil itinérant", un profil enregistré sur un serveur qui est mis à jour à chaque fermeture de session de l'utilisateur et chargé à chaque nouvelle ouverture de session. Pour peu que vous ayez quatre ou cinq applications installées sur vos machines, ce profil devient très rapidement "très lourd".
Quand vous le pouvez, donc, permettez à l'utilisateur de choisir les dossiers où doivent être enregistrés les fichiers nécessaires à l'application... Mieux, permettez, à travers la base de registre, HKEY_USERS\DEFAULT, qu'un administrateur qui installe une application puisse y mémoriser les chemins des dossiers à utiliser par défaut, modifiables ensuite par l'opérateur.
Tout cela parce qu'il nous arrive au sein de l'Education Nationale où nous avons plusieurs dizaine d'utilisateurs censés se connecter sur une même machine, de ne pas pouvoir utiliser certaines applications ne nous permettant pas cette souplesse de gestion de leur utilisation.
Cordialement et pardon si je vous aie ennuyés, bon courage à tous, Patrice

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Calendrier a selection multiple [ par magicvinni ] Bonjour, je cherche un composant de calendrier où je pourrais definir la couleur de chaque jour par exemple mettre en rouge tous les jours fériés ( ou Toujours le calendrier [ par magicvinni ] Bonjour, Je ne comprend pas très bien comment marche l'instruction BoldDays. Je voudrais par exemple mettre en gras les jours 1 et 8 quand on clique créer composant calendrier en delphi [ par spreux ] Je souhaiterai créer un composant calendrier en delphi, celui déjà créé ne me convient pas, car j'aimerais ajouter la possibilité de voir les heures e créer composant calendrier en delphi [ par spreux ] Je souhaiterai créer un composant calendrier en delphi, celui déjà créé ne me convient pas, car j'aimerais ajouter la possibilité de voir les heures e Appliquer Wallpaper : Page HTML ? [ par dami27 ] Bonjour à tous !Comme je vous ai déja dit sur d'autres messages, je suis débutant, donc excusez moi si je pause des questions... Bizard ! ;)Savez vous un calendrier bien spécial [ par zenyth ] Salut à tous ! Bon voila le probleme : J'ai a faire une sorte de calendrier contenant un jour par colonne et une salle par problème avec le contrôle calendrier "date time picker" [ par informatixo ] Toujours dans mon logiciel de gestion des stocks ! (lol). A un moment j'ai une feuille de saisie pour entrer des éléments en stock ou en sor un calendrier dans une image de bureau [ par rayguy ] Comment incruster un calendrier dans une image de bureau? utilisation d'un calendrier sous DELPHI 7 [ par xpmich ] Bonjour,je cherche à grisonner des jours choisis dans le calendrier de delphy (mois/jour). Comment faire ? Merci d'avane Calendrier delphi coloriage des cases [ par yvessimon ] BonjourDans les composants Calendar1 et    MonthCalendar1 est -il possible de colorier des case (cellule ) spécifique , ou de


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,764 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales