Précédent   Forum des professionnels en informatique > Autres langages > Pascal > Lazarus
Lazarus Forum d'entraide sur Lazarus, l'EDI RAD multiplateforme basé sur Free Pascal
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/11/2011, 21h11   #1
Membre expérimenté
 
Homme Gilles
Enseignant
Inscription : novembre 2006
Messages : 599
Détails du profil
Informations personnelles :
Nom : Homme Gilles
Âge : 53
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : novembre 2006
Messages : 599
Points : 570
Points : 570
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 :
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
selzig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 09h47   #2
Membre expérimenté
 
Homme Gilles
Enseignant
Inscription : novembre 2006
Messages : 599
Détails du profil
Informations personnelles :
Nom : Homme Gilles
Âge : 53
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : novembre 2006
Messages : 599
Points : 570
Points : 570
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 :
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
selzig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 12h14   #3
Membre du Club
 
Homme Bernard
Ingénieur développement en retraite
Inscription : juin 2002
Messages : 92
Détails du profil
Informations personnelles :
Nom : Homme Bernard
Âge : 59
Localisation : France

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

Informations forums :
Inscription : juin 2002
Messages : 92
Points : 63
Points : 63
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.
Bernard B est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h07.


 
 
 
 
Partenaires

Hébergement Web