Matt 261
Messages postés1173Date d'inscriptionmercredi 2 novembre 2005StatutMembreDernière intervention10 septembre 2011
-
13 août 2006 à 10:02
korgis
Messages postés420Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention 6 mai 2019
-
14 mars 2015 à 23:16
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
hamlog
Messages postés1Date d'inscriptionmercredi 5 décembre 2007StatutMembreDernière intervention14 mars 2015 13 mars 2015 à 16:01
salut
SVP comment faire dans votre exemple pour mettre le chemain des photos non changeable par exemple dans la partie formCreate sans utiliser opendialog
merci d'avance
korgis
Messages postés420Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention 6 mai 201917
>
hamlog
Messages postés1Date d'inscriptionmercredi 5 décembre 2007StatutMembreDernière intervention14 mars 2015 14 mars 2015 à 23:16
Dans l'évènement OnCreate du Form, après la création du SlideShow, tu ajoutes cette ligne qui contient le répertoire des images que tu veux afficher :
Tu pourras ensuite décortiquer cet excellent code pour apprendre la programmation en Delphi.
Bonne chance !
Whismeril
Messages postés19028Date d'inscriptionmardi 11 mars 2003StatutNon membreDernière intervention24 avril 2024656
>
hamlog
Messages postés1Date d'inscriptionmercredi 5 décembre 2007StatutMembreDernière intervention14 mars 2015 14 mars 2015 à 22:45
Bonsoir, je ne connais pas Delphi, mais dans les langages que je connais un chemin est contenu dans une chaine de caractères, et en général c'est ce que retourne un OpenDialog.
Tu devrais mettre un point d'arrêt au moment ou le programme enregistre le retour de cette boite de dialog, regarder le format de la chaine, en espionnant le contenu de la variable en question, et mettre ton chemin à la place au bon format.
cincap
Messages postés460Date d'inscriptiondimanche 5 décembre 2004StatutMembreDernière intervention 6 avril 20092 21 oct. 2007 à 10:10
Bonjour à toutes et à tous,
@ Cirec, bravo pour ce logiciel qui pourra être personnalisé.
Au démarrage de l'application, je pense que ce serait une idée de ne pas avoir accès aux boutons 'Start, Stop et reset) avant d'avoir choisis les photos.
Par contre, après un 1er diaporama et si on veut changer de directory mais qu'après avoir ouvert le dialogue on décide d'annuler, il y a un sérieux bug.
@ Florent, décidément tu maitrises sérieusement le bitmap.
@+,
Cincap
cs_Gecko62
Messages postés25Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention21 octobre 2012 27 août 2006 à 18:54
Superbe source
Bravo et merci
Tout comme Francky23012301, je mets un 10 / 10
Francky23012301
Messages postés400Date d'inscriptionsamedi 6 août 2005StatutMembreDernière intervention11 février 20161 22 août 2006 à 16:58
Salut Cirec,
Bien Bien tout ca : une visionneuse avec des chtit effets visuels bien sympathique.
Code : Propre et fluide.
Allez un petit 10/10.
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 20134 17 août 2006 à 18:10
Salut Cirec,
je n'ai pas eu trop le temps de voir ton code, mais le résultat est magnifique. Bravo à toi.
Thierry
cs_mcapp
Messages postés71Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention15 décembre 2011 15 août 2006 à 02:23
Encore un projet qui est très intéressant à étudier.
Et d'excellente qualité !
Une suggestion : dans la capture, il faudrait présenter une véritable photo (paysage par exemple) sinon elle n'incite pas trop à s'y intéresser avec la capture que tu présentes actuellement.
"jette ton jouet et achète toi un vrai PC ... lol "
>> Tu rigoles, il est meilleur que le tien ^^
Mouais c'est ça, ma carte graphique est trop puissante pour ton programme ... mdr
En plus, e remarque d'apres la capture que tu te sert du compte administrateur. C'est pas bien du tout ça ^^ lol
Pour TPath, comme je le disais, j'étais dans les nuages à ce moment là.
Pour le contructeur, par contre, je ne suis pas d'accord. AOwner est de type TComponent. C'est sur que si tu le pose sur une fiche, ce sera forcément un TWinControl puisque c'est la fiche qui sera le propriétaire. Et du coup, l'animation se fera uniquement sur la fiche. Donc ce n'est pas la bonne méthode. En même temps, je n'ai pas d'autre idée donc ... ben laisse comme ça quoi !
"Merci beaucoup à Florenth pour l'intérêt que tu portes à cette source."
>> Ca fait partie des rares sources qui utilisent des objets, qui est faite pour les autres et qui en plus est plutot novatrice. A part pour l'autre qui va se faire bannir, évidemment que cette source intéresse du monde. Par contre, elle est peut-être un peu compliquée pour les débutants, c'est pour cela qu'elle n'est que peu commentée
Voilà j'ai presque tout fait sauf "aOwner as TWinControl"
D'ailleurs l'aide de Delphi dit ceci :
Description
Les contrôles fenêtrés sont des contrôles qui :
Peuvent recevoir la focalisation pendant l'exécution de l'application.
Les autres contrôles peuvent afficher des données, mais l'utilisateur ne peut interagir avec un contrôle que
s'il s'agit d'un contrôle fenêtré.
Peuvent contenir d'autres contrôles.
Un contrôle contenant d'autres contrôles est un parent. Seul un contrôle fenêtré peut être le parent d'un ou
de plusieurs contrôles enfant.
Disposent d'un handle de fenêtre.
Un handle de fenêtre est l'identificateur fourni pour une fenêtre par Windows. Les contrôles fenêtrés peuvent
représenter des fenêtres contrôle standard fournies par l'environnement Windows ou des fenêtres personnalisées
définies par l'application.
Donc je me dit à partir du moment ou tu peux poser le composant celui qui l'accèpte est forcément un TWinControl ou enfant ?
Et de plus la méthode que tu proposes limite l'utilisation à un Panel alors que la je peut le mettre ailleurs (Form par Ex.)
Je vais donc encore réfléchir à ce problème ...
Pour la création avec Nil c'est une habitude que j'ai pris ce que je crée manuellement je le libère manuellement (bon c'était pas faux mais inutile)
En ce qui concerne TPath :
Comme le constructeur et le Destructeur ne sont pas surchargés et qu'ils sont vide au départ
je n'ai rien mis...
Et dans les sources de Delphi j'ai vu des utilisations identiques donc ...
Sinon pour le bug d'affichage que tu as avec les Slides ... ce doit être chez toi, moi j'ai pas ce phénomène ... jette ton jouet et achète toi un vrai PC ... lol
Non ... un peut de sérieux ... m'enfin !!!
Ah oui j'oubliais ...
J'ai déclarer une Fonction externe AlphaBlend
qui existe depuis D4 dans Windows.pas mais comme MS à fait des changement dans les Dll système (entre les versions) aujourd'hui cette fonction n'est plus accessible depuis D4 et peut être d'autres versions
Avant AlphaBlend se trouvait dans "gdi32.dll" et maintenant elle se trouve dans "msimg32.dll" ?
Ceci explique pourquoi avoir re-déclarer cette fonction
ps : Merci beaucoup à Florenth pour l'intérêt que tu portes à cette source.
Et tiens, puisque j'y suis :
- Pourquoi mettre "nil" comme paramètre AOwner quand tu construit tes TcrIMGPanel ? Après tout, comme c'est un composant qui les possède, tu pourrais mettre "Self". Comme ça, pas besoin de les détruire (tu te souviens ??)
- Et d'ailleurs, que fait ce "SlideShow.Free" dans le FormClose ?? Vire moi ça tout de suite !!!! C'est un composant donc il se détruit AUTOMATIQUEMENT (si tu as mis autre chose que nil comme Owner) et c'est le cas.
- "FDisplay[I].parent := aOwner as TWinControl" Et si aOwner n'est pas un TWinControl ? Tu l'as dans le baba ! Il faut que tu mettes une propriété publiée "PanelParent: TWinControl" avec un getter et un setter qui l'affecte aux deux panels de ton array. (oui je te l'accorde, ça fait un peu lourd) Au passage, array[Boolean] of ... je trouve cela très très bien pensé.
- Il est crée et détruit où et quand ton TPath ? Je ne vois pas (là par contre, ça doit être moi qui suis bigleux)
En fait je ne sais pas vraiment si c'est un bug ....
Après vérification, tous ceux qui ont le parametre AW_SLIDE sont concernés donc c'est surement dû à la présence de ce flag.
Pour asSLeft, asSright, asSTop et asSBottom, l'effet rand bien, mais pour ceux qui proviennent d'un coin (les 4 autres), je trouve que cela rend bof bof pour ne pas dire plus !
Donc ce n'est peut être pas un bug mais juste une option que je trouve "moche" (bon, c'est exagéré bien sûr ^^)
Bon sinon, quelques suggestion auniveau du code et des fonctionnalités :
- Si tu ne mets rien dans Paint(), tu n'es pas obligé de le déclarer car il est "virtual" par défaut dans TCustomControl.
- Je trouve que ta propriété NameLabel n'est pas une bonne idée. En effet, tu figes l'utilisation de ce composant avec un label pour afficher le nom de la photo (ou ne pas en mettre). Moi j'aurais vu ça différement avec une propriété "ImageName: string read FImageName;" que tu remplis dans DoAnimate() et un évenement "OnImageChange: TNotifyEvent read FOnChange write FOnChange;" que tu appelles aussi dans DoAnimate() juste après avoir changé la propriété. Comme ça, libre à nous d'utiliser ou non l'évenement (en plus comme c'est un TComponent, c'est accessible directement depuis l'inspecteur d'objets) pour mettre à jour le composant de notre choix et d'afficher au besoin, par exemple, seulement de nom de la photo sans les répertoires. Chose impossible à faire avec ton implémentation.
Ha ha ha, j'ai trouvé un bug ^^
Pour mieux le voir, met à AnimateSpeed une valeur élevée.
Ensuite, tu règles animate type à SBottomLeft (y'en a d'autres, d'ailleurs, je crois que ça concerne tous ceux qui commencent par S et qui ont Top et/ou Left) et tu verras lors de la transition qu'il y a un rectangle de couleur clButtonFace qui se trouve à droite.
Tout ceci en mode proportionnel bien sûr.
Je crois savoir d'où ça vient (du panel forcément !) mais pas comment y résoudre.
Sinon oui, niveau conception, c'est OK. Le composant, ce sera pratique pour toi comme ça tu n'auras pas à le créer dans tes futurs programmes.
Par contre, dans l'unité UPath, à partir de la ligne 154, tu ne peux pas concaténer sLineBreak sans l'opérateur "+".
Tu peux faire :
- 'Salut'#10#13'C''est florent !'
mais pas
- 'Salut'sLineBreak''C''est florent !'
Il faut mettre
- 'Salut' + sLineBreak' + 'C''est florent !'
Bizarre que chez toi ça marche ... (d'ailleurs, dans la version de tout à l'heure, c'était correct)
Ahh la là, ce genre de commentaire ...
Michèle, pour quelqu'un qui fait (est sensé faire) des reportages et qui utilise Delphi pour les représenter, tu ne trouve pas bizarre que ce code ne t'intéresse pas ?
C'est vrai que : "Attention ! Ce code utilise une API !"
Cirec, pour le AW_BLEND, c'est pas la peine d'essayer ça ne marche ra pas. Voila ce que dit la MSDN la dessus : "AW_BLEND uses a fade effect. This flag can be used only if hwnd is a top-level window."
[Wolf_Hunter]
Comme toujours le loup rôde ...
Quand on ne comprend pas la programmation on ne peut pas apprécier ...
Si c'est pas du ("Image1.Left := Image1.Left + 1") c'est fini ... tu paniques c'est trop compliqué !!!
/Wolf_Hunter
Sinon nouvelle version ...
Correction du défaut de rafraîchissement
et sur les conseils de Florenth :
TcrImgPanel hérite directement de TCustomControl
TcrSlideShow hérite de TComponent avec possibilité de l'installer
le fichier DPK n'est pas fournis (je n'ai pas testé l'installation)
Suppression du StretchDraw remplacé StretchBlt en Halfton (Merci à DrJérome pour l'astuce)
Je répond au sujet du composant: même si tu le déclare comme descendant de TComponent, tu peux l'utiliser sans l'installer, et en plus, tu n'a même pas à le détruire.
Pour BIF_NEWDIALOGSTYLE, oui oui, j'ai remarqué avec ton autre source.
Et pour TCustomControl au lieu de TCustomPanel, tu n'as que ça à changer dans la déclaration et tout le reste fonctionne parfaitement. Magique !
Matt 261
Messages postés1173Date d'inscriptionmercredi 2 novembre 2005StatutMembreDernière intervention10 septembre 20113 13 août 2006 à 12:33
>>>AnimateWindow "vole" la main au programme
ca a toujours été le gros problème d'AnimateWindow... Dommage...
Bien, bien tout ça.
Quelques remarques cependant:
- Pourquoi dériver TcrImgPanel de TCustomPanel alors que TcustomControl me parait mieux. Je n'ai pas testé mais peut être quel AW_BLEND fonctionne avec TCustomControl.
"Le fait d'avoir dérivé TcrSlideShow de TObject n'est peut être pas la bonne méthode ?"
>> Disons que tu aurais pu le faire dériver de TComponent ce qui aurant permi un mode design-time 8pour ceux qui l'installent) alors qu là, tu te reduit au mode run-time (création dynamique)
Sinon :
- ParentBackground n'existe pas sous D6
- Je n'ai pas la constante BIF_NEWDIALOGSTYLE (en l'enlevant, ça fonctionne parfaitement)
- StretchDraw, c'est bof. StretchBlt, c'est mieux (un peu plus lent par contre). Le best étant les méthodes de la librairie GraphicEx.
- AnimateWindow "vole" la main au programme ce qui veut dire qu'il est impossible de modifier une des propriétés en cliquant sur les composant de la fiche pendant qu'une animation est en cours. Mais là, il n'y a rien à faire, sauf threader (et encore, je n'ai pas testé non plus)
Je regarde le code plus en détails et je t'en dit des nouvelles.
En tout cas l'idée est novatrice. Je n'avais jamais pensé à cette utilisation de AnimateWindow()
Matt 261
Messages postés1173Date d'inscriptionmercredi 2 novembre 2005StatutMembreDernière intervention10 septembre 20113 13 août 2006 à 10:02
Tout simplement excellent ! Les effets sont super bien fait... Bravo !
13 mars 2015 à 16:01
SVP comment faire dans votre exemple pour mettre le chemain des photos non changeable par exemple dans la partie formCreate sans utiliser opendialog
merci d'avance
14 mars 2015 à 23:16
Tu pourras ensuite décortiquer cet excellent code pour apprendre la programmation en Delphi.
Bonne chance !
14 mars 2015 à 22:45
Tu devrais mettre un point d'arrêt au moment ou le programme enregistre le retour de cette boite de dialog, regarder le format de la chaine, en espionnant le contenu de la variable en question, et mettre ton chemin à la place au bon format.
21 oct. 2007 à 10:10
@ Cirec, bravo pour ce logiciel qui pourra être personnalisé.
Au démarrage de l'application, je pense que ce serait une idée de ne pas avoir accès aux boutons 'Start, Stop et reset) avant d'avoir choisis les photos.
Par contre, après un 1er diaporama et si on veut changer de directory mais qu'après avoir ouvert le dialogue on décide d'annuler, il y a un sérieux bug.
@ Florent, décidément tu maitrises sérieusement le bitmap.
@+,
Cincap
27 août 2006 à 18:54
Bravo et merci
Tout comme Francky23012301, je mets un 10 / 10
22 août 2006 à 16:58
Bien Bien tout ca : une visionneuse avec des chtit effets visuels bien sympathique.
Code : Propre et fluide.
Allez un petit 10/10.
17 août 2006 à 18:10
je n'ai pas eu trop le temps de voir ton code, mais le résultat est magnifique. Bravo à toi.
Thierry
15 août 2006 à 02:23
Et d'excellente qualité !
Une suggestion : dans la capture, il faudrait présenter une véritable photo (paysage par exemple) sinon elle n'incite pas trop à s'y intéresser avec la capture que tu présentes actuellement.
Je mets 10 bien sûr !
14 août 2006 à 20:58
14 août 2006 à 20:52
14 août 2006 à 19:33
Merci
@+
14 août 2006 à 18:44
>> Tu rigoles, il est meilleur que le tien ^^
Mouais c'est ça, ma carte graphique est trop puissante pour ton programme ... mdr
En plus, e remarque d'apres la capture que tu te sert du compte administrateur. C'est pas bien du tout ça ^^ lol
Pour TPath, comme je le disais, j'étais dans les nuages à ce moment là.
Pour le contructeur, par contre, je ne suis pas d'accord. AOwner est de type TComponent. C'est sur que si tu le pose sur une fiche, ce sera forcément un TWinControl puisque c'est la fiche qui sera le propriétaire. Et du coup, l'animation se fera uniquement sur la fiche. Donc ce n'est pas la bonne méthode. En même temps, je n'ai pas d'autre idée donc ... ben laisse comme ça quoi !
"Merci beaucoup à Florenth pour l'intérêt que tu portes à cette source."
>> Ca fait partie des rares sources qui utilisent des objets, qui est faite pour les autres et qui en plus est plutot novatrice. A part pour l'autre qui va se faire bannir, évidemment que cette source intéresse du monde. Par contre, elle est peut-être un peu compliquée pour les débutants, c'est pour cela qu'elle n'est que peu commentée
A+
14 août 2006 à 16:04
D'ailleurs l'aide de Delphi dit ceci :
Description
Les contrôles fenêtrés sont des contrôles qui :
Peuvent recevoir la focalisation pendant l'exécution de l'application.
Les autres contrôles peuvent afficher des données, mais l'utilisateur ne peut interagir avec un contrôle que
s'il s'agit d'un contrôle fenêtré.
Peuvent contenir d'autres contrôles.
Un contrôle contenant d'autres contrôles est un parent. Seul un contrôle fenêtré peut être le parent d'un ou
de plusieurs contrôles enfant.
Disposent d'un handle de fenêtre.
Un handle de fenêtre est l'identificateur fourni pour une fenêtre par Windows. Les contrôles fenêtrés peuvent
représenter des fenêtres contrôle standard fournies par l'environnement Windows ou des fenêtres personnalisées
définies par l'application.
Donc je me dit à partir du moment ou tu peux poser le composant celui qui l'accèpte est forcément un TWinControl ou enfant ?
Et de plus la méthode que tu proposes limite l'utilisation à un Panel alors que la je peut le mettre ailleurs (Form par Ex.)
Je vais donc encore réfléchir à ce problème ...
Pour la création avec Nil c'est une habitude que j'ai pris ce que je crée manuellement je le libère manuellement (bon c'était pas faux mais inutile)
En ce qui concerne TPath :
Comme le constructeur et le Destructeur ne sont pas surchargés et qu'ils sont vide au départ
je n'ai rien mis...
Et dans les sources de Delphi j'ai vu des utilisations identiques donc ...
Sinon pour le bug d'affichage que tu as avec les Slides ... ce doit être chez toi, moi j'ai pas ce phénomène ... jette ton jouet et achète toi un vrai PC ... lol
Non ... un peut de sérieux ... m'enfin !!!
Ah oui j'oubliais ...
J'ai déclarer une Fonction externe AlphaBlend
qui existe depuis D4 dans Windows.pas mais comme MS à fait des changement dans les Dll système (entre les versions) aujourd'hui cette fonction n'est plus accessible depuis D4 et peut être d'autres versions
Avant AlphaBlend se trouvait dans "gdi32.dll" et maintenant elle se trouve dans "msimg32.dll" ?
Ceci explique pourquoi avoir re-déclarer cette fonction
ps : Merci beaucoup à Florenth pour l'intérêt que tu portes à cette source.
Voilà amusez-vous bien
@+
Cirec
14 août 2006 à 11:56
- Pourquoi mettre "nil" comme paramètre AOwner quand tu construit tes TcrIMGPanel ? Après tout, comme c'est un composant qui les possède, tu pourrais mettre "Self". Comme ça, pas besoin de les détruire (tu te souviens ??)
- Et d'ailleurs, que fait ce "SlideShow.Free" dans le FormClose ?? Vire moi ça tout de suite !!!! C'est un composant donc il se détruit AUTOMATIQUEMENT (si tu as mis autre chose que nil comme Owner) et c'est le cas.
- "FDisplay[I].parent := aOwner as TWinControl" Et si aOwner n'est pas un TWinControl ? Tu l'as dans le baba ! Il faut que tu mettes une propriété publiée "PanelParent: TWinControl" avec un getter et un setter qui l'affecte aux deux panels de ton array. (oui je te l'accorde, ça fait un peu lourd) Au passage, array[Boolean] of ... je trouve cela très très bien pensé.
- Il est crée et détruit où et quand ton TPath ? Je ne vois pas (là par contre, ça doit être moi qui suis bigleux)
Bon, je crois que c'est tout ! lol
14 août 2006 à 11:42
Après vérification, tous ceux qui ont le parametre AW_SLIDE sont concernés donc c'est surement dû à la présence de ce flag.
Pour asSLeft, asSright, asSTop et asSBottom, l'effet rand bien, mais pour ceux qui proviennent d'un coin (les 4 autres), je trouve que cela rend bof bof pour ne pas dire plus !
Donc ce n'est peut être pas un bug mais juste une option que je trouve "moche" (bon, c'est exagéré bien sûr ^^)
Bon sinon, quelques suggestion auniveau du code et des fonctionnalités :
- Si tu ne mets rien dans Paint(), tu n'es pas obligé de le déclarer car il est "virtual" par défaut dans TCustomControl.
- Je trouve que ta propriété NameLabel n'est pas une bonne idée. En effet, tu figes l'utilisation de ce composant avec un label pour afficher le nom de la photo (ou ne pas en mettre). Moi j'aurais vu ça différement avec une propriété "ImageName: string read FImageName;" que tu remplis dans DoAnimate() et un évenement "OnImageChange: TNotifyEvent read FOnChange write FOnChange;" que tu appelles aussi dans DoAnimate() juste après avoir changé la propriété. Comme ça, libre à nous d'utiliser ou non l'évenement (en plus comme c'est un TComponent, c'est accessible directement depuis l'inspecteur d'objets) pour mettre à jour le composant de notre choix et d'afficher au besoin, par exemple, seulement de nom de la photo sans les répertoires. Chose impossible à faire avec ton implémentation.
A +
Florent
13 août 2006 à 22:58
(En faite ça ne marchait pas c'est en reconstruisant que je m'en suis apperçu j'avais juste fait Run "F9")
par contre pour bug
j'ai pas ce phénomène chez moi ?
Peut être ta carte vidéo ?
Essaye un DoubleBuffered !
C'est avec la nouvelle version que tu as ce souci ?
13 août 2006 à 21:57
Pour mieux le voir, met à AnimateSpeed une valeur élevée.
Ensuite, tu règles animate type à SBottomLeft (y'en a d'autres, d'ailleurs, je crois que ça concerne tous ceux qui commencent par S et qui ont Top et/ou Left) et tu verras lors de la transition qu'il y a un rectangle de couleur clButtonFace qui se trouve à droite.
Tout ceci en mode proportionnel bien sûr.
Je crois savoir d'où ça vient (du panel forcément !) mais pas comment y résoudre.
Sinon oui, niveau conception, c'est OK. Le composant, ce sera pratique pour toi comme ça tu n'auras pas à le créer dans tes futurs programmes.
Par contre, dans l'unité UPath, à partir de la ligne 154, tu ne peux pas concaténer sLineBreak sans l'opérateur "+".
Tu peux faire :
- 'Salut'#10#13'C''est florent !'
mais pas
- 'Salut'sLineBreak''C''est florent !'
Il faut mettre
- 'Salut' + sLineBreak' + 'C''est florent !'
Bizarre que chez toi ça marche ... (d'ailleurs, dans la version de tout à l'heure, c'était correct)
13 août 2006 à 21:35
j'avais pas pensé à aller voir la MSDN ...
Dommage pour AW_BLEND mais bon il faudra bien faire avec ...
Sinon as-tu essayé depuis ?
13 août 2006 à 21:04
Michèle, pour quelqu'un qui fait (est sensé faire) des reportages et qui utilise Delphi pour les représenter, tu ne trouve pas bizarre que ce code ne t'intéresse pas ?
C'est vrai que : "Attention ! Ce code utilise une API !"
Cirec, pour le AW_BLEND, c'est pas la peine d'essayer ça ne marche ra pas. Voila ce que dit la MSDN la dessus : "AW_BLEND uses a fade effect. This flag can be used only if hwnd is a top-level window."
13 août 2006 à 19:52
Comme toujours le loup rôde ...
Quand on ne comprend pas la programmation on ne peut pas apprécier ...
Si c'est pas du ("Image1.Left := Image1.Left + 1") c'est fini ... tu paniques c'est trop compliqué !!!
/Wolf_Hunter
Sinon nouvelle version ...
Correction du défaut de rafraîchissement
et sur les conseils de Florenth :
TcrImgPanel hérite directement de TCustomControl
TcrSlideShow hérite de TComponent avec possibilité de l'installer
le fichier DPK n'est pas fournis (je n'ai pas testé l'installation)
Suppression du StretchDraw remplacé StretchBlt en Halfton (Merci à DrJérome pour l'astuce)
voilà testez et ...
@+
Cirec
13 août 2006 à 16:40
Pour BIF_NEWDIALOGSTYLE, oui oui, j'ai remarqué avec ton autre source.
Et pour TCustomControl au lieu de TCustomPanel, tu n'as que ça à changer dans la déclaration et tout le reste fonctionne parfaitement. Magique !
13 août 2006 à 12:33
ca a toujours été le gros problème d'AnimateWindow... Dommage...
13 août 2006 à 12:30
Quelques remarques cependant:
- Pourquoi dériver TcrImgPanel de TCustomPanel alors que TcustomControl me parait mieux. Je n'ai pas testé mais peut être quel AW_BLEND fonctionne avec TCustomControl.
"Le fait d'avoir dérivé TcrSlideShow de TObject n'est peut être pas la bonne méthode ?"
>> Disons que tu aurais pu le faire dériver de TComponent ce qui aurant permi un mode design-time 8pour ceux qui l'installent) alors qu là, tu te reduit au mode run-time (création dynamique)
Sinon :
- ParentBackground n'existe pas sous D6
- Je n'ai pas la constante BIF_NEWDIALOGSTYLE (en l'enlevant, ça fonctionne parfaitement)
- StretchDraw, c'est bof. StretchBlt, c'est mieux (un peu plus lent par contre). Le best étant les méthodes de la librairie GraphicEx.
- AnimateWindow "vole" la main au programme ce qui veut dire qu'il est impossible de modifier une des propriétés en cliquant sur les composant de la fiche pendant qu'une animation est en cours. Mais là, il n'y a rien à faire, sauf threader (et encore, je n'ai pas testé non plus)
Je regarde le code plus en détails et je t'en dit des nouvelles.
En tout cas l'idée est novatrice. Je n'avais jamais pensé à cette utilisation de AnimateWindow()
13 août 2006 à 10:02