Bonjour,

J'ai deux forms identiques (Form1 et Form2) qui changent chacune l'état d'une checkbox lorsqu'on click sur un bouton. Lorsque ces deux formes sont indépendantes, cela marche. Par contre, lorsque la Form2 appelle la Form1 par ShowModal, je ne peux plus changer l'état de la checkbox1 de la Form1 en appuyant sur le Bouton de la Form1. C'est comme si l'appel par ShowModal bloquait l'accès aux propriétés de la checkbox.

Quelqu'un peut-il m'aider à comprendre cela ? Et comment résoudre ce problème?

Merci

Les codes des unit2 et unit1 sont les suivants:
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
unit Unit2; 
{$mode objfpc}{$H+}
interface
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,unit1;
type
 
  { TForm2 }
 
  TForm2 = class(TForm)
    Button1: TButton;
    CheckBox1: TCheckBox;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 
 
var
  Form2: TForm2;
  MyForm:TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm2 }
 
procedure TForm2.Button1Click(Sender: TObject);
begin
with Form2.CheckBox1 do
  begin
    if Checked=true then Checked:=False
    else Checked:=true;
  end;
  try
     MyForm := TForm1.Create(nil);
     MyForm.ShowModal;
  finally
     MyForm.Free;
  end;
end;
 
end.
et la form 1
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
unit Unit1; 
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    CheckBox1: TCheckBox;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 
 
var
  Form1: TForm1; 
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  with Form1.CheckBox1 do
  begin
    if Checked=true then Checked:=False
    else Checked:=true;
  end;
  end;
 
end.