Voir le flux RSS

Blog de Serge Girard (aka SergioMaster)

[FMX] Modifier la hauteur (et accessoirement d'autres propriétés) de la boite de recherche d'une liste

Noter ce billet
par , 29/01/2019 à 13h09 (469 Affichages)
Le composant TListView offre une possibilité intéressante : l'adjonction d'une boite de recherche en activant la propriété SearchVisible
Malheureusement, à la conception d'un écran windows sans style particulier cette boite peut sembler riquiqui (hauteur par défaut d'un TEdit) par rapport aux éléments affichés
Nom : Capture.PNG
Affichages : 1529
Taille : 2,6 Ko
Ma première approche à ce petit (c'est le cas de le dire) problème a été de me pencher sur la partie style mais, j'ai eu beau fouiller : pas d'objet correspondant !
En fait, le style d'une boite de recherche n'est que celui d'un TEdit
Donc une démarche possible est de créer un style personnalisé de TEdit et de l'appliquer.
Facile à dire mais pour l'appliquer il faut accéder à une variable privée du composant TListView : FSearchEdit.
Il faut donc, en plus de créer un style personnalisé créer un Helper pour accéder à cette propriété !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
THackListView = Class(TListViewBase);
et l'utiliser ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
THackListView(ListView1).FSearchEdit.StyleLookup := 'monSearchStyle';
Bref, beaucoup d'étapes pour une modification "esthétique".

Autre solution qui n'implique pas les styles ni de "hacking" : accéder à la boite de recherche directement.

Au préalable, ajouter FMX.SearchBox dans la liste des uses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 if ListView1.controls[1].ClassType = TSearchBox then
  begin
    // hauteur
    if TSearchBox(ListView1.controls[1]).Height<30 then // certains styles ou cibles proposent une hauteur plus importante  
      TSearchBox(ListView1.controls[1]).Height:=30;
  end;
Pourquoi l'indice 1 ? J'ai pu remarquer après différents tests qu'il s'agissait toujours de cet élément, peut-être est-ce dut à la propriété SearchAlwaysOnTop
par précaution on pourrait utiliser ce code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
var AControl : TControl;
begin
...
For AControl in ListView1.Controls do
 if AControl.ClassType= TSearchBox  then
   begin
      if TSearchBox(Acontrol).Height<30 then
                   TSearchBox(Acontrol).Height:=30;
     Break;
  end;
Cerise sur le gâteau, il est possible d'accéder à d'autres propriétés comme la couleur de la police
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
    // couleur du texte
    TSearchBox(ListView1.controls[1]).StyledSettings:=TSearchBox(ListView1.controls[1]).StyledSettings - [TStyledSetting.FontColor];
    TSearchBox(ListView1.controls[1]).TextSettings.FontColor:=TalphaColors.Red;
ou le texte indicatif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 TSearchBox(ListView1.controls[1]).TextPrompt:='Rechercher';
Nom : Capture2.PNG
Affichages : 46
Taille : 3,2 Ko

Envoyer le billet « [FMX] Modifier la hauteur (et accessoirement d'autres propriétés) de la boite de recherche d'une liste » dans le blog Viadeo Envoyer le billet « [FMX] Modifier la hauteur (et accessoirement d'autres propriétés) de la boite de recherche d'une liste » dans le blog Twitter Envoyer le billet « [FMX] Modifier la hauteur (et accessoirement d'autres propriétés) de la boite de recherche d'une liste » dans le blog Google Envoyer le billet « [FMX] Modifier la hauteur (et accessoirement d'autres propriétés) de la boite de recherche d'une liste » dans le blog Facebook Envoyer le billet « [FMX] Modifier la hauteur (et accessoirement d'autres propriétés) de la boite de recherche d'une liste » dans le blog Digg Envoyer le billet « [FMX] Modifier la hauteur (et accessoirement d'autres propriétés) de la boite de recherche d'une liste » dans le blog Delicious Envoyer le billet « [FMX] Modifier la hauteur (et accessoirement d'autres propriétés) de la boite de recherche d'une liste » dans le blog MySpace Envoyer le billet « [FMX] Modifier la hauteur (et accessoirement d'autres propriétés) de la boite de recherche d'une liste » dans le blog Yahoo

Mis à jour 24/02/2019 à 09h44 par SergioMaster

Catégories
Programmation , Delphi , FMX

Commentaires