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

Commentaires

  1. Avatar de weed
    • |
    • permalink
    Merci Sergio pour ta réponse.
    Cela me fait bizzare, le premier language que j'ai appris est le Pascal au lycée et à l'époque Delphi me faisait réver parce qu'il était possible de faire des applis avec des interfaces graphiques. Je suis surpris qu'ils soient toujours d'actualité. Tant mieux.

    J'ai parcouru la page wikipédia de Delphi et en effet on apprends que embarcadero a repris le flanbeau.
    Je trouve que c'est une chouette idée ce grade MVP permettant de réunir la crème de la crème.

    Un grand bravo à toi.
  2. Avatar de SergioMaster
    • |
    • permalink
    Pour répondre à weed, ce club n'a de renommée que dans le monde des utilisateurs de Delphi ou de C++. https://www.embarcadero.com/fr/embarcadero-mvp-program
    Ce statut s'obtient par cooptation de membre via parrainage, et se mérite lorsque l'on commence à être "visible" en écrivant des articles, faisant des vdéos et commençant à être connu sur les forums spécifiques. Avantage, avoir des informations de première main et des aides de membres très influents de cette communauté très restreinte.

    Merci à DVP qui m'a permis de l'être puisque hébergeant mes articles, mon blog et qui m'a permis durant toutes ces années de devenir connu comme le loup blanc.
    En juste retour des choses, DVP est enfin visible sur les pages d'Embarcadero https://blogs.embarcadero.com/fr/communaute/ avant ma nomination, il n'y avait rien concernant les forums francophones

    Cela étant, pour l'instant, je savoure mon tout nouveau statut de néo-retraité avant de me remettre dans le bain et écrire les articles (la liste est longue) que la vie pro m'avait fait procrastiner.
  3. Avatar de weed
    • |
    • permalink
    Et quel est ce club renommé ?
  4. 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
  5. Avatar de Malick
    • |
    • permalink
    Salut SergioMaster,
    Félicitations
  6. Avatar de f-leb
    • |
    • permalink
    Félicitations
  7. Avatar de SergioMaster
    • |
    • permalink
    Mis à jour ce matin
  8. Avatar de NABIL74
    • |
    • permalink
    Bonjour Sergio,

    Merci beaucoup pour ces astuces très pratiques !! Toujours des articles TOP!
  9. 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.
  10. 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.
  11. Avatar de NABIL74
    • |
    • permalink
    Parfait. Merci Serge!
  12. Avatar de NABIL74
    • |
    • permalink
    Merci pour ton partage! Je trouve cela très intéressant!
  13. Avatar de NABIL74
    • |
    • permalink
    Bonjour,
    Merci Serge pour ce partage. C'est toujours instructif pour tout le monde.
  14. Avatar de Papy214
    • |
    • permalink
    Chapeau l'artiste !



    ça va m'être très utile dès que mon pc sera réparé.
  15. 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 à 17h23 par SergioMaster
  16. 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.
  17. 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.
  18. 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.
  19. 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.
  20. 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
Page 1 sur 3 123 DernièreDernière