COMPOSANT POUR DÉPLACER ET REDIMENSIONNER LES AUTRES À L'EXÉCUTION
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 2014
-
4 mars 2008 à 16:46
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 2016
-
18 mars 2008 à 00:19
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 18 mars 2008 à 00:19
Bonjour,
faut pas être jaloux the Jos :p
Cette source je la trouve très bien, 9/10 !
Moi je ne comprends pas trop comment faire un composant... ne peut-on pas en faire un entièrement nouveau ? sans rien ? faut-il choisir un type ancêtre ? ...
Enfin bon :)
Cordialement, Bacterius !
The Jos
Messages postés2Date d'inscriptionmercredi 6 décembre 2006StatutMembreDernière intervention14 octobre 2016 10 mars 2008 à 20:11
Bounjour à tous
Pour info il y a longtemps j'avais fait un composant comme ça qui permettait de redimensionner et de déplacer n'importe quel contrôle a l'éxcécution et sans clipping. Je vous donne le lien http://herea.soft.free.fr/Unites.htm le compo s'appelle TMRControl. Y a un projet exe a l'intérieur pour démo.
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 9 mars 2008 à 22:10
Comme ça, on a le choix.
Bravo à tous les deux.
Fred_Ca_Pulse
Messages postés20Date d'inscriptionmercredi 15 mars 2006StatutMembreDernière intervention19 juin 2008 4 mars 2008 à 18:09
Un oubli ... qui ne nuit pas au fonctionnement ... mais c'est mieux pour tester.
procedure TForm1.FormCreate(Sender: TObject);
begin
MoveAndResize1 := MoveAndResize.TMoveAndResize.Create( Self );
// Oubli ... en création dynamique du composant ... rien n'est stocké !!!
MoveAndResize1.OnMove := MoveAndResizeMoveOrResize;
MoveAndResize1.OnResize := MoveAndResizeMoveOrResize;
end;
Désolé
Fred_Ca_Pulse
Messages postés20Date d'inscriptionmercredi 15 mars 2006StatutMembreDernière intervention19 juin 2008 4 mars 2008 à 18:06
Salut Mauricio
Effectivement tu as raison, j'avais même déjà testé ton compo à l'époque ( je m'en souvenais même plus ) : il marche super bien ... sauf un bug de dessin sur les TLabel.
Je viens de tester à nouveau ton TcyResizer : j'ai toujours le même bug en ayant changé de machine et de système ( Vista maintenant ).
Ce bug provient réellement de l'activation de la vérification des limites sur la ligne 233 - FControl.Perform(WM_PAINT, DC, 0) dans la procédure PAINT_OTHER_CONTROLS.
Voici une proposition de modification qui fonctionne pour moi :
{$IFOPT R+}
{$R-}
FControl.Perform(WM_PAINT, DC, 0);
{$R+}
{$ELSE}
FControl.Perform(WM_PAINT, DC, 0);
{$ENDIF}
Bon, bref, j'aurais effectivement pu me passer de réécrire mon composant ... tant pis, il est là maintenant et j'espère qu'il pourra servira aux débutants, peut-être un peu perdus dans ton code de niveau plus avancé.
18 mars 2008 à 00:19
faut pas être jaloux the Jos :p
Cette source je la trouve très bien, 9/10 !
Moi je ne comprends pas trop comment faire un composant... ne peut-on pas en faire un entièrement nouveau ? sans rien ? faut-il choisir un type ancêtre ? ...
Enfin bon :)
Cordialement, Bacterius !
10 mars 2008 à 20:11
Pour info il y a longtemps j'avais fait un composant comme ça qui permettait de redimensionner et de déplacer n'importe quel contrôle a l'éxcécution et sans clipping. Je vous donne le lien http://herea.soft.free.fr/Unites.htm le compo s'appelle TMRControl. Y a un projet exe a l'intérieur pour démo.
A+
http://herea.soft.free.fr (racine du site)
9 mars 2008 à 22:10
Bravo à tous les deux.
4 mars 2008 à 18:09
procedure TForm1.FormCreate(Sender: TObject);
begin
MoveAndResize1 := MoveAndResize.TMoveAndResize.Create( Self );
// Oubli ... en création dynamique du composant ... rien n'est stocké !!!
MoveAndResize1.OnMove := MoveAndResizeMoveOrResize;
MoveAndResize1.OnResize := MoveAndResizeMoveOrResize;
end;
Désolé
4 mars 2008 à 18:06
Effectivement tu as raison, j'avais même déjà testé ton compo à l'époque ( je m'en souvenais même plus ) : il marche super bien ... sauf un bug de dessin sur les TLabel.
Je viens de tester à nouveau ton TcyResizer : j'ai toujours le même bug en ayant changé de machine et de système ( Vista maintenant ).
Ce bug provient réellement de l'activation de la vérification des limites sur la ligne 233 - FControl.Perform(WM_PAINT, DC, 0) dans la procédure PAINT_OTHER_CONTROLS.
Voici une proposition de modification qui fonctionne pour moi :
{$IFOPT R+}
{$R-}
FControl.Perform(WM_PAINT, DC, 0);
{$R+}
{$ELSE}
FControl.Perform(WM_PAINT, DC, 0);
{$ENDIF}
Bon, bref, j'aurais effectivement pu me passer de réécrire mon composant ... tant pis, il est là maintenant et j'espère qu'il pourra servira aux débutants, peut-être un peu perdus dans ton code de niveau plus avancé.
A+