Creer la meme form 2 fois dans un panel [Résolu]

DJR - 4 avril 2015 à 19:34 - Dernière réponse :  DJR
- 12 avril 2015 à 17:09
Bonjour tout le monde,

Cela fais une semaine que je suis plongé dans tous ce qui a un relation avec delphi 7 sur le net a cause de mon problème, qui est le suivent:

-1) j'ai un MainForm avec un menu et un StatutBar
-2) j'ai un form2 avec des traitement a faire

Alors, par le menu je Crée dynamiquement le Form2, avec un caption et une information sur le StatutBar, dans le panel qui est le parent de celui-ci, et en même temps je le recrée, avec un autre caption et une autre information, sans détruire le premier, et en utilisons l'événement OnClick pour que l'information change dans le statutBar, rien ne ce passe.

pour ceux qui peuvent m'aider, Merci d'avance pour votre aide
voici mon code
//--------------- Unit1 -------------------------

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, Menus, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    MainMenu1: TMainMenu;
    Menu1Chois11: TMenuItem;
    Menu1Choi21: TMenuItem;
    Appel11: TMenuItem;
    Appel21: TMenuItem;
    StatusBar1: TStatusBar;
    procedure Appel11Click(Sender: TObject);
    procedure Appel21Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

Uses Unit2;

{$R *.dfm}

procedure TForm1.Appel11Click(Sender: TObject);
 begin
  Application.CreateForm(TForm2, Form2);
  Form2.Caption := 'Appel 1er fois';
  Form2.Parent            := Panel1;
  Form2.Top := panel1.Top +50;
  Form2.Left := panel1.Left + 50;
  StatusBar1.Panels.Items[1].Text := 'Info 1';
  Form2.Memo1.Lines.Clear;
  Form2.Memo1.Lines.Add('Je suis le 1er affichage');
  Form2.Show;
 end;

procedure TForm1.Appel21Click(Sender: TObject);
 begin
  Application.CreateForm(TForm2, Form2);
  Form2.Caption := 'Appel 2eme fois';
  Form2.Parent            := Panel1;
  Form2.Top := panel1.Top +50;
  Form2.Left := panel1.Left + 50
  StatusBar1.Panels.Items[1].Text := 'Info 2';
  Form2.Memo1.Lines.Clear;
  Form2.Memo1.Lines.Add('Je suis le 2eme affichage');
  Form2.Show;
 end;

end.

//----------------- Unit 2 ------------------------------

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Memo1: TMemo;
    procedure FormClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.FormClick(Sender: TObject);
 begin
  If Caption = 'Appel 1er fois' then Form1.StatusBar1.Panels.Items[1].Text := 'Info 1';
  If Caption = 'Appel 2eme fois' then Form1.StatusBar1.Panels.Items[1].Text := 'Info 2';
 end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
 begin
  Free;
 end;

end.



NB: je suis autodidacte, et j'ai pas fait de formation sur le delphi

EDIT: Ajout de la coloration syntaxique.
Afficher la suite 

4 réponses

Répondre au sujet
MiniApp 596 Messages postés lundi 21 juillet 2014Date d'inscription 19 avril 2018 Dernière intervention - 5 avril 2015 à 08:54
0
Utile
3
Bonjour

Je n'ai pas tester mais essaie de crée ta deuxième fiche dans une autre TForm2.

Je te suggère d'ajouter
Form2:TForm2;
d'ajouter
Form2BIS:TForm2;
et de remplacer les Form2 dans ton Appel21Click par la nouvelle form. Après je ne sais pas si ça marche. Autrement j'ai ça chez Embarcadero.
bonjour MiniApp,
Merci pour ta repense, j'y ai penser mais il y a un petit désagrément avec un autre Tform, vu que c'est les même traitements, pour les 2 appels, seul l'info dans le STATUSBAR qui change et gère la suite du code, je ponce que c'est un double emplois et pas beaux dans la syntaxe de l'application.
Si t'es d'accord avec moi?
MiniApp 596 Messages postés lundi 21 juillet 2014Date d'inscription 19 avril 2018 Dernière intervention - 11 avril 2015 à 19:05
Perso je ne vois pas en quoi ceci est dérangeant, peut être les if then très présent peuvent alourdir le code mais si tu fait les "doubles espaces hiéarchique" (
if Genre then
  begin
    Ca.TuVois('?');
  end;
) tu peux réglez le problème.
Comme toi j'apprends par moi même (j'ai eu un amis qui m'a appris les bases et je continue a en apprendre). Après un plus expérimenter te confirmera peut être. De toute façon il y a plein de façon de faire la même chose et tant que ça marche ça peut allez.
DJR > MiniApp 596 Messages postés lundi 21 juillet 2014Date d'inscription 19 avril 2018 Dernière intervention - 12 avril 2015 à 17:09
bonjour MiniApp,
merci pour ton aide, mais voila j'ai abandonner cette idée et j'ai contourner le problème, en désactivons le menu pour que le 2 appel ne soit pas possible c'est tout pour le moment
Commenter la réponse de MiniApp

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.