Gestion de la page d'accueil avec Intraweb
Par Dany Leblanc le dimanche 12 juin 2011, 18:51 - Delphi - Lien permanent
Comme nous l'avons vu lors de précédents billets, Intraweb génère d'entrée 3 unités : le servercontroller, le module de données de la session et le formulaire d'accueil. Je vous propose ici de voir comment ce formulaire est définit comme première page, mais aussi comment on peut en définir un autre, et même comment définir le formulaire d'accueil en fonction d'un paramètre de l'url.
- Comment définir la page d'accueil de notre application
Il n'y a rien de particulier à faire si nous conservons le formulaire créé par le wizard comme page d'accueil. C'est l'appel de la méthode SetAsMainForm dans le bloc initialization qui définit la page comme première page :
initialization TIWForm1.SetAsMainForm;
Pour définir une autre page d'accueil, il suffit donc de déplacer ce bloc dans l'unit du formulaire en question.
- Comment définir dynamiquement notre page d'accueil
La définition de la page d'accueil est très simple à faire. Cependant cette méthode n'est pas toujours suffisante, on peut être amené à afficher une page d'accueil différente en fonction d'un paramètre d'appel. Nous allons voir que ceci est également possible. Nous n'allons bien sûr pas modifier dynamiquement le positionnement du bloc initialization, dans ce cas là il ne sera plus utile. Nous allons faire cela dans le ServerController, et plus précisément dans la méthode OnNewSession.
Comme nous l'avons vu précédemment, cette méthode est prédéfinie par le wizard Intraweb :
procedure TIWServerController.IWServerControllerBaseNewSession( ASession: TIWApplication; var VMainForm: TIWBaseForm); begin ASession.Data := TIWUserSession.Create(nil); end;
Le deuxième paramètre de cette méthode est un paramètre var qui contient l'instance de la page principale. Si nous ne la définissons pas, alors Intraweb le fera comme vu dans le paragraphe précédent. Mais il est possible de l'instancier ici pour définir dynamiquement la page d'accueil, par exemple en fonction d'une valeur de paramètre :
procedure TIWServerController.IWServerControllerBaseNewSession( ASession: TIWApplication; var VMainForm: TIWBaseForm); begin ASession.Data := TIWUserSession.Create(nil); if WebApplication.RunParams.Values[ 'Page'] = 'Page1' then VMainForm := TIWForm1.Create( WebApplication); if WebApplication.RunParams.Values[ 'Page'] = 'Page2' then VMainForm := TIWForm2.Create( WebApplication); end;
Voilà, il est donc très simple avec Intraweb de définir statiquement ou dynamiquement la page d'accueil que verra notre utilisateur.