Bonjour,
Je me prends pas mal la tete avec les frames. Je vais tenter de simplifier le pb.
J'ai un formulaire principal FPrincipal.
J'ai créé plusieurs frames de la même classe FrModele.
Depuis mon formulaire FPrincipal, j'appel correctement chaque frame dans un conteneur TPanel.
j'ai une variable publiée FMyFrame d'instance de classe FrModele;
J'ai une procédure AfficherEcran
Depuis les boutons de ma barre d'outils j'appel simplement ma procédure AfficherEcran comme suit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 procedure TFPrincipal.AfficherEcran; begin try FreeAndNil(FMyFrame); if FMyEcran='FrEcran1' then FMyFrame := TFrmEcran1.Create(self); if FMyEcran='FrCreationfiche' then FMyFrame := TFrmCreationfiche.Create(self); if FMyEcran='FrListeParticipants' then FMyFrame := TFrmListeParticipants.Create(self); if FMyEcran='FrMajFiche' then FMyFrame := TFrmMajFiche.Create(self); if FMyEcran='FrMajAdresse' then FMyFrame := TFrmMajAdresse.Create(self); if FMyEcran='FrMajContacts' then FMyFrame := TFrmMajContacts.Create(self); if FMyEcran='FrMajSuperviseur' then FMyFrame := TFrmMajSuperviseur.Create(self); if FMyEcran='FrMajCatalogue' then FMyFrame := TFrmMajCatalogue.Create(self); FMyFrame.Parent := PanelFrame; FMyFrame.Afficher; except on E: Exception do MessageDlg('Contacter l''administrateur :'#13#10+E.Message,mtError,[mbOk],0); end; end;
Exemple :
Jusque là c'est pas bien compliqué, je vous l'accorde.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 procedure TFPrincipal.CreateFQClick(Sender: TObject); begin FMyEcran:='FrCreationfiche'; AfficherEcran; end;
ce qui se corse désormais c'est que je voudrai depuis une frame chargée pouvoir appeler une autre frame.
pour cela je voudrai pouvoir le faire en appelant directement les procédures de mon formulaire FPrincipal.
par exemple
Evénement OnClick d'un bouton posé sur une de mes frames, j'appelle directement :
En faisant ainsi, cela fonctionne 1 fois et la 2nde je me mange un AccessViolation dans la tronche.TFPrincipal.CreateFQClick(sender);
Comment pourrais je réaliser ce que je souhaite facilement ?
l'objectif étant de pouvoir facilement passer d'une frame à une autre en fonction d'une personnalisation de l'utilisateur.
Merci de vos lumières
@
Partager