Composant tswitchled (une led)

Soyez le premier à donner votre avis sur cette source.

Vue 8 672 fois - Téléchargée 890 fois

Description

Bonjour, voici une LED (encore une oui je sais ...).
Mais elle s'adresse principalements à OffLake (qui avait inclus dans ses projets une gigantesque bibliothèque JEDI, en n'utilisant qu'un ou deux composants (dont une LED)).
Alors voilà, j'espère qu'elle lui sera utile (et à vous aussi !).
J'ai essayé de faire simple, tout en essayant d'aborder un maximum de points sur la création des composants.

Voici les possibilités du composant :

- 9 couleurs (Aqua, Rose, Violet, Rouge, Jaune, Vert, Bleu, Orange, Noir).
- 3 positions possibles (On, Off, Disabled).
- 1 couleur pour chaque position (pour éviter d'avoir à changer à chaque fois).
- permet à l'utilisateur du composant de récupérer les bitmaps des LEDs dans des objets TBitmap, si il en a besoin (voir GetBitmap)
- moteur d'aide integré (basique, certes, mais bon ...)

Ce source aborde plusieurs points de la création des composants :

- création d'une propriété, et de ses champs objet
- définir une méthode d'accès de propriété (voir SetLedColor ...) avec des index d'accès
- surcharger des méthodes ancêtres tout en appellant cette méthode avant son code ajouté
- utilisation d'une classe TGraphicControl
- récupérer des propriétés et méthodes (comme les évenements) depuis une classe ancêtre
- initialisation de propriétés à la création du composant (sujet de nombreuses questions)

En prime, un exemple de création dynamique de composant (dans l'exemple).

Bien sûr les LEDs ne sont pas des simples ronds entourés de noir ... ce sont des images correctes (inspirées de celles des LEDs JEDI), avec néanmoins 9 couleurs ^^

Il y a evidemment pas mal de choses à améliorer dans cette LED (comme la possibilité d'obtenir une LED plus grande) mais j'ai voulu faire simple, comme dit précédemment.
Je pense que cette source aborde suffisamment de sous-domaines pour avoir sa place dans un site comme celui-ci :)

Si quelqu'un a une idée pour masquer Width et Height dans l'éditeur de composants sans avoir à réécrire une classe ancêtre ...

J'ai fourni un exemple, avec création dynamique, et une capture d'écran de ce même exemple.

Et en prime, je vous offre le fichier INC de DelphiProg, pour détecter facilement les versions de Delphi !
J'utilise ce fichier pour reconnaitre si la version de Delphi est supérieure ou égale à D5, dans quel cas on peut utiliser Constraints, sinon, on ne le compile pas !

Un truc marrant avec ces LEDs consiste à faire un feu rouge avec un timer ou un thread pour passer le temps ^^ si vous ne savez pas quoi en faire. J'ai mis un feu rouge dans l'exemple avec un timer :)

Source / Exemple :


// In the Zip

Conclusion :


Voilà, tous critiques, commentaires, bugs, remarques, conseils, etc ...

Codé sous Delphi 6.

Cordialement, Bacterius !

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Oui je vois ça ... un defi ^^
C'est toujours interessant de trouver des solutions alternatives.
Mais n'etait-ce pas toi qui m'avais fait remarquer que 81 bitmaps (pour le calcul mental) en fichiers ça faisait usine à gaz ?
Je trouve que 1 image et 1 shape ça fait un peu crade comme code ^^
Mais sinon, je ne savais pas que les Shapes pouvaient se fusionner avec en dessous !
C'est cool ça ^^ je vais pouvoir m'amuser ^^

Cordialement, Bacterius !
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Bon sinon j'ai ajouté ... enfin voir description et mise à jour.

Cordialement, Bacterius !
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
...
J'ai fait pareil de mon côté :

100 Images + 100 Shape = 4432 Ko // Mais j'ai pas fait la procédure ni ajouté les bitmaps

100 LEDs = 3762 Ko

Hmm ...

Cordialement, Bacterius !
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
13
Je viens de poser 100 fois ton composant sur une fiche, je regarde la place en mémoire occupée : 3400k
J'ai ensuite fait 100 shape et 100 timage avec une image transparente dedans et une procedure pour les couleurs : 3200k
Qui est lourd ? ^^
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Ah oui juste un truc :
si je ne me trompe pas, le composant est juste une instance du code que j'ai écrit pour la LED ?
C'est à dire que les tableaux constante ne seront pas recréés sur chaque composant, mais appelés par chaque instance ?
Donc sur 40 LEDs sur une form, seul 1 tableau de constante sera déclaré pour tous ?
Je crois que c'est ça mais je ne suis pas sur ...

Cordialement, Bacterius !
Afficher les 37 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.