IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

Creer un composant qui contient un ensemble de propriétés, un TBindNavigator colorisé


Sujet :

Composants FMX Delphi

  1. #21
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 855
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 855
    Points : 13 659
    Points
    13 659
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    si par exemple, on veut par la suite internationaliser facilement i.e avec DKLang, les chaines étant dans le dfm, elles seront extraites plus facilement
    Ca devrait être des constantes dans un bloc ResourceString.

    Imagine que tu trouves une faute d'orthographe que tu veuilles corriger dans une version 2. Si le texte est systématiquement sauvé dans le dfm (même sans modification par l'utilisateur final) la faute subsistera. Il n'y a qu'à l'ajout d'un nouveau composant ou par modification manuelle du dfm (suppression de la propriété) que le texte apparaitra corrigé.

  2. #22
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 365
    Points : 41 919
    Points
    41 919
    Billets dans le blog
    65
    Par défaut
    résultat du jour
    Nom : Capture.PNG
Affichages : 89
Taille : 81,3 Ko

    Je ne suis pas encore satisfait à 100% de ma méthode d'éclaircissement, surtout visible sur le bleu mais les propriétés ThemeSensitive et UseColors fonctionnent correctement. Concernant les Hin

    Par contre concernant les Hints, c'est mitigé, seuls les boutons actifs en affiche
    design test
    Nom : Capture.PNG
Affichages : 81
Taille : 16,3 Ko

    runtime
    Nom : navigator.gif
Affichages : 89
Taille : 203,6 Ko

    P.S. Pour répondre @AndnotOr il faut d'abord que je porte DKLang vers ma version 12.1 comme j'ai pu le faire pour la version 11 ou que je fasse un test de mon composant sur D11
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #23
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 401
    Points : 653
    Points
    653
    Par défaut
    Pour le Hint c'est le comportement normal pour tous les boutons, si l'élément n'est pas actif il n'y a pas d'affichage du hint

  4. #24
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 365
    Points : 41 919
    Points
    41 919
    Billets dans le blog
    65
    Par défaut
    @exoseven Oui, c'est que j'ai compris. Toutefois, je me demande s'il ne serait pas possible de jouer sur le Hint du BindNavigator ? Mais avant, je veux voir ce que cela pourrait donner sur Android, sans système de pointage, les hints me semblent inutile une utilisation de $IFDEF dans un composant c'est possible ? Il va falloir que je fouille dans les sources !

    Après les Hints dont voici la version actuelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
      TBtnsHints = class (TPersistent)
      private
        FOwner : TColoredBindNavigator;
        FBtnHints :  Array [0..11] of String;
        function GetHint(const index : Integer) : String;
        function HintisStored(const index: Integer) : Boolean;
        procedure SetHint(const index : Integer; const Value : String) ;
      public
        constructor Create(aOwner : TColoredBindNavigator);
        destructor Destroy; override;
      published
        property First : String index 0 read GetHint write SetHint stored HintisStored;
        property Prior : String index 1 read GetHint write SetHint stored HintisStored;
        property Next : String index 2 read GetHint write SetHint stored HintisStored;
        property Last : String index 3 read GetHint write SetHint stored HintisStored;
        property Insert : String index 4 read GetHint write SetHint stored HintisStored;
        property Delete : String index 5 read GetHint write SetHint stored HintisStored;
        property Edit : String index 6 read GetHint write SetHint stored HintisStored;
        property Post : String index 7 read GetHint write SetHint stored HintisStored;
        property Cancel : String index 8 read GetHint write SetHint stored HintisStored;
        property Refresh : String index 9 read GetHint write SetHint stored HintisStored;
        property ApplyUpdate : String index 10 read GetHint write SetHint stored HintisStored;
        property CancelUpdate : String index 11 read GetHint write SetHint stored HintisStored;
      end;
     
     
    { TBtnsHints }
    constructor TBtnsHints.Create(aOwner: TColoredBindNavigator);
    begin
      FOwner:=aOwner;
    //  for var i:=0 to 12 do FBtnHints[i]:='';
    end;
     
    destructor TBtnsHints.Destroy;
    begin
      inherited;
    end;
     
    function TBtnsHints.GetHint(const index: Integer): String;
    begin
    result:=FBtnHints[index];
    end;
     
    function TBtnsHints.HintisStored(const index: Integer) : Boolean;
    begin
    Result := FBtnHints[index]<>EmptyStr;
    end;
     
    procedure TBtnsHints.SetHint(const index: Integer; const Value: String);
    begin
    FBtnHints[index]:=Value;
    end;
    écriture qui va certainement me pousser à modifier la classe TGlyphColors en la simplifiant (utilisation des index),

    et pour prendre en compte la première demande de papyvore concernant les couleurs de fond, j'ai ajouté une nouvelle propriété de type TBrush plutôt que TAlphaColor ce qui ouvre un plus grand champ de possibilité (si le style le permet c'est à dire si la ressource 'background' est bien un TRectangle et pas un StyleObject, de moins en moins fréquent)

    Voilà ce que cela peut donner
    Nom : Capture.PNG
