jeromefer
Messages postés11Date d'inscriptiondimanche 14 janvier 2007StatutMembreDernière intervention22 septembre 2008 13 déc. 2008 à 08:33
Bonjour a tous et merci pour cette source tres interressante.
Du travail propre.
Jerome
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 2 janv. 2005 à 14:46
Code mis a jour :) merci za toi
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 2 janv. 2005 à 00:53
Pense à activer les messages du compilateur (Projet/Options/Messages du compilateur) et tu verras deux messages qui ont leur importance en ce qui concerne le constructeur et le destructeur du composant.
De plus, quelque chose me chagrine dans le code de la procedure ActTimer:
if fUseInvertedFont and assigned(fLabelRgb) then
fLabelRgb.Font.Color := fColorInverted
else
fLabelRgb.Font.Color := fFontColor;
Si fUseInvertedFont est vrai mais que fLabelRgb n'est pas affecté, alors c'est la deuxième branche de la condition qui est exécutée. Or, si fLabelRgb vaut Nil, alors on a droit à un beau plantage !
La même remarque vaut pour le code qui suit juste après :
if fUseInvertedFont and assigned(fLabelHexa) then
fLabelHexa.Font.Color := fColorInverted
else
fLabelRgb.Font.Color := fFontColor;
Il faudrait revoir les enchainements des conditions pour ne pas affecter des valeurs à des objets qui n'existent pas.
A noter aussi que tu peux remplacer, pour alléger le code et le rendre plus lisible :
fHExaString := format('#%s%s%s', [IntToHex(GetRValue(fColor), 2),
IntToHex(GetGValue(fColor), 2), IntToHex(GetBValue(fColor), 2)]);
par :
FHexaString := Format('#%.2x%.2x%.2x', [FRValue, FGValue, FBValue]);
dans la procédure ActTimer.
Je t'envoie le code de ce super composant remanié par mail.
13 déc. 2008 à 08:33
Du travail propre.
Jerome
2 janv. 2005 à 14:46
2 janv. 2005 à 00:53
De plus, quelque chose me chagrine dans le code de la procedure ActTimer:
if fUseInvertedFont and assigned(fLabelRgb) then
fLabelRgb.Font.Color := fColorInverted
else
fLabelRgb.Font.Color := fFontColor;
Si fUseInvertedFont est vrai mais que fLabelRgb n'est pas affecté, alors c'est la deuxième branche de la condition qui est exécutée. Or, si fLabelRgb vaut Nil, alors on a droit à un beau plantage !
La même remarque vaut pour le code qui suit juste après :
if fUseInvertedFont and assigned(fLabelHexa) then
fLabelHexa.Font.Color := fColorInverted
else
fLabelRgb.Font.Color := fFontColor;
Il faudrait revoir les enchainements des conditions pour ne pas affecter des valeurs à des objets qui n'existent pas.
A noter aussi que tu peux remplacer, pour alléger le code et le rendre plus lisible :
fHExaString := format('#%s%s%s', [IntToHex(GetRValue(fColor), 2),
IntToHex(GetGValue(fColor), 2), IntToHex(GetBValue(fColor), 2)]);
par :
FHexaString := Format('#%.2x%.2x%.2x', [FRValue, FGValue, FBValue]);
dans la procédure ActTimer.
Je t'envoie le code de ce super composant remanié par mail.