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

Soyez le premier à donner votre avis sur cette source.

Vue 4 676 fois - Téléchargée 514 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

Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
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 !
Messages postés
2
Date d'inscription
mercredi 6 décembre 2006
Statut
Membre
Dernière intervention
14 octobre 2016

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)
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
28
Comme ça, on a le choix.
Bravo à tous les deux.
Messages postés
20
Date d'inscription
mercredi 15 mars 2006
Statut
Membre
Dernière intervention
19 juin 2008

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é
Messages postés
20
Date d'inscription
mercredi 15 mars 2006
Statut
Membre
Dernière intervention
19 juin 2008

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.