TControlStyle

TControlStyle

TControlStyle = set of TControlStyleType;

Le rôle de TControlStyle en Free Pascal est de spécifier les comportements et les caractéristiques d'un contrôle graphique dans une application. Il s'agit d'un ensemble de styles (set) basé sur l'énumération TControlStyleType (voir ci-dessous).

Rôle

TControlStyle permet aux développeurs de définir et de modifier le comportement d'un contrôle à un niveau plus granulaire. En fonction des styles qui sont inclus dans cet ensemble, un contrôle pourra ou non :

  1. Gérer certains types d'événements (comme les clics, les doubles clics, etc.).
  2. Être interactif dans l'interface de conception (ce qui est utile pour les développeurs lorsqu'ils utilisent des outils de conception visuelle).
  3. Contrôler son apparence (comme être opaque, avoir un cadre, etc.).
  4. Fixer certaines contraintes (comme une largeur ou hauteur fixe).
  5. Intégrer des fonctionnalités spécifiques (comme afficher une image pendant une opération de glisser-déposer ou afficher un clavier virtuel lorsque le contrôle reçoit le focus).

Exemple

Lors de la création ou de la personnalisation d'un contrôle personnalisé, un développeur peut ajuster ControlStyle pour adapter le comportement du contrôle à ses besoins. Par exemple :

MyControl.ControlStyle := MyControl.ControlStyle + [csOpaque, csDoubleClicks];

Dans cet exemple, MyControl est un contrôle personnalisé et l'on ajoute les styles csOpaque et csDoubleClicks à son ControlStyle. Cela signifie que le contrôle peindra entièrement sa zone (pas de transparence) et qu'il comprendra les double-clics de la souris.

TControlStyleType

Le type énuméré TControlStyleType est utilisé pour décrire divers comportements et attributs possibles pour un contrôle visuel dans une interface utilisateur graphique (GUI). Chaque élément de l'énumération représente une fonctionnalité ou une caractéristique particulière qu'un contrôle peut avoir.

Code

  TControlStyleType = (
    csAcceptsControls,       // can have children in the designer
    csCaptureMouse,          // auto capture mouse when clicked
    csDesignInteractive,     // wants mouse events in design mode
    csClickEvents,           // handles mouse events
    csFramed,                // not implemented, has 3d frame
    csSetCaption,            // if Name=Caption, changing the Name changes the Caption
    csOpaque,                // the control paints its area completely
    csDoubleClicks,          // understands mouse double clicks
    csTripleClicks,          // understands mouse triple clicks
    csQuadClicks,            // understands mouse quad clicks
    csFixedWidth,            // cannot change its width
    csFixedHeight,           // cannot change its height (for example combobox)
    csNoDesignVisible,       // is invisible in the designer
    csReplicatable,          // PaintTo works
    csNoStdEvents,           // standard events such as mouse, key, and click events are ignored.
    csDisplayDragImage,      // display images from dragimagelist during drag operation over control
    csReflector,             // not implemented, the controls respond to size, focus and dlg messages - it can be used as ActiveX control under Windows
    csActionClient,          // Action is set
    csMenuEvents,            // not implemented
    csNoFocus,               // control will not take focus when clicked with mouse.
    csNeedsBorderPaint,      // not implemented
    csParentBackground,      // tells WinXP to paint the theme background of parent on controls background
    csDesignNoSmoothResize,  // when resizing control in the designer do not SetBounds while dragging
    csDesignFixedBounds,     // can not be moved nor resized in designer
    csHasDefaultAction,      // implements useful ExecuteDefaultAction
    csHasCancelAction,       // implements useful ExecuteCancelAction
    csNoDesignSelectable,    // can not be selected at design time
    csOwnedChildrenNotSelectable, // child controls owned by this control are NOT selectable in the designer
    csAutoSize0x0,           // if the preferred size is 0x0 then control is shrinked to 0x0, default is minimum 1x1
    csAutoSizeKeepChildLeft, // when AutoSize=true do not move children horizontally
    csAutoSizeKeepChildTop,  // when AutoSize=true do not move children vertically
    csRequiresKeyboardInput  // If the device has no physical keyboard then show the virtual keyboard when this control gets focus (therefore available only to TWinControl descendents)
    );

Membres

Voici une explication détaillée de chaque valeur dans cette énumération :

csAcceptsControls

Le contrôle peut avoir des sous-contrôles (enfants) dans l'interface de conception (designer).

csCaptureMouse

