cs_iladis
Messages postés5Date d'inscriptiondimanche 25 janvier 2004StatutMembreDernière intervention21 septembre 2011 20 oct. 2011 à 14:59
Merci Mauricio, ça marche!
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 20 oct. 2011 à 14:30
Salut Iladis,
tu peux résoudre ce problème en procédant de la sorte:
procedure TFrmCyResizer.cyResizer1DblClick(Sender: TObject);
begin
ShowMessage('Make double click!');
// Release mouse handling that WILL BE activated by MouseDown after DblClick (Mouse up catched by ShowMessage dialog box) :
PostMessage(cyResizer1.Handle, WM_LBUTTONUP, 0, 0);
end;
A+
cs_iladis
Messages postés5Date d'inscriptiondimanche 25 janvier 2004StatutMembreDernière intervention21 septembre 2011 20 oct. 2011 à 11:44
Bonjour Mauricio, j'espère que tu vas bien.
J'ai une remarque concernant le composant TcyResize :
Si j''affiche une fenêtre (ex :formMain.show) ou un message (ex :showmessage ou messagedlg) dans l’événement OnDblClick, après la fermeture de la fenêtre ou du message, le composant sélectionné (avec le double click) se met en mode déplacement.
Une solution pour éviter le déplacement après le double click ?
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 9 mai 2011 à 16:42
Erratum: il fallait lire "après la détection de différents bugs sur le compos TcySkinArea par DELTAFX, je vous poste la correction."
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 20092 9 mai 2011 à 16:21
"Bonjour à tous,
après la détection de différents bugs sur le compos TcySkinButton par DELTAFX, je vous poste la correction...."
TcySkinArea... mdr
Je vais tester :)
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 3 mai 2011 à 12:54
Bonjour à tous,
après la détection de différents bugs sur le compos TcySkinButton par DELTAFX, je vous poste la correction.
@DELTAFX: voilà, je te laisse tester (après plusieurs tests, ça marche très bien en dynamique) et me dire si tout est ok maintenant.
A+
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 3 mai 2011 à 10:11
Salut,
j' ai utilisé le 32 bits pour son optimisation question rapidité.
Pour ce qui est des problèmes avec les jpegs, il va falloir que je teste mieux ce compo.
A+
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 20092 2 mai 2011 à 23:59
Hi,
Une petite remarque, en fait. TcySkinArea est en 32bit. Si un bmp en 32bit est plus interressant pour optimiser la vitesse de traitement, les 8bits de différence avec le pf24bit ne codent que pour un alpha channel,un format ARGB où A est un niveau de transparence. Ca ne code pas un format RGB sur 32bit du genre (R:11bit, G:11bit, b:10bit).
De plus, niveau compatibilité avec le format jpg, le pf32bit est à manier avec des pincettes.
Dans le cas de skinarea, je ne suis pas sur que cela soit tres interressant:
1- je pense que c'est la cause du décalage quand je charge qqch dans "Picture"
2- et pour ce composant, j'avoue ne pas voir d'interet a gere en plus l'alpha channel, pour l'instant. Si tu envisage de gerer des effets de transparence entre picturenormal, down, downmouseover, etc, là cela sera nécessaire.
Tchô :)
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 20092 30 avril 2011 à 01:23
Avec la methode que tu m'as donné, effectivement, ca marche, je n'ai plus le fond blanc autour de mes boutons. Mais vu que j'ai testé ce que je voulais faire avant et que ca marche pas (le cadre blanc là et/ou le décalge des 24/32bit) avec ma méthode, ben je coince.
Mais c'est pô grave en soit, j'ai retrouvé dans une archive ton Pack de Composant version 2005, donc dans le pire des cas, je fais un rollback.
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 30 avril 2011 à 00:51
En résumé: ton code semble correct ^^
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 30 avril 2011 à 00:50
Désolé mais c' est un compo que je n' actualise plus depuis longtemps et je ne connais pas en detail son fonctionnement...
Au départ, j' ai changé son nom puis j' y ai ajouté certains états et la gestion du 32 bits.
Normalement, les 2 versions sont quasi similaires.
"Vu l'explication que tu me donnes pour le petit prog mailé, je suis obligé de
1-Charger le mask dans Area, et le laisser parser
2-supprimer les items "areas" ne correspondant pas aux boutons que je veux
3-redéfinir les propriétés color des items "areas" dans le bon ordre."
Non, je pensais que le compo initial était TcyPictureArea et il pouvait y avoir un problème de compatibilité.
"Tu me dis que PictureArea parsait aussi les couleurs présentes sur le bmp Area, mais je n'ai jamais constaté ce comportement"
Car il ne le fait que si Areas n' a aucun item dans sa liste: il initialise la liste automatiquement, sinon, il ne parse pas le bmp.
As tu testé la méthode que je t' ai donnée pour voir ce que ça donne?
Je pense qu' il doit y avoir un bug: envoi moi une démo avec les attributions en dynamique pour que je puisse tester sous D2009 et D7 ...
A+
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 30 avril 2011 à 00:37
"Le bout de code que je t'ai mailé a été codé directement avec skinArea"
Donc, il doit y avoir un problème sous Delphi 7 car ça marche bien sous Delphi 2009 ...
"Tu me dis que PictureArea parsait aussi les couleurs présentes sur le bmp Area, mais je n'ai jamais constaté ce comportement"
Le compo cySkinArea a le même modus operandum que tcyPictureArea.
Mail moi STP une démo avec utilisation dynamique pour que puisse tester ça sous Delphi 2009 puis Delphi 7.
A+
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 20092 29 avril 2011 à 23:04
Le bout de code que je t'ai mailé a été codé directement avec skinArea, sur une instalation de Delphi 7 "neuve". Y a jamais eu de PictureArea sur cette machine. Dela le fait que je sois tres dubitatif.
Tu me dis que PictureArea parsait aussi les couleurs présentes sur le bmp Area, mais je n'ai jamais constaté ce comportement. De plus, j'utilisais l'Unit PositionByColor (le source est sur ce forum) avec Area, et jamais je n'ai eu de probleme. Dans mon cas, Area Bmp contenait et des zones colorés pour définir les boutons de PictureArea, et des rectangles d'autre couleurs pour PositionBycolor. Voila ce que je faisais dans le OnCreate de la forms d'un lecteur mp3:
...
BuildAreaColorList('.\MP3_MASK.bmp'); // parser les couleurs présentes sur le masque (Area)
PictureAreaMP3.Tag:=RGB(0,0,0); // le rectangle où placer le pictureArea dans la form est noir
PlaceCtrl(PictureAreaMP3); // on definit top,left,width, height du picture area.
cyGauge.Tag:=RGB(255,0,128); // idem pour la gauge
PlaceCtrl(cyGauge);
Je créais les items 0à15 dans l'IDE, je ne chargeais aucune image depuis l'IDE et PictureArea ne cherchait pas d'autres item "areas" que les 16 ci-dessus. De ce fait il ignorait completement les couleurs utilisées par "Position ByColor".
Vu l'explication que tu me donnes pour le petit prog mailé, je suis obligé de
1-Charger le mask dans Area, et le laisser parser
2-supprimer les items "areas" ne correspondant pas aux boutons que je veux
3-redéfinir les propriétés color des items "areas" dans le bon ordre.
Et meme là ca ne marchera pas, la preuve en est le comportement du prog que je t'ai envoyé.
Tu vois le probleme.
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 29 avril 2011 à 21:07
Aucun problème car le souci venait du fait de passer de TcyPictureArea à TcySkinArea!
Si tu utilises TcySkinArea dès le départ, tout devrait fonctionner normalement.
Et oui, il parse le bmp, même dans l' ancienne version et je ne vois ce qui te choque car il faut bien qu' il puisse déterminer les différents boutons.
Tiens moi au courant ...
A+
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 20092 29 avril 2011 à 20:48
[MODE SARCASME ON]
Vachement super... il parse le Area.bmp.....
[MODE SARCASME OFF]
Je fais comment sur une application qui doit charger Area, PictureNormal et PictureMouseDown et les definitions des boutons depuis le disque dur ?
A chaque fois je dois coder la destruction de l'item AREAS correspondant au "fond" de la forme, puis modifier la propriété color de chaque item pour que la bonne couleur soit associer au bon bouton ?
C'est ingérable en dehors de l'IDE.
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 29 avril 2011 à 18:46
D' après les tests que j' ai fait, ça vient surement d' un problème de compatibilité entre ta vieille version et la nouvelle version des compos.
Il te suffit donc de faire cela (et tu pourras garder ton code dans le onCreate si tu veux):
- Sauvegarde ton bitmap sur le disque si ce n' est pas déjà fait (propriété Area: TBitmap)
- Vire le bitmap de la propriété Area: TBitmap
- Élimine tous les items de la propriété Areas
- Charge le bitmap dans la propriété Area: TBitmap, normalement, les items dans la propriété Areas doivent être automatiquement crées.
- Vire l' item avec le blanc: très important car sinon il considère que c' est un bouton (tu ne t' en rend pas compte visuellement car le fond de tes 2 jpegs sont les mêmes).
A+
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 29 avril 2011 à 18:14
Très simple:
le problème est que tes items dans Areas n' ont pas la bonne couleur définie!
Celles-ci sont définies lorsque tu charges la propriété Area: TBitmap SI AREAS EST VIDE!!!
Donc, voila comment résoudre ton problème :
- Sauvegarde ton bitmap sur le disque si ce n' est pas déjà fait (propriété Area: TBitmap)
- Vire le bitmap de la propriété Area: TBitmap
- Élimine tous les items de la propriété Areas
- Charge le bitmap dans la propriété Area: TBitmap, normalement, les items dans la propriété Areas doivent être automatiquement crées.
- Vire l' item avec le blanc: très important car sinon il considère que c' est un bouton (tu ne t' en rend pas compte visuellement car le fond de tes 2 jpegs sont les mêmes).
- Vires ça de ton code:
procedure TForm1.FormCreate(Sender: TObject);
begin
SkinArea.Areas[00].Color:=RGB( 0, 0,255);
SkinArea.Areas[01].Color:=RGB( 0, 0,192);
SkinArea.Areas[02].Color:=RGB( 0, 0,160);
SkinArea.Areas[03].Color:=RGB( 0, 0,128);
SkinArea.Areas[04].Color:=RGB( 0, 0, 96);
end;
A+
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 20092 29 avril 2011 à 17:55
Mail envoyé. :)
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 29 avril 2011 à 16:53
Resalut,
"Ben j'ai testé aussi, et figure toi que je me retrouve avec mes 5 boutons parfaitement skinnés et le reste de l'image en blanc alors que Picture normal et pictMouseDown ont un fond différent. "
-> ici, ce qui interesse, c' est PictureNormal: c' est lui qui va être pris en compte pour les zones de couleur non répertoriées dans la propriété Areas! As tu éliminé la couleur à ne pas traiter dans la propriété Areas? Note que la zone non traitée doit avoir une couleur unique (et non pas l' image désirée) dans le bitmap Area: violet par exemple.
Envoie moi une démo présentant le problème ici (fichier rar renommé *.r et avec l' executable): mauricio_box@yahoo.com
"si je ne charge rien dans picture, et que je charge Area avec le bmp idoine dans L'IDE, je me retrouve avec une copie de Area dans Picture... c'est curieux."
-> c' est normal: Picture est mis à jour avec ce qu' il doit être visualisé.
"De plus, si je fais comme je faisais avec PictureArea, a savoir charger dans "Picture" "
-> comme je l' ai dit, il ne faut pas toucher à Picture à moins de vouloir personnaliser la visualisation (ce que je fais jamais de toute façon).
"alors apparait un décalage dans l'affichage"
-> normal car Picture est pris en compte par le compo comme dit plus haut, au format 32 bits! d' oú le décalage je pense ...
"J'ai comparée les sources de SkinArea et PictureArea, il y a des différences dans la gestion du format d'image, PictureArea travaillais avec du 24bit, SkinArea avec du 32bit"
-> Ça fait partie effectivement des modifs faites.
"Faut-il que je conditionne toute les images en 32bit ?"
-> non, tu peux très bien utiliser des jpegs, sauf pour la propriété Area qui est de type Bitmap!
A+
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 20092 29 avril 2011 à 16:41
Salut,
Ben j'ai testé aussi, et figure toi que je me retrouve avec mes 5 boutons parfaitement skinnés et le reste de l'image en blanc alors que Picture normal et pictMouseDown ont un fond différent.
J'ai suivi tes recommandations ci avant : si je ne charge rien dans picture, et que je charge Area avec le bmp idoine dans L'IDE, je me retrouve avec une copie de Area dans Picture... c'est curieux.
De plus, si je fais comme je faisais avec PictureArea, a savoir charger dans "Picture" la partie invariable du skin, alors apparait un décalage dans l'affichage, ainsi que des boutons hachurés, comme si PictureNormal et PictureDown se trouvaient décalés de quelques pixels vers la droite.
C'est étrange. J'ai comparée les sources de SkinArea et PictureArea, il y a des différences dans la gestion du format d'image, PictureArea travaillais avec du 24bit, SkinArea avec du 32bit. Faut-il que je conditionne toute les images en 32bit ?
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 29 avril 2011 à 13:22
Salut,
- "1 "Picture" devrait etre en lecture seule."
Oui et non, cela te permet de personaliser le visuel! D' ailleurs, c' est comme sous depuis le TcyPictureArea.
- "2 Il ya une différence de comportement avec Picture Area : Avec PictureArea, une couleur presente sur Area.bmp mais non définie dans Areas était ignorée"
Non, dans la propriété Areas, élimine l' élément dont la couleur doit être ignorée (ne correspond donc pas à un bouton) et ça marche: j' ai testé!
A+
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 29 avril 2011 à 10:23
Salut DeltaFX,
pour ce qui est du fichier cySkinArea.rtf, tu as raison, c' est un oubli de ma part.
Pour ce qui est de l' utilisation du compo, celui-ci n' est pas très différent de sa version antérieure et c' est surtout certaines propriétés qui ont changé de nom qui doivent te bloquer:
1) Ajoute le compo TcySkinArea sur ta form, NE TOUCHE PAS A LA PROPRIÉTÉ Picture: c' est l' image renvoyée à l' utilisateur !.
2) informe la propriété Area: Tbitmap avec un bitmap avec les différentes couleurs représentant chaque bouton.
3) jette une oeil sur la propriété Areas (TCollectionItem comme les colonnes d' une DBGrid) remplie automatiquement: tu as pour chaque élément des propriétés propres aux boutons comme AllowAllUp, Down, Enabled et GroupIndex.
4) informe la propriété PictureNormal: c' est l' image de l' état normal de tous les boutons (enabled à true, down à false)
5) informe la propriété PictureMouseOver: c' est l' image de l' état souris par dessus de tous les boutons (enabled à true, down à false)
5) informe la propriété PictureMouseDown: c' est l' image de l' état souris appuyée de tous les boutons (enabled à true, down à true)
etc ...
Il n' est pas necessaire d' informer toutes les propriétés.
Pour plus de précision, tu as une démo pour chaque compo sur ce site ou sur sourceForge.
A+
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 20092 29 avril 2011 à 00:12
En outre, apres un test vite fait sur un nouveau projet, je ne comprend absolument pas à quoi servent "Picture" et "PictureNormale".
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 20092 28 avril 2011 à 22:00
Hi,
En fait je jetais un oeil à un vieux projet avant d'attaquer la version 2. J'ai déja réadapter le source pour tcySkinArea, donc le temps de reprendre mes marques et tout ira bien.
"Le fichier est quasi-vide" : j'ai donc télécharger le pack de démo 4.12 et dans le repertoire concernant SkinArea, il ya un fichier cySkinArea.rtf
Si j'ouvre ce fichier avec word, ou ultraedit, il ne contient que :
The TcyColorMatrix component
Description
Published properties
?
Events
?
Ce qui ne me semble pas trop correspondre a SkinArea, non ?
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 28 avril 2011 à 10:12
Le plus simple étant donné que tu ne faisais pas de mises à jour régulières, EST de jetter le compo actuel (dans le cas du TcyPictureArea) et ajoutee le compo actuel (TcySkinArea) et tu devrais retrouver le fonctionnement normal du compo.
A+
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 28 avril 2011 à 10:11
Salut DELTAFX,
malheureusement, tu ne précises pas quelle version de mon pack tu avais avant...
TcyPictureArea fut tout simplement renommé TcySkinArea: télécharge la démo pour te rendre compte que les fonctionnalités sont toujours présentes.
Le TcyColorMatrix est autre chose, encore une fois, jette un oeil sur la démo.
"le fichier est quasivide" je ne sais pas à quoi tu fais référence, désolé.
Le plus simple étant donné que tu ne faisais pas de mises à jour régulières, et de jetter le compo actuel (dans le cas du TcyPictureArea), ajoute le compo actuel (TcySkinArea) et tu devrais retrouver le fonctionnement normal du compo.
A+
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 20092 27 avril 2011 à 18:59
Salut Mauricio
Heuu.... Apres une migration vers xp je réinstalle d7, et hop, j'attrape la derniere version du pack...
Et je rame. Autant PictureArea marchait impec sur mes projets, autant skinArea me laisse dubitatif... le rtf dans le repertoire demo fait référence a colormatrix, le fichier est quasivide et a priori certains comportement on changé, non ?
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 21 mars 2011 à 10:08
Pas de problème ...
A+
gripouille
Messages postés3Date d'inscriptionvendredi 14 janvier 2005StatutMembreDernière intervention20 mars 2011 20 mars 2011 à 17:02
Salut MAURICIO,
Oubli mon dernier commentaire, je viens de regarder tous ca et je me suis appercu de mon erreur. j'ai téléchargé le pack demo en pensant que tous était dedans. j'ai téléchargé le pack cette fois-ci :)
Vraiment désolé et mille excuses
Merci pour les compos et continu ton bon boulot
Cordialement
gripouille
Messages postés3Date d'inscriptionvendredi 14 janvier 2005StatutMembreDernière intervention20 mars 2011 19 mars 2011 à 19:18
Salut MAURICIO,
J'ai téléchargé ton zip mais il n'y as pas de fichier texte pour expliquer l'installation de tes compo et la sur Delphi XE je suis un peu perdu. Quand je veux installer un nouveau composant, il ne trouve pas tel ou tel autre compo qui est relié les uns un autres ou quelque chose comme ca. Faut-il les rassembler dans un même répertoire?
Merci d'avance pour ta réponse
A=
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 18 mars 2011 à 17:06
Salut Gripouille,
comme détaillé dans le fichier texte inclus avec les compos (instructions d' installation), ceux-ci sont compatibles avec toutes les verions de delphi depuis Delphi 7.
A+
gripouille
Messages postés3Date d'inscriptionvendredi 14 janvier 2005StatutMembreDernière intervention20 mars 2011 18 mars 2011 à 17:03
Salut
Tout d'abord, un gros merci à toi et les autres pour tout l'aide que vous apportés aux débutant comme moi. Continuer votre bon travail.
Je voudrais savoir si tes composants sont compatible pour Delphi XE 2010 et Delphi 2009.
Merci pour ta réponse
Cordialement
proali
Messages postés2Date d'inscriptionmardi 1 décembre 2009StatutMembreDernière intervention27 février 2011 27 févr. 2011 à 16:25
je cherche une petite application en delphi base de données et des tutoriaux si vous pouvez me les envoyé à mon e-mail :
ali.gana71yahoo.fr merci en faite en ce qui concerne les jeux je peux vous aider
20 oct. 2011 à 14:59
20 oct. 2011 à 14:30
tu peux résoudre ce problème en procédant de la sorte:
procedure TFrmCyResizer.cyResizer1DblClick(Sender: TObject);
begin
ShowMessage('Make double click!');
// Release mouse handling that WILL BE activated by MouseDown after DblClick (Mouse up catched by ShowMessage dialog box) :
PostMessage(cyResizer1.Handle, WM_LBUTTONUP, 0, 0);
end;
A+
20 oct. 2011 à 11:44
J'ai une remarque concernant le composant TcyResize :
Si j''affiche une fenêtre (ex :formMain.show) ou un message (ex :showmessage ou messagedlg) dans l’événement OnDblClick, après la fermeture de la fenêtre ou du message, le composant sélectionné (avec le double click) se met en mode déplacement.
Une solution pour éviter le déplacement après le double click ?
9 mai 2011 à 16:42
9 mai 2011 à 16:21
après la détection de différents bugs sur le compos TcySkinButton par DELTAFX, je vous poste la correction...."
TcySkinArea... mdr
Je vais tester :)
3 mai 2011 à 12:54
après la détection de différents bugs sur le compos TcySkinButton par DELTAFX, je vous poste la correction.
@DELTAFX: voilà, je te laisse tester (après plusieurs tests, ça marche très bien en dynamique) et me dire si tout est ok maintenant.
A+
3 mai 2011 à 10:11
j' ai utilisé le 32 bits pour son optimisation question rapidité.
Pour ce qui est des problèmes avec les jpegs, il va falloir que je teste mieux ce compo.
A+
2 mai 2011 à 23:59
Une petite remarque, en fait. TcySkinArea est en 32bit. Si un bmp en 32bit est plus interressant pour optimiser la vitesse de traitement, les 8bits de différence avec le pf24bit ne codent que pour un alpha channel,un format ARGB où A est un niveau de transparence. Ca ne code pas un format RGB sur 32bit du genre (R:11bit, G:11bit, b:10bit).
De plus, niveau compatibilité avec le format jpg, le pf32bit est à manier avec des pincettes.
Dans le cas de skinarea, je ne suis pas sur que cela soit tres interressant:
1- je pense que c'est la cause du décalage quand je charge qqch dans "Picture"
2- et pour ce composant, j'avoue ne pas voir d'interet a gere en plus l'alpha channel, pour l'instant. Si tu envisage de gerer des effets de transparence entre picturenormal, down, downmouseover, etc, là cela sera nécessaire.
Tchô :)
30 avril 2011 à 01:23
Mais c'est pô grave en soit, j'ai retrouvé dans une archive ton Pack de Composant version 2005, donc dans le pire des cas, je fais un rollback.
30 avril 2011 à 00:51
30 avril 2011 à 00:50
Au départ, j' ai changé son nom puis j' y ai ajouté certains états et la gestion du 32 bits.
Normalement, les 2 versions sont quasi similaires.
"Vu l'explication que tu me donnes pour le petit prog mailé, je suis obligé de
1-Charger le mask dans Area, et le laisser parser
2-supprimer les items "areas" ne correspondant pas aux boutons que je veux
3-redéfinir les propriétés color des items "areas" dans le bon ordre."
Non, je pensais que le compo initial était TcyPictureArea et il pouvait y avoir un problème de compatibilité.
"Tu me dis que PictureArea parsait aussi les couleurs présentes sur le bmp Area, mais je n'ai jamais constaté ce comportement"
Car il ne le fait que si Areas n' a aucun item dans sa liste: il initialise la liste automatiquement, sinon, il ne parse pas le bmp.
As tu testé la méthode que je t' ai donnée pour voir ce que ça donne?
Je pense qu' il doit y avoir un bug: envoi moi une démo avec les attributions en dynamique pour que je puisse tester sous D2009 et D7 ...
A+
30 avril 2011 à 00:37
Donc, il doit y avoir un problème sous Delphi 7 car ça marche bien sous Delphi 2009 ...
"Tu me dis que PictureArea parsait aussi les couleurs présentes sur le bmp Area, mais je n'ai jamais constaté ce comportement"
Le compo cySkinArea a le même modus operandum que tcyPictureArea.
Mail moi STP une démo avec utilisation dynamique pour que puisse tester ça sous Delphi 2009 puis Delphi 7.
A+
29 avril 2011 à 23:04
Tu me dis que PictureArea parsait aussi les couleurs présentes sur le bmp Area, mais je n'ai jamais constaté ce comportement. De plus, j'utilisais l'Unit PositionByColor (le source est sur ce forum) avec Area, et jamais je n'ai eu de probleme. Dans mon cas, Area Bmp contenait et des zones colorés pour définir les boutons de PictureArea, et des rectangles d'autre couleurs pour PositionBycolor. Voila ce que je faisais dans le OnCreate de la forms d'un lecteur mp3:
...
BuildAreaColorList('.\MP3_MASK.bmp'); // parser les couleurs présentes sur le masque (Area)
PictureAreaMP3.Tag:=RGB(0,0,0); // le rectangle où placer le pictureArea dans la form est noir
PlaceCtrl(PictureAreaMP3); // on definit top,left,width, height du picture area.
cyGauge.Tag:=RGB(255,0,128); // idem pour la gauge
PlaceCtrl(cyGauge);
Matrix.Tag:=RGB(128,0,255);
PlaceCtrl(Matrix);
Total.Tag:=RGB(177,186,69);
PlaceCtrl(Total);
Elapsed.Tag:=RGB(78,69,186);
PlaceCtrl(Elapsed);
PictureAreaMP3.Area.LoadFromFile('.\MP3_MASK.bmp');
PictureAreaMP3.PictureNormal.LoadFromFile('.\MP3_OFF.bmp');
PictureAreaMP3.PictureDown.LoadFromFile('.\MP3_ON.bmp');
PictureAreaMP3.Areas[00].Color:=RGB( 32, 0, 0);
PictureAreaMP3.Areas[01].Color:=RGB( 0, 0, 32);
PictureAreaMP3.Areas[02].Color:=RGB( 64, 0, 0);
PictureAreaMP3.Areas[03].Color:=RGB( 0, 0, 64);
PictureAreaMP3.Areas[04].Color:=RGB( 96, 0, 0);
PictureAreaMP3.Areas[05].Color:=RGB( 0, 0, 96);
PictureAreaMP3.Areas[06].Color:=RGB(128, 0, 0);
PictureAreaMP3.Areas[07].Color:=RGB( 0, 0,128);
PictureAreaMP3.Areas[08].Color:=RGB(128, 0,128);
PictureAreaMP3.Areas[09].Color:=RGB(255,255, 0);
PictureAreaMP3.Areas[10].Color:=RGB(255, 0,255);
PictureAreaMP3.Areas[11].Color:=RGB(255, 0, 0);
PictureAreaMP3.Areas[12].Color:=RGB( 0,255, 0);
PictureAreaMP3.Areas[13].Color:=RGB( 0, 0,255);
PictureAreaMP3.Areas[15].Color:=RGB(128,128,128);
...
Je créais les items 0à15 dans l'IDE, je ne chargeais aucune image depuis l'IDE et PictureArea ne cherchait pas d'autres item "areas" que les 16 ci-dessus. De ce fait il ignorait completement les couleurs utilisées par "Position ByColor".
Vu l'explication que tu me donnes pour le petit prog mailé, je suis obligé de
1-Charger le mask dans Area, et le laisser parser
2-supprimer les items "areas" ne correspondant pas aux boutons que je veux
3-redéfinir les propriétés color des items "areas" dans le bon ordre.
Et meme là ca ne marchera pas, la preuve en est le comportement du prog que je t'ai envoyé.
Tu vois le probleme.
29 avril 2011 à 21:07
Si tu utilises TcySkinArea dès le départ, tout devrait fonctionner normalement.
Et oui, il parse le bmp, même dans l' ancienne version et je ne vois ce qui te choque car il faut bien qu' il puisse déterminer les différents boutons.
Tiens moi au courant ...
A+
29 avril 2011 à 20:48
Vachement super... il parse le Area.bmp.....
[MODE SARCASME OFF]
Je fais comment sur une application qui doit charger Area, PictureNormal et PictureMouseDown et les definitions des boutons depuis le disque dur ?
A chaque fois je dois coder la destruction de l'item AREAS correspondant au "fond" de la forme, puis modifier la propriété color de chaque item pour que la bonne couleur soit associer au bon bouton ?
C'est ingérable en dehors de l'IDE.
29 avril 2011 à 18:46
Il te suffit donc de faire cela (et tu pourras garder ton code dans le onCreate si tu veux):
- Sauvegarde ton bitmap sur le disque si ce n' est pas déjà fait (propriété Area: TBitmap)
- Vire le bitmap de la propriété Area: TBitmap
- Élimine tous les items de la propriété Areas
- Charge le bitmap dans la propriété Area: TBitmap, normalement, les items dans la propriété Areas doivent être automatiquement crées.
- Vire l' item avec le blanc: très important car sinon il considère que c' est un bouton (tu ne t' en rend pas compte visuellement car le fond de tes 2 jpegs sont les mêmes).
A+
29 avril 2011 à 18:14
le problème est que tes items dans Areas n' ont pas la bonne couleur définie!
Celles-ci sont définies lorsque tu charges la propriété Area: TBitmap SI AREAS EST VIDE!!!
Donc, voila comment résoudre ton problème :
- Sauvegarde ton bitmap sur le disque si ce n' est pas déjà fait (propriété Area: TBitmap)
- Vire le bitmap de la propriété Area: TBitmap
- Élimine tous les items de la propriété Areas
- Charge le bitmap dans la propriété Area: TBitmap, normalement, les items dans la propriété Areas doivent être automatiquement crées.
- Vire l' item avec le blanc: très important car sinon il considère que c' est un bouton (tu ne t' en rend pas compte visuellement car le fond de tes 2 jpegs sont les mêmes).
- Vires ça de ton code:
procedure TForm1.FormCreate(Sender: TObject);
begin
SkinArea.Areas[00].Color:=RGB( 0, 0,255);
SkinArea.Areas[01].Color:=RGB( 0, 0,192);
SkinArea.Areas[02].Color:=RGB( 0, 0,160);
SkinArea.Areas[03].Color:=RGB( 0, 0,128);
SkinArea.Areas[04].Color:=RGB( 0, 0, 96);
end;
A+
29 avril 2011 à 17:55
29 avril 2011 à 16:53
"Ben j'ai testé aussi, et figure toi que je me retrouve avec mes 5 boutons parfaitement skinnés et le reste de l'image en blanc alors que Picture normal et pictMouseDown ont un fond différent. "
-> ici, ce qui interesse, c' est PictureNormal: c' est lui qui va être pris en compte pour les zones de couleur non répertoriées dans la propriété Areas! As tu éliminé la couleur à ne pas traiter dans la propriété Areas? Note que la zone non traitée doit avoir une couleur unique (et non pas l' image désirée) dans le bitmap Area: violet par exemple.
Envoie moi une démo présentant le problème ici (fichier rar renommé *.r et avec l' executable): mauricio_box@yahoo.com
"si je ne charge rien dans picture, et que je charge Area avec le bmp idoine dans L'IDE, je me retrouve avec une copie de Area dans Picture... c'est curieux."
-> c' est normal: Picture est mis à jour avec ce qu' il doit être visualisé.
"De plus, si je fais comme je faisais avec PictureArea, a savoir charger dans "Picture" "
-> comme je l' ai dit, il ne faut pas toucher à Picture à moins de vouloir personnaliser la visualisation (ce que je fais jamais de toute façon).
"alors apparait un décalage dans l'affichage"
-> normal car Picture est pris en compte par le compo comme dit plus haut, au format 32 bits! d' oú le décalage je pense ...
"J'ai comparée les sources de SkinArea et PictureArea, il y a des différences dans la gestion du format d'image, PictureArea travaillais avec du 24bit, SkinArea avec du 32bit"
-> Ça fait partie effectivement des modifs faites.
"Faut-il que je conditionne toute les images en 32bit ?"
-> non, tu peux très bien utiliser des jpegs, sauf pour la propriété Area qui est de type Bitmap!
A+
29 avril 2011 à 16:41
Ben j'ai testé aussi, et figure toi que je me retrouve avec mes 5 boutons parfaitement skinnés et le reste de l'image en blanc alors que Picture normal et pictMouseDown ont un fond différent.
J'ai suivi tes recommandations ci avant : si je ne charge rien dans picture, et que je charge Area avec le bmp idoine dans L'IDE, je me retrouve avec une copie de Area dans Picture... c'est curieux.
De plus, si je fais comme je faisais avec PictureArea, a savoir charger dans "Picture" la partie invariable du skin, alors apparait un décalage dans l'affichage, ainsi que des boutons hachurés, comme si PictureNormal et PictureDown se trouvaient décalés de quelques pixels vers la droite.
C'est étrange. J'ai comparée les sources de SkinArea et PictureArea, il y a des différences dans la gestion du format d'image, PictureArea travaillais avec du 24bit, SkinArea avec du 32bit. Faut-il que je conditionne toute les images en 32bit ?
29 avril 2011 à 13:22
- "1 "Picture" devrait etre en lecture seule."
Oui et non, cela te permet de personaliser le visuel! D' ailleurs, c' est comme sous depuis le TcyPictureArea.
- "2 Il ya une différence de comportement avec Picture Area : Avec PictureArea, une couleur presente sur Area.bmp mais non définie dans Areas était ignorée"
Non, dans la propriété Areas, élimine l' élément dont la couleur doit être ignorée (ne correspond donc pas à un bouton) et ça marche: j' ai testé!
A+
29 avril 2011 à 10:23
pour ce qui est du fichier cySkinArea.rtf, tu as raison, c' est un oubli de ma part.
Pour ce qui est de l' utilisation du compo, celui-ci n' est pas très différent de sa version antérieure et c' est surtout certaines propriétés qui ont changé de nom qui doivent te bloquer:
1) Ajoute le compo TcySkinArea sur ta form, NE TOUCHE PAS A LA PROPRIÉTÉ Picture: c' est l' image renvoyée à l' utilisateur !.
2) informe la propriété Area: Tbitmap avec un bitmap avec les différentes couleurs représentant chaque bouton.
3) jette une oeil sur la propriété Areas (TCollectionItem comme les colonnes d' une DBGrid) remplie automatiquement: tu as pour chaque élément des propriétés propres aux boutons comme AllowAllUp, Down, Enabled et GroupIndex.
4) informe la propriété PictureNormal: c' est l' image de l' état normal de tous les boutons (enabled à true, down à false)
5) informe la propriété PictureMouseOver: c' est l' image de l' état souris par dessus de tous les boutons (enabled à true, down à false)
5) informe la propriété PictureMouseDown: c' est l' image de l' état souris appuyée de tous les boutons (enabled à true, down à true)
etc ...
Il n' est pas necessaire d' informer toutes les propriétés.
Pour plus de précision, tu as une démo pour chaque compo sur ce site ou sur sourceForge.
A+
29 avril 2011 à 00:12
28 avril 2011 à 22:00
En fait je jetais un oeil à un vieux projet avant d'attaquer la version 2. J'ai déja réadapter le source pour tcySkinArea, donc le temps de reprendre mes marques et tout ira bien.
"Le fichier est quasi-vide" : j'ai donc télécharger le pack de démo 4.12 et dans le repertoire concernant SkinArea, il ya un fichier cySkinArea.rtf
Si j'ouvre ce fichier avec word, ou ultraedit, il ne contient que :
The TcyColorMatrix component
Description
Published properties
?
Events
?
Ce qui ne me semble pas trop correspondre a SkinArea, non ?
28 avril 2011 à 10:12
A+
28 avril 2011 à 10:11
malheureusement, tu ne précises pas quelle version de mon pack tu avais avant...
TcyPictureArea fut tout simplement renommé TcySkinArea: télécharge la démo pour te rendre compte que les fonctionnalités sont toujours présentes.
Le TcyColorMatrix est autre chose, encore une fois, jette un oeil sur la démo.
"le fichier est quasivide" je ne sais pas à quoi tu fais référence, désolé.
Le plus simple étant donné que tu ne faisais pas de mises à jour régulières, et de jetter le compo actuel (dans le cas du TcyPictureArea), ajoute le compo actuel (TcySkinArea) et tu devrais retrouver le fonctionnement normal du compo.
A+
27 avril 2011 à 18:59
Heuu.... Apres une migration vers xp je réinstalle d7, et hop, j'attrape la derniere version du pack...
Et je rame. Autant PictureArea marchait impec sur mes projets, autant skinArea me laisse dubitatif... le rtf dans le repertoire demo fait référence a colormatrix, le fichier est quasivide et a priori certains comportement on changé, non ?
21 mars 2011 à 10:08
A+
20 mars 2011 à 17:02
Oubli mon dernier commentaire, je viens de regarder tous ca et je me suis appercu de mon erreur. j'ai téléchargé le pack demo en pensant que tous était dedans. j'ai téléchargé le pack cette fois-ci :)
Vraiment désolé et mille excuses
Merci pour les compos et continu ton bon boulot
Cordialement
19 mars 2011 à 19:18
J'ai téléchargé ton zip mais il n'y as pas de fichier texte pour expliquer l'installation de tes compo et la sur Delphi XE je suis un peu perdu. Quand je veux installer un nouveau composant, il ne trouve pas tel ou tel autre compo qui est relié les uns un autres ou quelque chose comme ca. Faut-il les rassembler dans un même répertoire?
Merci d'avance pour ta réponse
A=
18 mars 2011 à 17:06
comme détaillé dans le fichier texte inclus avec les compos (instructions d' installation), ceux-ci sont compatibles avec toutes les verions de delphi depuis Delphi 7.
A+
18 mars 2011 à 17:03
Tout d'abord, un gros merci à toi et les autres pour tout l'aide que vous apportés aux débutant comme moi. Continuer votre bon travail.
Je voudrais savoir si tes composants sont compatible pour Delphi XE 2010 et Delphi 2009.
Merci pour ta réponse
Cordialement
27 févr. 2011 à 16:25
ali.gana71yahoo.fr merci en faite en ce qui concerne les jeux je peux vous aider