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 :

TskiaLabel qui fait planter l'app au démarrage? [Android]


Sujet :

Composants FMX Delphi

  1. #1
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    2 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 2 410
    Par défaut TskiaLabel qui fait planter l'app au démarrage?
    Bonjour,

    Je cherche à mettre en évidence certains caractères d'un texte à l'affichage d'une app Android soit en affichant ces caractères dans une autre couleur soit en les affichant en gras par exemple.

    Pour ce faire, il me semblait que la nouvelle librairie Skia ferait l'affaire et plus précisément son composant TskiLabel...

    Mais encore faudrait-il trouver quelque part une explication utilisable voir un exemple de code que bien évidemment Embarcadero ne fournit pas! Mais pourquoi est-ce que cela m'étonne encore???

    Allez soyons vaillant, essayons par la pratique en faisant de essais...

    A part que dès la pose de mon composant TskiaLabel (sans même toucher un seul paramètre par défaut), il y a un problème... Cela fait planter l'application au démarrage sur plusieurs versions Android... Plus précisément l'app reste figée à l'ouverture.

    Est-ce que quelqu'un a déjà utilisé ce TskiaLabel dans une app FMX? Si j'en crois le résultat de mes recherches sur Google, cela ne doit pas courir les rues

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 708
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Citation Envoyé par Anselme45 Voir le message
    Mais encore faudrait-il trouver quelque part une explication utilisable voir un exemple de code que bien évidemment Embarcadero ne fournit pas! Mais pourquoi est-ce que cela m'étonne encore???
    Parce que ce n'est pas un produit Embaracdero sensu-stricto mais écrit par des MVP embarcadero et proposé bien avant son intégration.
    Toute la doc et les explications se trouvent sur le dépot des auteurs plus précisement ici en ce qui concerne de TSKLabel

    Citation Envoyé par Anselme45 Voir le message
    Est-ce que quelqu'un a déjà utilisé ce TskiaLabel dans une app FMX?
    Oui, moi et même pour y mélanger les langues gauche-droite / droite-gauche comme dans la démo du dépot

    Citation Envoyé par Anselme45 Voir le message
    Cela fait planter l'application au démarrage sur plusieurs versions Android... Plus précisément l'app reste figée à l'ouverture.
    la bibliothèque non déployée ou non compatible ?

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    2 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 2 410
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    Parce que ce n'est pas un produit Embaracdero sensu-stricto mais écrit par des MVP embarcadero et proposé bien avant son intégration.
    Toute la doc et les explications se trouvent sur le dépot des auteurs plus précisement ici en ce qui concerne de TSKLabel
    Merci pour les liens...

    Citation Envoyé par SergioMaster Voir le message
    la bibliothèque non déployée ou non compatible ?
    Cela compile mais je n'ai pas le moindre message d'erreur donc pas évident de confirmer quoique ce soit... L'application reste simplement gelée au démarrage... Il n'y a pas de déclenchement d'une exception au niveau de Android... Il n'y a même pas un arrêt de l'app (comme j'avais eu le cas avec une app fonctionnant sous Android 10 mais incompatible avec Android 11 alors qu'elle fonctionnait pour Android 12 et 13)...

    Je vais encore faire un test avec tous les Android de 10 à 15 (qui sont les versions actuellement utilisées par nos clients)... Peut-être que cela fonctionnera avec une version particulière

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    2 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 2 410
    Par défaut
    Même comportement avec Android 10, 11, 12 et 13...

    Je vais oublier Tskia pour le moment, il y a peut-être une incompatibilité avec des composants de mes apps... J'essaierai de nouveau avec un projet démarrant de zéro.

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 125
    Par défaut
    Citation Envoyé par Anselme45 Voir le message
    Mais encore faudrait-il trouver quelque part une explication utilisable voir un exemple de code que bien évidemment Embarcadero ne fournit pas! Mais pourquoi est-ce que cela m'étonne encore???
    Embarcadero ne fournit pas la documentation mais fourni tout de même le lien depuis la page Skia4Delphi - RAD Studio dans le See Also : Skia documentation soit l'API bas niveau et un lien vers le source du Wrapper de l'API soit Skia4Delphi : Skia4Delphi development page (c'est le lien fourni par SergioMaster)


    Question conne !
    Je connais rien à Android, ton App contient bien toutes les "Lib" (selon l'OS c'est .DLL, .SO, .DYLIB) ?
    Ou cela présume que Skia est intégré à Android nativement (OpenGL l'est par exemple, heureusement FMX se base dessus)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    2 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 2 410
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Embarcadero ne fournit pas la documentation mais fourni tout de même le lien depuis la page ...

    Question conne !
    Je connais rien à Android, ton App contient bien toutes les "Lib" (selon l'OS c'est .DLL, .SO, .DYLIB) ?
    Ou cela présume que Skia est intégré à Android nativement (OpenGL l'est par exemple, heureusement FMX se base dessus)
    Inutile de faire dans la recherche de lien, TskiaLabel fait planter les applications Android dès que tu ajoutes le composant TskiaLabel au projet... Tu le poses, tu complies et l'app plante au démarrage! Si une quelconque exigence d'ajouter un composant tiers à Android pour que cela fonctionne existait, il devrait y avoir une mention qui saute aux yeux de l'utilisateur!

    Pour moi qui a des impératifs de production et d'efficacité, c'est rédhibitoire... Quand tu as un planning serré à tenir, tu ne fais pas dans le jeu de piste. Donc, Skia... A la poubelle! J'ai réussi à obtenir ce que je voulais par le simple usage de composants standard de FMX (je vais indiquer la solution dans mon prochain message).

    Je donnerai cependant un bon point aux concepteurs de Skia, ils mettent dans leur doc des exemples de codes pour montrer comment utiliser leur compo...

    Une pratique qui était un point fort de Delphi il y a bien longtemps (cf. Delphi 7) mais qui a malheureusement été jeté aux oubliettes par Embarcadero qui préfère agrémenter ses doc du message scandaleux "on a pas d'info à vous fournir, mais vous pouvez nous aider à compléter notre doc"... Une phrase acceptable pour une solution gratuite open source développée gracieusement par une équipe d'amateurs mais inacceptable pour un IDE coûtant plusieurs milliers d'euro à l'achat et au renouvellement annuel!

    Embarcadero ferait d'ailleurs bien d'y réfléchir parce qu'un outil qui n'est pas convivial à l'usage est un outil boudé par le monde professionnel!

  7. #7
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    2 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 2 410
    Par défaut
    La solution pour pouvoir afficher un texte avec des caractères dont le setting change (Font, Style, Couleur, dimension des caractères, etc...):

    1. Ajouter au projet un TFlowLayout

    2. De manière dynamique, ajouter dans le TFlowLayout un nouveau Tlabel chaque fois qu'il faut une modification du setting d'un caractère

    Exemple:

    Je veux afficher: Il fait beau aujourd'hui

    Tlabel1 >>> "Il fait"
    Tlabel2 >>> "beau" en bsBold
    Tlabel3 >>> "aujourd'hui"

    C'est rapide, simple, fonctionnel et... ne fait pas planter Android!

  8. #8
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 125
    Par défaut
    C'est le genre de chose que j'ai déjà fait en D6 avec un DrawText ou plusieurs Labels + AutoSize + Anchors ... alors qu'un collègue voulait utiliser une label HTML qui obligeait d'installer une lib énorme pour une fonctionnalité minime.
    C'est comme en D7 et le XP Manifest, impossible d'avoir un texte de CheckBox coloré, un CheckBox sans texte, un label à côté, c'est réglé.
    Il a fallut attendre XE3 avec StyleElements pour enfin corriger le problème (quelques versions avant on pouvait faire un StyleHook mais c'est peu compliqué pour juste la couleur d'un checkbox )

    J'approuve la simplicité !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  9. #9
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 708
    Billets dans le blog
    65
    Par défaut
    Cette discussion me titillait l'esprit aussi, après avoir chargé la nouvelle version D13, j'ai voulu tester si mon Android version 12.

    Pas de plantage, cela étant c'est un simple Hello World que j'ai testé.

    Nom : Capture.png
Affichages : 85
Taille : 32,4 Ko

    Mais surtout, dès que l'on utilise SKIA ne pas oublier d'activer SKIA (option proposée dans le menu contextuel de du projet)
    Nom : Capture.png
Affichages : 81
Taille : 57,0 Ko
    Je pense que c'était le noeud du plantage.
    Cette opération fait en sorte d'indiquer au projet d'utiliser SKIA
    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
    program SkLabel;
    
    uses
      System.StartUpCopy,
      FMX.Forms,
      FMX.Skia,
      Main in 'Main.pas' {Form1};
    
    {$R *.res}
    
    begin
      GlobalUseSkia := True;
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.
    J'ai eu la curiosité de désactiver SKIA (ce qui supprime les deux lignes en Bleu) puis de déployer résultat : un écran noir



    La seule chose regrettable dans ce composant c'est les sauts de ligne, ne sachant comment procédé je me suis fait un petit Helper
    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
    unit Main;
     
    interface
     
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, System.Skia,
      FMX.Skia;
     
    type
      TSkLabelWordHelper = class Helper  for  TSKLabel
       procedure BreakLine(item : integer);
      end;
     
     
      TForm1 = class(TForm)
        SkLabel1: TSkLabel;
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.fmx}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Sklabel1.BreakLine(0);
    end;
     
    { TSkLabelWordHelper }
     
    procedure TSkLabelWordHelper.BreakLine(item: integer);
    begin
    Self.Words[item].text:=TrimRight(Self.Words[item].text)+#13;
    end;
     
    end.
    pas idéal, à mon avis. Je suis sûr qu'il doit y avoir un truc que je n'ai pas trouvé ou alors il va falloir faire une demande sur le dépôt Git
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Access 2003] Macro qui fait planter Access
    Par nuriel2 dans le forum Access
    Réponses: 5
    Dernier message: 10/05/2006, 15h00
  2. Supprimer une crontab qui fait planter le server
    Par osmoze dans le forum Administration système
    Réponses: 5
    Dernier message: 31/03/2006, 16h42
  3. 56k qui fait planter le PC
    Par Spack dans le forum Périphériques
    Réponses: 4
    Dernier message: 03/10/2005, 20h35
  4. probleme de requette qui fait planter powergres
    Par fehmitn dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 15/09/2004, 19h48
  5. Réponses: 12
    Dernier message: 16/03/2004, 15h21

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