Modifications relatives aux contrôles grille FireMonkey dans Berlin

De RAD Studio
Aller à : navigation, rechercher

Remonter à Nouveautés de Berlin


Dans Berlin, la logique de présentation et le modèle de données des contrôles grille ont été détachés des contrôles. Cette séparation rend possible la prise en charge des présentations natives des contrôles grille.

En conséquence, l'API des contrôles grille (TCustomGrid et ses sous-classes, TGrid et TStringGrid) a été modifiée. Lorsque vous effectuez la migration vers Berlin d'un ancien projet qui utilise des contrôles grille, vous devez tenir compte de ces modifications de l'API.

Nouveau modèle de données

Les contrôles grille ont une nouvelle propriété Model qui pointe sur leur modèle de données. C'est une instance de TGridModel ou une sous-classe (par exemple TStringGrid utilise TStringGridModel). Certaines des propriétés des contrôles grille, comme Options, ont été déplacées vers leur modèle de données, et ne figurent dans les contrôles grille qu'en tant que miroir de leurs propriétés équivalentes dans le modèle de données.

Deux nouvelles options ont également été implémentées, TGridOption.AutoDisplacement et TGridOption.CancelEditingByDefault, pour faciliter l'édition des cellules de grille sur un périphérique mobile doté d'un clavier virtuel.

Nouveaux contrôles de présentation

Le changement le plus notable concerne l'ajout d'une nouvelle unité, FMX.Grid.Style. Sa classe TStyledGrid implémente la présentation FireMonkey standard pour les contrôles grille. Vous devez inclure la nouvelle unité FMX.Grid.Style dans l'une des clauses uses de chacun de vos anciens projets.

Remarque : Cette unité est automatiquement incluse dans les nouveaux projets.

Vous ne devez pas travailler directement avec la classe de présentation mais utiliser plutôt le modèle de données.

Autres modifications du contrôle grille

Outre, la séparation du modèle de données et la séparation de la présentation, les contrôles grille ont subi quelques modifications supplémentaires.

De nouveaux membres de l'API ont été ajoutés aux contrôles grille : CellByPoint, CellRect, CanEdit, Col, DisplayCells, LeftColumn, RightColumn, Row, ScrollToSelectedCell, SetTopLeft.

TStringGrid a également bénéficié de nouvelles propriétés pour la prise en charge de l'aide contextuelle : HelpContext, HelpKeyword, HelpType.

Les contrôles grille ne sont plus responsables de leur présentation. En conséquence, OnApplyStyleLookup est uniquement pris en charge par TStringGrid et aucun contrôle grille ne publie désormais les événements suivants : OnCanFocus, OnClick, OnDblClick, OnDragEnter, OnDragLeave, OnDragOver, OnDragDrop, OnDragEnd, OnEnter, OnExit, OnKeyDown, OnKeyUp, OnMouseDown, OnMouseEnter, OnMouseLeave, OnMouseMove, OnMouseUp, OnMouseWheel, OnResize.

Remarque : Ces événements ne sont pas publiés, mais ils sont publics, ce qui signifie que vous pouvez les utiliser à l'exécution. Toutefois, dans la mesure du possible, il est préférable d'utiliser des événements du modèle de grille.

Modifications relatives aux colonnes

Deux nouveaux types de colonnes ont été ajoutés :

Certains types de colonne existants ont été améliorés :

TColumn a subi quelques modifications mineures concernant son comportement :

  • Certaines nouvelles propriétés facilitent les opérations dans l'éditeur de cellules : CanEdit, RefreshEditor, ValidChar.
  • La propriété InEditMode possède maintenant une valeur booléenne, et il existe une nouvelle propriété, EditorState, qui fournit des détails supplémentaires.
  • La propriété ApplyImmediately n'est plus disponible. Une option similaire (mais non identique) a été ajoutée : TGridOption.AutoDisplacement. Vous pouvez ajouter cette nouvelle option aux options du modèle des contrôles grille.

TColumn n'est plus responsable de sa présentation. En conséquence, TColumn possède désormais une propriété Model qui pointe sur le modèle de données de sa grille parent et une propriété PresentedControl qui pointe sur le contrôle de présentation. Toutefois, de nombreux événements et propriétés de TColumn ont été remplacés ou ne sont plus pris en charge :