begin process at 2013 05 24 09:14:14
  Trouver un code source :
 
dans
 
Accueil > 

Tutoriels

 > 

Composants

 > CRÉER DES COMPOSANTS DYNAMIQUEMENT

CRÉER DES COMPOSANTS DYNAMIQUEMENT


 Information sur le tutoriel

Note :
Aucune note

 Description

Ce tutorial donne comme example la création d'onglets dans un composant tpagecontrol. Cet example est assez complet, puisqu'il vous montre comment mettre du contenu dans l'onglet et comment détruire celui-ci correctement.

Tutorial

Comment puis-je créer dynamiquement

des pages dans un tpagecontrol ?



Créer un nouveau projet,



Première étape: Enregistrer la classe TTabsheet




registerclasses([TTabSheet]);




Deuxièmement: Mettre un composant

tpagecontrol sur la fiche principale, créer

une nouvelle page dans le tpagecontrol et mettez

les composants souhaités dans cette page.



Troisièmement: Créer le fichier

de ressources contenant la page qui sera

affichée à l'exécution.


Suivez les instructions ci-dessous


Vous devez changer la propriété parent

des composants que vous avez sur la page à

afficher dynamiquement. Ici, "Self" est la fiche

principale.




var i:integer; c:Tcomponent;

begin


for i := 0 to tabsheet1.Controlcount - 1 do

begin

c := tabsheet1.Controls[i];

Self.RemoveComponent(c);

tabsheet1.InsertComponent(c);

end;


saveToStream(Sender);

end;



Quatrièmement, vous devez enregistrer

la page dans un fichier.





procedure TForm1.SaveToStream(Sender: TObject);

var

AStream: TMemoryStream;

begin

if SaveDialog1.execute then

begin

//GuiToObject;

AStream := TMemoryStream.Create;

try

AStream.WriteComponent(tabsheet1);

AStream.SaveToFile(SaveDialog1.FileName);

finally

AStream.free;

end;

end;

end;



Vous devez mettre ce fichier dans un fichier

de resource. Créer un nouveau fichier.

Appelez-le Tabsheet.rc



MyTabSheet RCDATA "NomFichierEtape4"


Run this command


brcc32 tabsheet.rc

Vous obtenez "tabsheet.res"


Enregistrez le projet si vous le souhaitez.

Vous êtes; prêt à créer

des pages dynamiques dans votre application.


Cinquièmement, vous enregistrez la classe TPageControl

et la classe des composantes que vous avez

placez dans votre page




RegisterClasses([TTabSheet]);

RegisterClasses([TListView]);

//Si vous avez mis un tlistview



Donc, pour créer une page dans

un Tpagecontrol, vous appelez la fonction

OpenNewTab with comme premier paramètre

"MyTabSheet"




uses classes, windows;


function OpenNewTab(resourcename:string;

pagecontrol:TPageControl;

sheetcaption:string):TTabSheet;

//retourne une page (TTabsheet)


var

ms: TMemoryStream;

sheet: TTabSheet;

begin

sheet:=nil;

ms := TMemoryStream.Create;

try


GetResourceInStream(resourcename,ms);

sheet := ms.ReadComponent(nil) as TTabsheet;


sheet.Pagecontrol := pagecontrol;

//Vous attachez la page au TPagecontrol

sheet.Caption := sheetcaption;

//Vous lui donnez un titre

sheet.TabVisible:=true;



finally

ms.free

end;

result:=sheet;

end;



function GetResourceInStream(resourcename:string;

stream:TMemoryStream):boolean;

var

ResHandle : THandle;

MemHandle : THandle;

ResPtr : PByte;

ResSize : Longint;

begin

ResHandle := FindResource(0,

PAnsiChar(resourcename),RT_RCDATA);

MemHandle := LoadResource(Hinstance, ResHandle);

ResPtr := LockResource(MemHandle);

ResSize := SizeOfResource(Hinstance, ResHandle);

stream.SetSize(ResSize);

stream.Write(ResPtr^, ResSize);

FreeResource(MemHandle);

stream.position:=0;

end;


N.B : Si vous voulez fermer une page, vous devez mettre la propriété parent à nil avant d'appeler la méthode "free" ou vous aurez des violations d'accès

 Historique

04 septembre 2007 17:39:34 :
nouveau format docx

Commentaires

Commentaire de Mowglinaute le 05/12/2007 15:18:04

C'est bien.
Voilà, bonne programmation.

Dr. Joseph LOMBET

Commentaire de Brunch le 23/01/2008 18:31:12

Excellent, merci, je cherchais quelque chose comme cela.
Brunch

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,218 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales