Gripsplitter: un splitter avec "grippy"

Soyez le premier à donner votre avis sur cette source.

Vue 4 638 fois - Téléchargée 532 fois

Description

Ce package introduit un nouveau composant: le TGripSplitter.

Celui-ci a un fonctionnement assez différent du TSplitter standard. Pour l'utiliser, il faut déjà créer un contrôle quelconque, dont on met la propriété "Align" à alLeft, alRight, alBottom ou alTop (si ce n'est pas le cas, le GripSplitter associé ne fera rien). Ensuite, on peut créer un TGripSplitter, dont on assigne la propriété "Associate" au composant précédemment créé. Automatiquement, le GripSplitter va se mettre au bon endroit par rapport au composant, (parent et alignement), et permettre de le redimensionner. En mode "design" (c'est à dire dans Delphi), on peut manipuler le GripSplitter avec le bouton droit de la souris (csDesignInteractive in ControlState).

Le GripSplitter (voir capture et exemple) possède un bouton central qui permet de replier/déplier le contrôle "Associate". La propriété qui indique si le GripSplitter est replié est "Snapped".

Les thèmes de Windows XP sont supportés par le composant, il faudra utiliser un TXPManifest pour qu'ils soient utilisés.

Source / Exemple :


TGripSplitter=class(TCustomControl)
  public
    property Vertical:Boolean read GetVertical;                                         //Vertical or not (read-only, the associate align determines it)
  published
    property Associate:TControl read FAssociate write SetAssociate;                     //Associate control

    property Size:Integer read FSize write SetSize default 15;                          //Width if vertical, Height if horizontal

    property MinSplitSize:Integer read FMinSplitSize write SetMinSplitSize default 50;  //Min associate size
    property MaxSplitSize:Integer read FMaxSplitSize write SetMaxSplitSize default 0;   //Max associate size

    property Snapped:Boolean read FSnapped write SetSnapped;                            //Associate is "snapped" against parent border

    property Transparent:Boolean read FTransparent write SetTransparent;                       //Transparent or not
    property SizingCursor:TCursor read FSizingCursor write SetSizingCursor default crHSplit;   //Sizing mous cursor
    property UseThemes:Boolean read FUseThemes write SetUseThemes default True;                //Use Windows themes
    property Beveled:Boolean read FBeveled write SetBeveled;                                   //Draw a frame rect

    property OnResize:TNotifyEvent read FOnResize write SetOnResize;                           //When resize occurs
  end;

Conclusion :


Pour tester le composant:
-Compiler et installer le package GripSplitter (dans le répertoire "lib/")
-Compiler et exécuter le programme d'exemple Project1.dpr (dans le répertoire "example/")

Le composant est niveau débutant en ce qui concerne son utilisation, le package est niveau "Expert".

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
3
Date d'inscription
dimanche 12 janvier 2003
Statut
Membre
Dernière intervention
29 août 2007

En fait je me suis contenté du dpr fourni dans le zip et comme il y avait une place vide sur la form j'ai ajouté un panel avec la propriété align à alclient pour voir si ça allait "suivre". Effectivement le panel "suit" les actions des GridSplitters, sauf si on ferme deux splitter de suite, dans ce cas le premier fermé "disparaît" avec le mémo associé. Bizarrement, ça ne plante pas et on peut continuer à jouer avec les splitters, on peut même changer l'ordre des mémos qui réapparaissent, a priori, suivant l'ordre dans lequel ils ont été fermés.
Voilà, j'espère avoir défriché un peu le terrain.
amicalement.
Messages postés
600
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1
Salut,

ça fait un moment que j'ai écrit le composant donc si tu peux, essaie de me donner plus de détails sur les conditions du bug que je puisse le reproduire.

Merci de l'avoir signalé en tout cas.

Cordialement,
Forman
Messages postés
3
Date d'inscription
dimanche 12 janvier 2003
Statut
Membre
Dernière intervention
29 août 2007

quand on ajoute sur la form restante un panel avec la propriété align à 'alclient' et qu'on joue un peu avec les splitters on fait "disparaître" un mémo... ça serait-y pas un bug ? (cela dit ça ne plante pas)
sinon c'est pas mal comme truc.
amicalement.

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.