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

Lazarus Pascal Discussion :

TStringGrid : ajouter une propriété dans TGridColumn


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut TStringGrid : ajouter une propriété dans TGridColumn
    Bonjour,

    Y aurait-il une astuce permettant dans le code d'un composant de class(TstringGrid) d'ajouter une propriété published dans le TgridColumn défini dans le /lcl/grids.pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    { TGridColumn }
      TGridColumn = class(TCollectionItem)
      private
        FButtonStyle: TColumnButtonStyle;
        FDropDownRows: Longint;
      [...]
     
     { TGridColumns }
      TGridColumns = class(TCollection)
      [...]
    Dans le composant même, on peut utiliser des codes se substituant à la collection d'origine mais je n'en ai vu aucun ne modifiant cette dernière (celle d'origine). Ce que j'ai compris des TCollections me laisse penser que ce n'est pas faisable mais au risque de poser une question incongrue, je ne voudrais pas passer à côté du TryStrToxxx de la discussion précédente .

    Cordialement. Gilles
    Dernière modification par Invité ; 16/11/2011 à 22h46.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pour info, un programmeur visiblement très convaincu par les Grids lazarusiennes -je le suis moins-, m'a donné la solution sur le forum de Lazarus
    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
    type
      TMyGridColumn = class(TGridColumn)
      private
        FNewProperty : integer;
      published
        property NewProperty: integer read FNewProperty write FNewProperty;
      end;
     
      TMyStringGrid = class(TCustomStringGrid)
      protected
        function CreateColumns: TGridColumns; override;
      end;
     
      function TMyStringGrid.CreateColumns: TGridColumns;
      begin
        Result := TGridColumns.Create(Self, TMyGridColumn);
    end;
    Ce que je ne comprends pas et qui m'agace de plus en plus, c'est que parmi les tentatives que j'avais réalisées, une ressemblait à cela... Et cela n'a pas marché. Enfin, avec le recul, je n'en sais rien car comme j'essayais de lui expliquer avec mon pauvre anglais, une simple recompilation du composant ne tient pas compte à tous les coups des modifications de propriétés et de méthodes... J'ai le même problème avec des includes situés dans certaines configurations de répertoires pourtant déclarés dans les projets. Pour les composants, pour être sûr du résultat, il faut que je recompile Lazarus (Clean All + Build). Il se peut que structurellement (ie dans le fonctionnement de Lazarus) cela soit "obligatoire". MAIS compte tenu du temps nécessaire à la recompilation complète, on peut le faire de temps en temps mais pas à chaque tentative de modification ou d'ajout d'une propriété... J'ai déjà posté plusieurs messages à ce sujet. Je trouve le problème de plus en plus détestable.

    Cordialement. Gilles
    Dernière modification par Invité ; 22/11/2011 à 10h58.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 465
    Par défaut
    Oui je pense qu'il faut recompiler l'IDE pour que les modifications sur le composant soient visibles dans l'inspecteur d'objets.
    Le pb est que Lazarus comme Delphi travaille en mode conception avec une image des composants qui pour delphi est dans les fichiers bpl, pour Lazarus je ne sais pas lesquels c'est. C'est ce qui permet d'être RAD.
    Par contre normalement l'affectation d'une nouvelle propriété dans une application de test est toujours possible par code même si la propriété n'est pas visible dans l'inspecteur d'objet, car au moment de la compilation ce sont les fichiers source (dont avec les dernières modifs) qui sont utilisés.
    Sans compter que certaines propriétés ne sont pas forcement visibles dans l'inspecteur d'objets c'est le cas de celles qui sont dans la partie public, car seules celles de la partie published sont visibles.

Discussions similaires

  1. [WD-2007] Ajouter une Propriété de document dans Word 2007/2010
    Par yanou91 dans le forum Word
    Réponses: 19
    Dernier message: 09/02/2015, 01h08
  2. Ajout d'une propriété dans une table relationelle
    Par forzalec dans le forum Doctrine2
    Réponses: 3
    Dernier message: 06/02/2014, 16h01
  3. ajout d'une propriété dans la table+ hibernate exception
    Par marwa_eniso dans le forum Hibernate
    Réponses: 1
    Dernier message: 05/05/2010, 20h21
  4. Réponses: 5
    Dernier message: 12/10/2009, 18h03
  5. Ajout de propriété dans une classe d'une assembly
    Par ftesson dans le forum Général Dotnet
    Réponses: 7
    Dernier message: 14/05/2007, 15h25

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