2017-05-17 4 views
2

Je génère un TDatamodule avec un groupe de TFDQueries qu'il contient. Ensuite, je sauve ce datamodule .DFM comme siComment faire pour définir par programme la hauteur/largeur de TDatamodule dans Delphi?

lFileStream := TFileStream.Create('Datamodule.dfm', fmCreate); 
    lMemoryStream := TMemoryStream.Create; 
    lMemoryStream.WriteComponent(lDataModule); 
    lMemoryStream.Seek(0, soFromBeginning); 
    ObjectBinaryToText(lMemoryStream, lFileStream); 
    lFileStream.Free; 
    lMemoryStream.Free; 

Pour être convivial, je dois régler la largeur et la hauteur de ce TDataModule quand je générer. Mais je ne peux pas utiliser

lDatamodule.Width := 500; // Does not compile 
lDatamodule.Height := 500; // Does not compile 

Parce que la largeur et la hauteur sont enregistrées propriétés de temps de conception. Une stratégie similaire permettant de définir les designtime propriétés Gauche et Haut de TComponents est fait en utilisant la propriété DesignInfo en tant que tels

procedure BootyShakin; 
    var 
    NewDesignInfo  : LongRec; 
    begin 
    NewDesignInfo.Lo := Word(100); 
    NewDesignInfo.Hi := Word(100); 
    lComponent.DesignInfo := Longint(NewDesignInfo); 
    end; 

Je cherche une solution analogue pour régler la largeur de la conception et de la hauteur d'un TDataModule avant qu'il ne soit enregistré en .DFM

+0

J'ai précisé que cela devait être fait par le code @MartynA – Ludo

+0

"WIdth" et "Height" sont des propriétés de temps de conception seulement, ils ne sont pas directement accessibles par le code. @MartynA – Ludo

+1

Un module de données n'est pas visible au moment de l'exécution, alors quel est le problème? – penarthur66

Répondre

2

TDataModule offre une propriété publique DesignSize, qui est de type TPoint.

Documentation dit:

Spécifie la taille de conception du module de données au moment de la conception.
Une application ne devrait jamais avoir à définir cette valeur. Il contrôle la taille de la fenêtre du module de données au moment du design.

Malgré la documentation ne recommande pas - pour les applications normales, qui utilisent le TDataModule, je pense - vous pouvez archieve ce que vous cherchez avec cette propriété.

+1

Il semble que @FritzW ait eu la même idée que moi en même temps. :-RÉ –