Bonsoir ou bonjour Roland.
Je te remercie pour ton appréciation.
Concernant l'utilisation des composants, j'ai donné, dans les commentaires de début d'unité, un exemple avec un TCheckBox.
En voici un autre avec un TEdit : cette fonction pourrait d'ailleurs être intégrée dans l'unité, car elle peut remplacer InputQuery.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| function MyInputText(ACaption, AMsg: string; X: integer = -1; Y: integer = -1): string;
var
Edit: TEdit;
begin
Edit:= TEdit.Create(nil);
try
Edit.Text:= '';
Edit.Width:= 150;
if MyMessage(ACaption, AMsg, mmtCustom, [mbOk, mbCancel],
['Valider', 'Annuler'], mbOk, X, Y, Edit) = mrOk then
Result:= Edit.Text
else
Result:= '';
finally
Edit.Free;
end;
end; |
Evidemment, si vous voulez créer un groupe de composants, dynamiquement, il y aura pas mal de lignes de code. Si cela vous rebute, une solution est de placer en design-time les composants qui seront utilisés sur une TForm que vous ne rendez jamais visible. Moins élégant, mais plus pratique. J'avoue l'avoir fait pour mon GroupBox dans la capture d'écran.
A noter que j'ai utilisé dans la fonction le type mmtCustom qui, dans l'unité actuelle, n'affiche pas d'image.
Pour en afficher une, il faut compléter la ligne 221.
Pour ce faire, vous pouvez évidemment prendre la solution la plus simple qui consiste à ouvrir un fichier (bmp, png...) ou à assigner un bitmap.
mmtCustom: Fimage.Picture.Bitmap.LoadFromFile('Monbitmap.bmp');
mais ceci vous oblige à déployer les fichiers images avec votre application.
Sinon, vous stockez les images dans un fichier ressources : un fichier .RC ou .LRS
Un fichier RC est un simple fichier texte, mais on ne peut plus utiliser la fonction "LoadFromLazarusResource".
Il faut l'inclure au début de l'unité (directive $R thdialogs.rc).
mmtCustom : Fimage.Picture.Bitmap.LoadFromResourceName('Image_Texte');
Sinon, il faut créer un fichier LRS.
Dans ce cas :
1) dans la clause uses : ajouter l'unité "LRessources".
2) à la fin de l'unité, créer la section initialization et ajouter {$I thdialogs.lrs}
mmtCustom : Fimage.Picture.LoadFromLazarusResource('Image_Texte')
Image_Texte étant ici le nom du fichier (l'extension n'est pas obligatoire). Veillez à donner un nom assez compliqué pour ne pas faire de duplicate avec une resssource Lazarus déjà déclarée.
Pour ceux qui ont du mal avec les fichiers ressources, ceci est un bon début :
http://wiki.freepascal.org/Lazarus_Resources
Attention : "Image.Picture.LoadFromResourceName" n'est pas reconnu par Lazarus (voir fin du lien).
Remarque : vous pouvez ajouter d'autres types de messages : mmtCustom2, mmtCustom3... et ajouter d'autres images.
[oubli] : Si vos images réclament de la transparence : pour les images Bitmap, il faut que la propriété Transparent de FImage = true (pas nécessaire pour les PNG).
Cordialement
Thierry
Partager