Affichages : 80
Taille : 12,3 Ko
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #25
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 365
    Points : 41 919
    Points
    41 919
    Billets dans le blog
    65
    Par défaut état d'avancement, test avec changement de style (windows)
    Bonjour,

    un nouveau programme test pour vérifier le cas d'un changement de style au runtime
    Nom : Capture.PNG
Affichages : 60
Taille : 74,3 Ko

    fait à la va-vite pour ce qui est du changement de style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    procedure TMainForm.Switch1Click(Sender: TObject);
    begin
      Datas.clair := not Datas.clair;
      if Datas.clair then
      begin
        StyleBook := TStyleBook(Datas.StyleBook2);
        lblDark.TextSettings.Font.Style := [];
        LblLight.TextSettings.Font.Style := [TFontStyle.fsBold];
      end
      else
      begin
        StyleBook := TStyleBook(Datas.StyleBook1);
        lblDark.TextSettings.Font.Style := [TFontStyle.fsBold];
        LblLight.TextSettings.Font.Style := [];
      end;
    end;
    l'utilisation de la propriété de StyleBook plutôt que le TStyleManager m’ennuie.
    Ce code fonctionne correctement sous Android
    Nom : Capture.PNG
Affichages : 61
Taille : 53,4 Ko
    Toutefois, j'utilise les styles "standard" proposés dans C:\Users\Public\Documents\Embarcadero\Studio\23.0\Styles au sein d'un datamodule (light.style et goldengraphite.style)
    Nom : Capture.PNG
