tableau de voyants clignotants clignotant, voyants, leds, timer, souris, source n°40775
tableau de voyants clignotants clignotant, voyants, leds, timer, souris, source n°40775
csvb, vb.netasp.net,aspc, c++coldfusionphpjavascriptdelphiflashjavagraphismeircassembleurc#mobilitésqlfoxpropythonwindevsnippetsit pros
codes (2916)
listes de codes
toutes les sources
les plus récents
les mis à jour
les plus populaires
les plus populaires du mois
tout le niveau 1 (débutant)
tout le niveau 2 (initié)
tout le niveau 3 (expert)
toutes les sources avec un fichierzip
les sources(1147)
les mieux notés
categories des codes
api base de donnees base de registre composants compression & split control date & heure direct x divers exécution fichier / disque formulaire graphique imprimante jeux kylix maths multimedia opengl périphériques réseau & internet sécurité souris, clavier, etc. système texte trucs & astuces turbo pascal tutoriaux
trouver des codes
trouver un code par mot clé (nouveau)
top des codes
les trophées
top des favoris des membres
top par catégorie
auteurs de codes
les auteurs de sources
le top des membres
ajouter une source
tutoriaux (33)
forums (58765)
vidéos
livres (22296)
outils & liens
emploi (cv et offres)
services
téléchargement
chat
autres sites
divers
partenaires
section étudiants
section pro
connexion
begin process at 2007 10 22 19:02:48
derniers blogs
sql server 2005 : astu...
a quoi sert list<t>.fo...
[article] comprendre l...
[vs 2008] profiling: t...
emploi : enquête intér...
la suite...
mini sondage
la suite bureautique que vous utilisez
microsoft office xpmicrosoft office 2000microsoft office 2003microsoft office 2007openofficeautre
voter
.
derniers logiciels
camstudio (2.5 beta 1)wamp5 (1.7.3)gnoztik (0.98 beta)deepburner free (1.8.0...faststone capture 5.3 ...
la suite...
mes rss
vonage poursuivi par ...la directrice marketi...phonenumber@email.com...mm/dd/yyyy...parsing aspx and othe...
la suite...personnaliser
stats
989 299 membres
587 nouveaux aujourd'hui
12 992 membres club
divers
mettre ce site au démarrage
ajouter ce site à vos favoris
codes-sources dans votre msn !
priceminister
acheter-vendre :
livre, matériel informatique, logiciel, imprimante, antivirus, firewall, disque dur, onduleur, écran, clavier, carte mémoire, pc portable, ordinateur
mes favoris
plein ecran
connexion
trouver une ressource
trouvez une ressource parmi 36 770 codes, 1 001 233 messages d'aide etc...
recherche:
dans
tout le site
codes
tutoriaux
forum
blogs
livres
rfc
icones
news .net
boutique
[ dernières recherches ]
filtre:
tous les codes.net uniquementexclure .net
tableau de voyants clignotants
information sur la source
télécharger le zip
voir la capture
ajouter à mes favoris
catégorie :graphique
classé sous :
clignotant, voyants, leds, timer, souris
niveau : débutant
date de création : 18/12/2006 23:51:08
date de mise à jour : 31/12/2006 17:53:09
vu / téléchargé: 3 275 / 280
auteur : jean_jean
ecrire un message privé
note :aucune note
commentaire sur cette source (12)
ajouter un commentaire et/ou une note
description
c'est en travaillant sur un projet que je me suis heurté à une gestion de voyants (voir la capture!) que je voulais clignotants et d'une part à un besoin de faire une petite révision d'instructions delphi. des et d'autre part. je pense que mes recherches pourront servir à d'autres débutants. les thèmes et intérêts de programmation sont divers : pour la 1ère version :- image des voyants chargés par appel direct du fichier bitmap: timage(findcomponent('image' + inttostr(i))).picture.loadfromfile(ficvoy); ou par référence à un index du composant imagelist imagelist1.getbitmap(1,timage(components[i]).picture.bitmap)- sélection visuelle d'option (en cliquant sur un voyant). paramétrage de la colonne et de la ligne d'une matrice de voyants colonne = process concerné / ligne = niveau du paramètre du process- clignotement (par deux timers) du voyant concerné par l'option choisie- identifications dynamiques divers de voyants : if assigned(findcomponent('image' + inttostr(i))) then timage(findcomponent('image' + inttostr(i))).picture.loadfromfile(ficvoy) ou if components[i] is timage then if ( components[i].name = 'image4') then...pour la 2ème version, on ajoutera :- création dynamique des leds- centralisation des clics de sélection des leds- personnalisation du tableau des leds : nombre de proces, de leds par process, espacements...voilà, je suis toujours à l'écoute de vos remarques...jean_jean
conclusion
le source est commenté en détail.le code est encore améliorable. notamment, celui d'écrire un objet tableau de voyants ou un composant comme l'a suggéré florenth :-)l'utilisation va de soi et peut s'adapter très facilement...c'était mon cadeau de fin d'année...
fichier zip
pour les "membres club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
fblinker2.dfm19 637 octets
fblinker2.pas16 286 octets
fmain.dfm28 419 octets
fmain.pas3 064 octets
fvieuxmain.dfm466 417 octets
fvieuxmain.pas16 320 octets
grpvoyants.dpr285 octets
ledoff.bmp246 octets
ledrouge.bmp246 octets
niveaux2.bmp45 878 octets
télécharger le zip
historique
31 décembre 2006 17:53:09 :
18/12/2006 : 1ère version non optimisée
plusieurs timers, images statiques, 1 méthode par voyant...
bien que le code n'est pas de haut niveau, je l'ai laissé. il permet aux débutants de voir les différents niveaux de programmation.
le code fourni n'était alors que prétexte à faire une petite révision de l'utilisation de quelques instructions.
31/12/2006 : 2ème version optimisée suivant les commentaires du 1er source
paramètres modifiables du tableau de leds
création dynamique des leds : 1 fréquence possible par led
1 seule méthode pour la sélection d'une led quelconque
merci à ceux qui ont participé
sources de la même categorie
afficher, telecharger des images se trouvant sur internet dans votre appli delphi grace a indy
sauvegarder un bitmap en jpeg avec donnÉes exif et vignette
wallpapercam
visionneuse btools
form trÉs personnel (design)
toutes les sources de la catégorie graphique
sources en rapport avec celle ci
chronometre / compte a rebours *10
tic tac shut down - outil servant À Éteindre votre pc en un temps donnÉ (sleep timer)
ni clic ni touche
dÉcompteur de temps pour match de boxe (ou autre)
calcul du coÛt d'une communication tÉlÉphonique
commentaires
commentaire de florenth le 19/12/2006 09:35:15
pas mal du tout ! par contre, j'aurais eu une approche complètement différente. je pense que ça vaut le coup que le la décrive.explication:créer un composant "tledclignotante" avec comme propriétés:- une référence vers un timagelist- deux index pour les images allumées et éteintes (relative au imagelist)- une propriété "clignote: boolean" (pour savoir si la led doit clignoter)- une propriété "allumé: boolean" (indique l'état de la led)- une référence vers un "tledmanager". (voir plus bas)donc, pour chaque led, il y aurait un composant. la gestion des états "allumé/éteint/clignotant" se ferait par des gestionnaires onclick (un seul pour chaque processus, on teste le sender pour savoir le nouvel état)deuxième composant "tledmanager" (non-visuel) se composerait tout simplement:- d'un timer déclanchant les clignotements (intervalle réglable depuis l'extérieur bien sûr)- d'une liste (non propriétaire) de tledclignotante.a chaque intervalle du timer, il changerait l'état des leds si leur propriété "clignote" est à true. comme ça, le clignotement est synchronisé (parmi toutes les leds qui lui sont reliées), et il est possible d'arrèter tous les clignotements en une seule ligne.l'idée étant de séparer complètement l'aspect visuel (clignotements) et l'action de l'utilisateur (click pour changer les priorités des processus). on pourrait même envisager un composant, "tledradiobox" qui regroupperait une liste de leds sous forme d'un dérivé de tstrings, qui les positionnerait à l'intérieur de lui même, qui s'assurerait qu'une seule led doit cochée (il serait aussi possible de rajouter une propriété pour en allumer plusieurs) et qui gérerait le clignotement (grâce, bien sûr, au tledmanager).je ne sais pas ce que tu en penses, fais le moi savoir stp. c'est sûr que ça fait plus de code, mais je pense que l'aspect réutilisable que prendrait ce genre de projet rentabiliserait largement le temps passé à le coder. en plus, non seulement ce serait utile, mais aussi joli et pratique. *vous ne vous imaginez pas tout ce que citroën (euh... un composant) peut faire pour vous !* ^^a+florent
commentaire de f0xi le 19/12/2006 09:39:21 administrateur cs
pfiuuu que de code pour ça ...tu pourrais optimiser tout cela avec des tableaux, des inverseurs booléens ect... ect...exemple avec des paintbox :type tform1 = class(tform) timer1: ttimer; paintbox1: tpaintbox; paintbox2: tpaintbox; paintbox3: tpaintbox; paintbox4: tpaintbox; paintbox5: tpaintbox; paintbox6: tpaintbox; paintbox7: tpaintbox; paintbox8: tpaintbox; paintbox9: tpaintbox; paintbox10: tpaintbox; paintbox11: tpaintbox; paintbox12: tpaintbox; paintbox13: tpaintbox; paintbox14: tpaintbox; paintbox15: tpaintbox; paintbox16: tpaintbox; paintbox17: tpaintbox; paintbox18: tpaintbox; paintbox19: tpaintbox; paintbox20: tpaintbox; procedure timer1timer(sender: tobject); procedure formcreate(sender: tobject); private { déclarations privées } procedure doimageclick(sender : tobject); public { déclarations publiques } end;var form1: tform1;implementation{$r *.dfm}type tblinker = record image : tpaintbox; state : boolean; enabled : boolean; frequency : integer; tick : integer; end;var blinkcolors : array[boolean] of integer = (clgreen, cllime); blinkers : array of tblinker;procedure tform1.formcreate(sender: tobject);var n : integer;begin randomize; setlength(blinkers, 20); for n := 0 to high(blinkers) do with blinkers[n] do begin state := false; enabled := true; frequency := (n+1) shl 1; tick := 0; image := tpaintbox(findcomponent('paintbox'+inttostr(n+1))); image.tag := n; image.onclick := doimageclick; image.hint := 'f = '+inttostr(frequency*timer1.interval)+' ms'; end; timer1.interval := 10;end;procedure tform1.doimageclick(sender : tobject);begin with blinkers[(sender as tpaintbox).tag] do begin enabled := not enabled; state := false; tick := 0; image.canvas.brush.color := blinkcolors[state]; image.canvas.fillrect(image.clientrect); end;end;procedure tform1.timer1timer(sender: tobject);var n : integer;begin for n := 0 to high(blinkers) do with blinkers[n] do if enabled then begin inc(tick); if tick >= frequency then begin state := not state; image.canvas.brush.color := blinkcolors[state]; image.canvas.fillrect(image.clientrect); tick := 0; end; end;end;end.
commentaire de florenth le 19/12/2006 10:31:07
euh f0xi, quitte à revoir le code, autant tout revoir ... et faire de beaux composants réutilisables, non ?sinon, c'est vrai que j'ai oublié de préciser que le code est un peu fouillis.[mode-hs on]mais c'est bien que les codes ne soient pas parfaits ! ça laisse des choses à dire et à améliorer !qu'est ce qu'on s'embetterait si tous les codesdu site étaient de la pure merveille, prêt-à-l-emploi ou encore z-avez-qu-a-le-déposer-sur-la-fiche ...bon ok, je sors ... ^^[mode-hs off]
commentaire de francky23012301 le 19/12/2006 12:54:42
@f0xi : quitte à utiliser 20 tpainbox autant les créer dynamiquement (idem pour le timer) non ?
commentaire de jean_jean le 19/12/2006 13:14:12
vive la jeunesse! j’aimerai avoir 20 ans de moins et avoir plus de temps. changer d’activité et reprendre une spécialisation de 3ème cycle à 50 balais!…pas évident, mais j’ai l’enthousiasme d’un jeune de 20 ans dans tout ce que je fais. alors merci à tous!je me doutai bien que mon code ferait bondir les pros ! j’ai un tas de code en attente, mais si je ne publie pas, je ne vais pas progresser. par exemple, j’étais gêné d’utiliser 2 timers pour 1 clignotant, mais mon souci 1er était ailleurs!délibérément, je n’ai pas voulu me lancer dans la conception d’un composant car je n’arrive pas à les installer. de plus, avec la migration de d5 à d7, j’ai perdu tout le travail que j’avais fait en composants !…. borland ne m’a pas renvoyé mon code d’utilisateur de delphi 7 (je leur ai envoyé pourtant le n° de série). donc, j’attends de normaliser et clarifier mon installation de delphi, avant de gérer à nouveau : composants et bases de données.florenth, ok. je vais peut-être créé un objet clignotant plutot qu’un composant ? ça reviendra au même, non ?foxi, ok. je vais tester ta solution. y a t-il une raison pour que tu choisisses paintbox au lieu de image ? francky, ok!bien à vous !
commentaire de florenth le 19/12/2006 17:47:36
@jean_jean:si tu as des problèmes en ce qui concerne l'installation de compos, envoye moi un mp ou poste sur le forum. ce serait bête de s'en passer alors que ce serait grandement utile, surtout si c'est juste à cause de problèmes futiles (la plupart du temps, c'est bidon à resoudre, mais pas évident à trouver).as-tu bien pensé à ajouter le dossier qui contient ton unité de composant dans la liste des bibliothèques de delphi (outils > otions d'environnement > bibliothèque > chemins de bibliothèque > bouton [...] > liste des chemins) ? as-tu bien pensé à créer une procedure "register" ? a y mettre le bon nom de classe, la bonne palette où tu veux qu'il apparaisse ?si tu crée des icônes dans un *.dcr, as-tu bien pensé à le lier correctement ?sinon, il y a toujours des bons tutos à ce sujet : http://www.delphifr.com/tutoriaux/_195.aspx pour la création et http://www.delphifr.com/tutoriaux/_86.aspx pour leur installation.++
commentaire de jean_jean le 19/12/2006 18:08:54
merci florenth :)j'ai d'autres priorités! il faut que je clarifie chez borland. en fermant mon entreprise, je suis passé de 4 à 1 ordinateur. ça pas été sans problème!je remettrai tout nickel un peu plus tard!mais ça fait plaisir de voir que je fais un peu parti de la communauté des delphim'ans et qu'elle vit bien au travers de ce site. j'ai plein de choses à donner, mais faut pas pousser mémé, sinon, je panique!!! je connais la procédure pour créer 1 compo... on verra plus tard! je travaille sur un compte utilisateur. c'est peut-être ça le bug car j'ai installé d7 sur le compte admi.pour l'appli, je vais essayer de créer un objet led et tenir compte de vos remarques. après réflexion, ça pourrait être intéressant. je posterai une nouvelle version, quand je sentirai que je suis bloqué pour optimiser plus!a +
commentaire de japee le 19/12/2006 22:41:10 administrateur cs
salut jean_jean,ben c'est plutôt sympa, pour un premier envoi.il est certain qu'il y a moyen d'optimiser, et je vais y aller moi aussi de ma petite suggestion.tiens, comme ça, par exemple, pourquoi ne pas l'écrire ainsi :procedure tform1.eteint_voyants(anumthrd : byte); var i : byte;begin ficvoy := rep+'ledoff.bmp'; for i := ((anumthrd - 1) * 7) + 1 to anumthrd * 7 do if assigned(findcomponent('image' + inttostr(i))) then timage(findcomponent('image' + inttostr(i))).picture.loadfromfile(ficvoy);end;on gagne quelques lignes de code, et c'est plus rigolo.car la programmation, faut que ça reste rigolo, telle est ma devise.florenth a dit :"qu'est ce qu'on s'embetterait si tous les codes du site étaient de la pure merveille, prêt-à-l-emploi ou encore z-avez-qu-a-le-déposer-sur-la-fiche ..."je suis entièrement d'accord avec lui.et, oserai-je ajouter, on s'emmerderait grave...bonne continuation à tous.japee
commentaire de jean_jean le 19/12/2006 23:57:14
ha oui, merci japee!bonne idée. je corrige tout de suite.j'étais justement en train d'adapter ton code sur la création dynamique à l'appli:)@+
commentaire de f0xi le 20/12/2006 00:27:59 administrateur cs
salut les zoulous!@francky :mon but premier n'etait pas de dynamisé les compos de la fiche mais de montrer ce qu'on pouvait faire avec 3 procedure et un seul timer (toute les paintbox clignote a leurs propre frequence).@jeanjean :pour les compos, y'a que l'embaras du choix, soit on part d'une classe tgraphiccontrol, soit d'un radiobutton ou encore un tradiogroup etc....comme je disais a je sais plus qui y'a pas longtemps, quand on commence a avoir des tonnes de lignes de codes redondante ... il faut se demander si il n'y a pas un chemin plus cours.pour ce qui est des pertes de compos, y'a une astuce simple, tu crée un dossier "delphi" sur une partition ou disque different du c:.avec comme sous repertoire : delphi\lib et delphi\projectsce qui permet, en cas de reinstallation de delphi ou du systeme ou de formatage du disque c: de ne rien perdre.on peu d'ailleur faire pareil avec le dossier "mes documents", on peu le placer ailleur que sur c: (click droit sur "mes documents" > propriétés > onglet cible > deplacer)
commentaire de jean_jean le 20/12/2006 08:44:18
oui, merci franckyok pour tout.1. pour la gestion de mes sources,j'ai perdu des mois de boulot sur certains codes suite à un pb de hard! je suis en train d'installer un disque de sauvegarde externe. 2. j'ai testé ton code,c'est ok. je suis en train de l'adapter. je pense que je vais procéder en plusieurs étapes. la création d'un composant suggérée par florenth est une bonne idée que j'exploiterai plus tard. voilà pour l'heure les types que j'ai créés pour l'instant : {fiche----------------------------------} tformblinker = class(tform) timer1: ttimer; imagelist1: timagelist; procedure formcreate(sender: tobject); procedure timer1timer(sender: tobject); procedure formdestroy(sender: tobject); private { déclarations privées } procedure doimageclick(sender : tobject); procedure libere_les_leds; public { déclarations publiques } end; {voyant ----------------------------------} tblinker = record image : timage; state : boolean; enabled : boolean; frequency : integer; tick : integer; end; {classe led -----------------------------} tledblink = class(timage) // classe héritant de tpaintbox public constructor create(aled : tcomponent); override; procedure aledclick(sender : tobject); end;const nledprocess = 7; nprocess = 4;var formblinker : tformblinker; blinkcolors : array[boolean] of integer = (clgreen, cllime); blinkers : array of tblinker; nbreleds : integer; // compte les voyants créés aledblink : tledblink;3. j'ai préféré un timage pour image, car je n'arrive pas à affecter une image bmp existente de manière dynamique à un paintbox. 4. d'ailleurs ça bug toujours dans la procédure timer1timer. les images ne clignotent pas et s'effacent. je vais m'y pencher un peu aujourd'hui. if tick >= frequency then begin state := not state; if state then begin imagelist1.getbitmap(0,timage(findcomponent('image'+inttostr(n+1))).picture.bitmap); timage(findcomponent('image'+inttostr(n+1))).refresh; end else begin imagelist1.getbitmap(1,timage(findcomponent('image'+inttostr(n+1))).picture.bitmap); timage(findcomponent('image'+inttostr(n+1))).refresh; end;...
commentaire de jean_jean le 20/12/2006 09:01:21
autant pour moi!la procédur timer1timer fonctionne, j'avais résolu le pb!:)
ajouter un commentaire
authentification
nom d'utilisateur : mot de passe : se souvenir du profil
connexion en cours ...';}webform_dopostbackwithoptions(new webform_postbackoptions("ctl00$cph1$pnl1$uccode1$ctl02$pnlcomments$lvaddcomment$ctl00$btnconnect", "", true, "ctl00_cph1_pnl1_uccode1_ctl02_pnlcomments_lvaddcomment_ctl00_v", "", false, true))" class="button btn">connexion
mot de passe oublié ? / activation de comptecréer un compte
pub
snippets en rapport
positionner le curse...
masquer le curseur d...
côté it
configurer firefox et ...optimiser firefoxconnexion à un réseau ...redimensionner une par...automatiser vos backup...faire des backups avec...installer microsoft of...
tous les articles it
codyx le site 100% snippets !
[nouveau]codyx, le site des snippets
boutique
shopping
logitech g5 (910-000094)de 53€ à 60€
logitech cordless desktop® s 530 (9676640101)de 67€ à 101€
hachette multimédia astro loisir version complètede 24€ à 24€
nos partenaires et amis ;-)
dev réalisé par nicolas sorel (nix)
avec l'aide de : cyril durand, bidou, nurgle
base de données maintenue par christian, design réalisé par guillaume, mascotte réalisée par n.sorel (nix) & kdo-comception
delphifr.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éshébergement de serveur dédié - téléphonie voip - comparer les prix - envoyer des ecards gratuit - icones
temps d'éxécution de la page : 0,7813-3sec
mesure d'audience roi statistique webanalytics par
tableau de voyants clignotants clignotant, voyants, leds, timer, souris, source n°40775
Précédent 388 Précédent 387 Précédent 386 Précédent 385 Précédent 384 Précédent 383 Précédent 382 Précédent 381 Précédent 380 Précédent 379 Précédent 378 Précédent 377 Précédent 376 Précédent 375 Précédent 374 Précédent 373 Précédent 372 Précédent 371 Précédent 370 Précédent 369 Précédent 368 Précédent 367 Précédent 366 Précédent 365 Précédent 364 Précédent 363 Précédent 362 Précédent 361 Précédent 360 Précédent 359 Suivant 390 Suivant 391 Suivant 392 Suivant 393 Suivant 394 Suivant 395 Suivant 396 Suivant 397 Suivant 398 Suivant 399 Suivant 400 Suivant 401 Suivant 402 Suivant 403 Suivant 404 Suivant 405 Suivant 406 Suivant 407 Suivant 408 Suivant 409 Suivant 410 Suivant 411 Suivant 412 Suivant 413 Suivant 414 Suivant 415 Suivant 416 Suivant 417 Suivant 418 Suivant 419