Le contrôle capture automatiquement la souris lorsqu'il est cliqué, c'est-à-dire qu'il recevra tous les événements de la souris tant qu'il est cliqué, même si le curseur est déplacé en dehors de ses limites.

csDesignInteractive

Le contrôle souhaite recevoir des événements de la souris lorsqu'il est en mode design (c'est-à-dire lorsqu'on le modifie dans l'interface de conception).

csClickEvents

Le contrôle gère les événements de clic de la souris.

csFramed

Non implémenté. Le contrôle aurait un cadre en 3D (utilisé pour indiquer une bordure visuelle).

csSetCaption

Si le nom du contrôle est identique à sa légende (Caption), changer le nom changera automatiquement la légende.

csOpaque

Le contrôle peint complètement sa zone (aucune transparence n'est laissée).

csDoubleClicks

Le contrôle comprend les double-clics de la souris.

csTripleClicks

Le contrôle comprend les triple-clics de la souris.

csQuadClicks

Le contrôle comprend les quadruple-clics de la souris.

csFixedWidth

Le contrôle a une largeur fixe, c'est-à-dire qu'il ne peut pas changer de largeur.

csFixedHeight

Le contrôle a une hauteur fixe, c'est-à-dire qu'il ne peut pas changer de hauteur. Par exemple, cela peut s'appliquer à une `TComboBox`.

csNoDesignVisible

Le contrôle est invisible dans l'interface de conception.

csReplicatable

La méthode `PaintTo` fonctionne, ce qui signifie que le contrôle peut se peindre sur un autre canevas (utilisé pour les captures d'écran ou les rendus externes).

csNoStdEvents

Les événements standard comme ceux de la souris, des touches ou des clics sont ignorés par le contrôle.

csDisplayDragImage

Pendant une opération de glisser-déposer, des images provenant d'une liste d'images de glisser-déposer (`dragimagelist`) sont affichées au-dessus du contrôle.

csReflector

Non implémenté. Indique que le contrôle répond aux messages de taille, de focus et de dialogue. Il peut être utilisé comme un contrôle ActiveX sous Windows.

csActionClient

Une action est définie pour ce contrôle, ce qui signifie que le contrôle est lié à une action (un concept qui permet de lier des événements ou des commandes à des composants GUI).

csMenuEvents

Non implémenté. Supposé gérer les événements de menu.

csNoFocus

Le contrôle ne prendra pas le focus lorsqu'il est cliqué avec la souris.

csNeedsBorderPaint

Non implémenté. Supposé indiquer que le contrôle nécessite une peinture de bordure.

csParentBackground

Sous Windows XP, ce style demande au système de peindre le fond du parent du contrôle sur le fond du contrôle, permettant une meilleure intégration visuelle avec les thèmes.

csDesignNoSmoothResize

Lors du redimensionnement du contrôle dans l'interface de conception, ne pas appeler `SetBounds` pendant le redimensionnement (réduisant les mises à jour visuelles).

csDesignFixedBounds

Le contrôle ne peut pas être déplacé ni redimensionné dans l'interface de conception.

csHasDefaultAction

Le contrôle implémente une action par défaut utile (utilisé par exemple pour l'action de validation sur un bouton).

csHasCancelAction

Le contrôle implémente une action d'annulation utile (utilisé par exemple pour l'action d'annulation sur un bouton).

csNoDesignSelectable

Le contrôle ne peut pas être sélectionné dans l'interface de conception.

csOwnedChildrenNotSelectable

Les sous-contrôles appartenant à ce contrôle ne sont pas sélectionnables dans l'interface de conception.

csAutoSize0x0

Si la taille préférée du contrôle est `0x0`, le contrôle sera réduit à `0x0`, la taille minimale par défaut étant généralement `1×1`.

csAutoSizeKeepChildLeft

Lorsque `AutoSize` est activé, les sous-contrôles ne sont pas déplacés horizontalement.

csAutoSizeKeepChildTop

Lorsque `AutoSize` est activé, les sous-contrôles ne sont pas déplacés verticalement.

csRequiresKeyboardInput

Si l'appareil n'a pas de clavier physique, cela indique qu'un clavier virtuel doit être affiché lorsque le contrôle reçoit le focus. Cela ne s'applique qu'aux descendants de `TWinControl`.

Ces différents styles sont généralement combinés en utilisant des opérateurs binaires pour former un ensemble (`set`) qui décrit les capacités et les comportements spécifiques d'un contrôle.

Vous pourriez laisser un commentaire si vous étiez connecté.