Composant pour déplacer et redimensionner les autres à l'exécution

Soyez le premier à donner votre avis sur cette source.

Vue 5 070 fois - Téléchargée 544 fois

Description

Ceci est encore une version d'un composant pour déplacer et redimensionner les autres à l'exécution.
J'avais besoin d'un composant faisant ceci facilement, j'ai trouvé la source de "bubulemaster", écrit par MARTINEAU Emeric ... mais ... pas assez fiable !

J'ai donc pris le parti de récrire le composant à partir de cette source, mais en y ajoutant ce qui me manquait :
- départ depuis un TComponent
- gestion d'un TControl et non d'un TWinControl (pour le TLabel par exemple)
- suppression des problèmes d'allocations/restitution
- nouvelles propriétés : BringToFront et Redrawing pour gestion plus fine de l'affichage
- nouvel évènement : OnMove pour retour du déplacement
- amélioration de la lisibilité (du moins me semble t'il) et optimisation du code

A noter en plus un projet de démo qui permet de compiler et d'exécuter sans installer le composant (je sais que, comme moi, nombre d'entre vous hésitent avant de tester de nouveaux composants), auquel j'ai ajouté un .dcr pour avoir une jolie icone !

Conclusion :


En attente de vos commentaires. Merci d'avance.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 9
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és 2 Date d'inscription mercredi 6 décembre 2006 Statut Membre Dernière intervention 14 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.

A+

http://herea.soft.free.fr (racine du site)
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
9 mars 2008 à 22:10
Comme ça, on a le choix.
Bravo à tous les deux.
Fred_Ca_Pulse Messages postés 20 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 19 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és 20 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 19 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é.

A+

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.