Affichages : 59
Taille : 5,2 Ko

    Mais, vous avez peut-être remarqué que mon affichage dans l'Ide utilise le style calypso (spécifique windows ou plutôt chargé à partir de C:\Users\Public\Documents\Embarcadero\Studio\23.0\Styles\Windows) obtenu via Getit, style qui évidemment ne fonctionne pas pour Android (hé oui la gestion des styles c'est un peu casse-tête)

    Ceci pour avoir un style au design. C'est au onCreate que le style sombre est appliqué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TMainForm.FormCreate(Sender: TObject);
    var
      I: Integer;
    begin
      StyleBook := TStyleBook(Datas.StyleBook1);
    //  TStyleManager.SetStyle(TStyleBook(Datas.StyleBook1));
      lblDark.TextSettings.Font.Style := [TFontStyle.fsBold];
      FDMemTable1.Open;
      for I := 1 to 3 do
      begin
        FDMemTable1.AppendRecord([I, 'Category ' + I.ToString]);
      end;
    end;
    J'ai d'utiliser le TStyleManager.TrySetStyleFromResource mais l'échec de son utilisation avec Android m'a refroidi.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #26
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 41
    Points : 54
    Points
    54
    Par défaut
    bonjour
    style qui évidemment ne fonctionne pas pour Android
    il y a pourtant un Calypso fmx , il me semble fonctionner sous android

  7. #27
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 365
    Points : 41 919
    Points
    41 919
    Billets dans le blog
    65
    Par défaut
    Oui, tout à fait, mais, ce genre de style, téléchargé via Getit et, si je me souviens bien, disponible uniquement pour les utilisateurs enregistrés, est spécifique pour chaque plateforme.
    Si tu utilises dans ton design windows Calypso et que tu ne fais rien de plus, tu te retrouve (sous autres plateformes avec un écran "classique windows")

    Il faut que je fasse un code plus complexe (inspiré de mon source) soit 1 DataModule général+un datamodule par plateforme pour gérer ce truc. La rédaction en est en cours .

    J'en profite pour indiquer que j'ai déposé le source du composant dans un dépôt GitHub bien qu'il y ait encore quelques trucs qui me déplaisent (voir les issues) et qu'il ne soit encore que peu documenté.
    Comme je ne suis pas un fortiche de la documentation je vais, sans vergogne, utiliser l'AI intégrée de ma version 12.2, pour l'instant tout à été écrit avec une version 12.1 pour coller au plus près de la version Community.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #28
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 41
    Points : 54
    Points
    54
    Par défaut
    je "teste" ton composant , d'abord merci et bravo .
    Mais le hint ne marche pas j'ai bien activé ShowHint (par ce que ShowHints pas trouvé) j'ai comme dans ta démo ajouté un bouton pour activer désactiver showsHint
    sans résultat quelque chose à faire que j'ai sans doute pas compris
    pourtant faisant du pas à pas je passe bien par SetHint et FBtnHints[index]:=Value à bien les valeurs que j'ai entré

  9. #29
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 365
    Points : 41 919
    Points
    41 919
    Billets dans le blog
    65
    Par défaut
    Étrange, car je ne pense pas avoir modifié le composant, du moins cette partie, depuis le gif que j'ai pu joindre plus haut.
    Mais, oops, si j'ai dû en faire une car un nouveau programme test le prouve
    Bon, cela m'apprendra à faire attention quand je fais des tentatives d'ordre dans les propriétés et que je ne reviens pas au truc initial

    P.S. le code du bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.btnHintsClick(Sender: TObject);
    begin
     ColoredBindNavigator1.showhint:=not ColoredBindNavigator1.showhint;
     
     if ColoredBindNavigator1.ShowHint then
      begin
        ColoredBindNavigator1.SetButtonHints;
        TButton(Sender).Text:='Hide Hints';
      end
      else TButton(Sender).Text:='Show Hints';
    end;
    Pour les corrections du composant. Il faut ajouter dans le Create, après Applycolor, l'appel à SetButtonHints.
    Ce ne sera pas suffisant, la procédure SetButtonHints est à modifier également selon mes derniers essais.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #30
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 41
    Points : 54
    Points
    54
    Par défaut
    en ajoutant ColoredBindNavigator1.SetButtonHints; dans le FormCreate ça marche sinon ça ne marche qu’après avoir activé le bouton ShowHint.
    si on ne met pas ColoredBindNavigator1.SetButtonHints; dans le FormCreate, au pas à pas "if not self.ShowHint then exit;" self.ShowHint est false alors qu ShowHint de la forme est true

  11. #31
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 365
    Points : 41 919
    Points
    41 919
    Billets dans le blog
    65
    Par défaut
    Oui, c'est là que le bât blesse. En dormant dessus, j'ai même pensé que le parenshow aussi avait son mot à dire
    Ce sera mon "travail" du jour.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/10/2008, 01h02
  2. Créer une feuille qui contient une seule page seulement
    Par k-eisti dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/05/2007, 18h38
  3. Comment creer une BD qui contient d'image
    Par mamou30 dans le forum Bases de données
    Réponses: 1
    Dernier message: 19/03/2007, 17h36
  4. [VBA-E]Créer une feuille qui contient du code
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 04/04/2006, 16h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo