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

Commentaires

  1. Avatar de SergioMaster
    • |
    • permalink
    Quelques petites coquilles s'étaient glissées dans mes explications sur la syntaxe.
    Merci à navyg de me les avoir signalées.
    Elles sont désormais corrigées, mais, nul n'étant parfait, signalez-moi les restantes par MP
  2. Avatar de Malick
    • |
    • permalink
    Salut SergioMaster,
    Félicitations
  3. Avatar de f-leb
    • |
    • permalink
    Félicitations
  4. Avatar de SergioMaster
    • |
    • permalink
    Mis à jour ce matin
  5. Avatar de NABIL74
    • |
    • permalink
    Bonjour Sergio,

    Merci beaucoup pour ces astuces très pratiques !! Toujours des articles TOP!
  6. Avatar de Gouyon
    • |
    • permalink
    Très intéressant. En fait les styles sont de très puissants outils car ils permettent de vraiment faire des belles choses. Mais ça demande de l'investissement et du travail mais ça vaut vraiment le coup. Depuis que j'ai découvert ça je ne peux plus m'en passer.
  7. Avatar de SergioMaster
    • |
    • permalink
    Il semblerait que le zip contenant la démo soit corrompu, en attendant que je le corrige je vous fournis une version qui gère plus ou moins bien la couleur de texte en fonction de la couleur de fond.
  8. Avatar de NABIL74
    • |
    • permalink
    Parfait. Merci Serge!
  9. Avatar de NABIL74
    • |
    • permalink
    Merci pour ton partage! Je trouve cela très intéressant!
  10. Avatar de NABIL74
    • |
    • permalink
    Bonjour,
    Merci Serge pour ce partage. C'est toujours instructif pour tout le monde.
  11. Avatar de Papy214
    • |
    • permalink
    Chapeau l'artiste !



    ça va m'être très utile dès que mon pc sera réparé.
  12. Avatar de SergioMaster
    • |
    • permalink
    Bonjour,

    effectivement Soundex peut être inclus diectement dans SQLite mais pas sans avoir à le recompiler, c'est là que le bât blesse.
    Alors que, avec Firedac, il serait facile de déclarer une fonction qui utiliserait la fonction soundex de Delphi au débotté :

    Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.SQLSoundEx(AFunc: TSQLiteFunctionInstance;
      AInputs: TSQLiteInputs; AOutput: TSQLiteOutput; var AUserData: TObject);
    begin
    Aoutput.asBoolean:= SoundExSimilar(Ainputs[0].AsWideString,Ainputs[1].asWideString,MinIntValue([Length(Ainputs[0].AsWideString),Length(Ainputs[1].AsWideString)]);
    end;

    Tiens, j'aurais peut-être du autiliser cet exemple pour un fonction à 2 paramètres que de me lancer dans ces tableaux de replacements
    Mis à jour 24/01/2021 à 18h23 par SergioMaster
  13. Avatar de tourlourou
    • |
    • permalink
    Bonjour Serge,
    Firedac semble en effet simplifier considérablement l'accès aux fonctions externes par rapport à l'API SQLite.
    Quant à SoundEx, il peut être implémenté comme fonction de base selon le build de la bibliothèque :
    soundex(X)

    The soundex(X) function returns a string that is the soundex encoding of the string X. The string "?000" is returned if the argument is NULL or contains no ASCII alphabetic characters. This function is omitted from SQLite by default. It is only available if the SQLITE_SOUNDEX compile-time option is used when SQLite is built.
  14. Avatar de SergioMaster
    • |
    • permalink
    Après avoir testé sous Ubuntu (cela fonctionne ) mais j'ai procédé à quelques changements au niveau du traitement de l'image, mise en ressource cela m'évite de déployer le fichier fleche.png ainsi que les problèmes de chemin de chargement c'est donc tout bénéfice.

    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
    procedure TBonus.ListViewMenuUpdateObjects(const Sender: TObject;
      const AItem: TListViewItem);
    //  NOTE
    // il serait mieux de ne charger qu'une seule fois la ressource dans un Stream
    // de même s'il s'agit d'un fichier
    // d'où "l'avantage" de la liste d'image quoique, si l'on utilise un MultiResBitmap on se retrouvera dans le même cas
    var aStream: TResourceStream;
    begin
    // Chargement d'une ressource
    if AItem.Purpose=TListItemPurpose.Header then
      begin
         aStream := TResourceStream.Create(HInstance,'fleche',RT_RCDATA);
          try
            AItem.Objects.ImageObject.Bitmap.LoadFromStream(aStream);
         finally
           aStream.Free;
        end;
    // Chargement fichier "externe"
    //    AItem.Objects.ImageObject.Bitmap.LoadFromFile('..\..\fleche.png');
    // Utilisation TImageList
    //    AItem.Objects.ImageObject.Bitmap:=ImageList1.Bitmap(TSizeF.Create(32,32),0);
      end;
    end;
    Ces changements ont été répercutés dans le zip.
  15. Avatar de SergioMaster
    • |
    • permalink
    Beaucoup de jours sont passés sous les ponts avant, qu'enfin, mon composant image soit fonctionnel, les liens avec une colonne de table ont été très longs à résoudre !

    Ce qui m'empêchait d'avancer était qu'un lien entre un champ et mon composant ne fonctionne pas de la même manière entre un lien sur un TProtypeBindSource et un TDBBindSource.
    Il m'a fallu beaucoup de temps pour découvrir que le mécanisme du lien avec ce dernier type de lien nécessitait un convertisseur (TValueRefConverterFactory).

    Vous retrouverez bientôt dans un premier tutoriel comment coder ce genre de composant.

    Bien que sceptique (il me reste des erreurs d'avertissement que je n'arrive pas à contrer) le tutoriel contient également la méthode de confection d'un composant mixte, fonctionnant donc sous les deux frameworks.

    Dorénavant, fort de ces nouvelles notions, je vais me pencher sur la deuxième partie le : TRadioGroupBox . D'un point de vue "portabilité" je pense que ce composant ne s'adressera qu'aux ordinateurs de bureau : ios n'aurait pas de truc de ce genre et j'ai pu voir que le comportement d'une combobox sur Android avait plus ou moins le même effet.
  16. Avatar de SergioMaster
    • |
    • permalink
    Ton commentaire est hors billet. Ici je propose une alternative au TCombobox mais il n'est nulle question d'y créer une nouvelle classe contrairement à la discussion évoquée.
  17. Avatar de ALWEBER
    • |
    • permalink
    Serge, pour revenir sur ton post d'aujourd'hui (26/02/2019).
    1) Le fait de déclarer TCombobox = class(TCombobox) est une anomalie de programmation qui ne devrait pas exister. Ce que fait Delphi c'est que ne pouvant résoudre cette egalité il le traduit par TCombobox = class(Tobject) donc l'ancêtre primordial. Donc dans la complétion du code tu ne verras que les éléments du TObject et pas les counts, items et autres
    2) J'ai refait les tests le comportement est bien le même en VCL et FMX.
    3) Delphi n'accepte pas que deux composants aient le même nom. Donc si tu veux quand même le faire il faut retirer le composant du même nom du package de base de Delphi et mettre le tient à la place
    Bonne fin de journée
  18. Avatar de seabs
    • |
    • permalink
    Bonjour @SergioMaster,

    Merci pour la mise à disposition des pièces jointes.

    A+
  19. Avatar de SergioMaster
    • |
    • permalink
    J'ai fait référence à des pièces jointes que vous ne voyez pas. Pour y avoir accès c'est par ici
  20. Avatar de SergioMaster
    • |
    • permalink
    Bonjour,
    Citation Envoyé par Koka_
    J'aimerai d'abord m'exercer : est ce que je peux réaliser les mêmes manipulation que toi avec les tables sources ? (tu nous montres le chemin) j'aimerai les DB et la réalisation de ton DBx
    C'est surement bcp demandé mais ça me permettrait de comprendre comment tu as fait
    Je ne suis pas sûr de pouvoir fournir le source, suite au crash de mon disque c'est une partie que je n'ai pas encore récupérer
    De toute façon tout (ou presque) est écrit dans le billet, la partie "cosmétique" (affichage des données) n'est là que pour illustrer.
Page 1 sur 3 123 DernièreDernière