yo tambien tengo algo parecido
tengo un VclFormPrincipal con 1 button que este button al dar click te desplega un form,
que este form a su vez tiene 3 button cada button te desplega a a un form diferente a si que tengo otros 3 forms.
Código Delphi
[-]procedure Tfromprincipal.SpeedButton1Click(Sender: TObject);
begin
fromninos.ShowModal ;
end;
procedure Tfromprincipal.SpeedButton1Click(Sender: TObject);
begin
mediaplayer1.Stop ;
fromninos.ShowModal ;
end;
procedure Tfromprincipal.SpeedButton4Click(Sender: TObject);
begin
if Application.MessageBox( '¿Desea salir?', 'Catalogo Principal',
MB_ICONQUESTION OR MB_YESNO ) = ID_YES then
close;
end;
end.
"este vclformprincipal te despliega otro form donde tengo tres button"
Código Delphi
[-]procedure Tfromninos.SpeedButton1Click(Sender: TObject);
begin
formuno.ShowModal ;
close;
end;
procedure Tfromninos.SpeedButton2Click(Sender: TObject);
begin
form2.ShowModal ;
close;
end;
procedure Tfromninos.SpeedButton3Click(Sender: TObject);
begin
form3.ShowModal ;
close;
end;
end.
El formuno y dos tengo esto
Código Delphi
[-]var vector:array[1..4]of integer;
fromcinco6: Tfromcinco6;
implementation
uses principal;
{$R *.dfm}
procedure Tfromcinco6.FormCreate(Sender: TObject);
var i:integer;
begin
Randomize;
for i:=0 to 3 do
begin
vector[i] := RandomRange(1,9);
label2.Caption :=inttostr (vector[1]);
label3.Caption :=inttostr (vector[2]);
end;
end;
procedure Tfromcinco6.Image2Click(Sender: TObject);
begin
if Application.MessageBox( '¿Desea ir Atras?', 'Catalogo Niños',
MB_ICONQUESTION OR MB_YESNO ) = ID_YES then
close;
end;
procedure Tfromcinco6.SpeedButton1Click(Sender: TObject);
var a:integer;
begin
a:=strtoint(label2.Caption )+strtoint(label3.Caption );
if edit1.Text =inttostr(a) then
begin
label4.Caption :='Muy Bien' ;
SpeedButton1.Enabled :=false ;
label6.Caption :='';
end
else
label6.Caption := '! Vuelbe a Intentarlo ¡ ';
edit1.SetFocus ;
edit1.Clear ;
end;
procedure Tfromcinco6.SpeedButton2Click(Sender: TObject);
var i:integer;
begin
label4.Caption :='';
label6.Caption :='';
SpeedButton1.Enabled :=true ;
Randomize;
for i:=0 to 3 do
begin
vector[i] := RandomRange(1,9);
label2.Caption :=inttostr (vector[1]);
label3.Caption :=inttostr (vector[2]);
end;
end;
end.
en el form3 tengo
Código Delphi
[-]var vector:array[1..16]of integer;
fromninos7: Tfromninos7;
implementation
{$R *.dfm}
procedure Tfromninos7.FormCreate(Sender: TObject);
var i:integer;
begin
Randomize;
for i:=0 to 15 do
begin
vector[i] := RandomRange(10,99);
label1.Caption :=inttostr (vector[1]);
label2.Caption :=inttostr (vector[2]);
label3.Caption :=inttostr (vector[3]);
label4.Caption :=inttostr (vector[4]);
label5.Caption :=inttostr (vector[5]);
label6.Caption :=inttostr (vector[6]);
label7.Caption :=inttostr (vector[7]);
label8.Caption :=inttostr (vector[8]);
label9.Caption :=inttostr (vector[9]);
label10.Caption :=inttostr (vector[10]);
end;
end;
procedure Tfromninos7.Image2Click(Sender: TObject);
begin
if Application.MessageBox( '¿Desea ir Atras?', 'Catalogo Niños',
MB_ICONQUESTION OR MB_YESNO ) = ID_YES then
close;
end;
procedure Tfromninos7.SpeedButton1Click(Sender: TObject);
var a,b,c,d,e,g,h,j,k,l,p,calf:integer;
begin
SpeedButton1.Enabled :=false;
a:=strtoint(label1.Caption )+strtoint(label2.Caption );
b:=strtoint(label3.Caption )+strtoint(label4.Caption );
c:=strtoint(label5.Caption )+strtoint(label6.Caption );
d:=strtoint(label7.Caption )+strtoint(label8.Caption );
e:=strtoint(label9.Caption )+strtoint(label10.Caption );
if edit1.Text =inttostr(a) then
begin
label16.Caption :='Bien' ;
g:=1;
end else
label16.Caption := 'Mal ';
if edit2.Text =inttostr(b) then
begin
label17.Caption :='Bien' ;
h:=1;
end else
label17.Caption := 'Mal ';
if edit3.Text =inttostr(c) then
begin
label18.Caption :='Bien' ;
j:=1;
end else
label18.Caption := 'Mal ';
if edit4.Text =inttostr(d) then
begin
label19.Caption :='Bien' ;
k:=1;
end else
label19.Caption := 'Mal ';
if edit5.Text =inttostr(e) then
begin
label20.Caption :='Bien' ;
l:=1;
end else
label20.Caption := 'Mal ';
p:=g+h+j+k+l;
label24.Caption :=inttostr(p);
calf:=p*2;
label27.Caption :=inttostr(calf);
label25.Caption :=inttostr(5-p);
edit1.SetFocus ;
end;
procedure Tfromninos7.SpeedButton2Click(Sender: TObject);
var i,l:integer;
begin
SpeedButton1.Enabled :=true ;
Randomize;
for i:=0 to 15 do
begin
vector[i] := RandomRange(10,99);
label1.Caption :=inttostr (vector[1]);
label2.Caption :=inttostr (vector[2]);
label3.Caption :=inttostr (vector[3]);
label4.Caption :=inttostr (vector[4]);
label5.Caption :=inttostr (vector[5]);
label6.Caption :=inttostr (vector[6]);
label7.Caption :=inttostr (vector[7]);
label8.Caption :=inttostr (vector[8]);
label9.Caption :=inttostr (vector[9]);
label10.Caption :=inttostr (vector[10]);
end;
end;
end.
Entoces todo parese estar bien , pero cuando lo ejecuto y doy click en el button del vclprincipal me despliega el otro form , en ese form le doy click al button1 y me despliega otro form cierro ese form que me despliega y buelvo a dar click en el button2 y me despliega otro form lo cierro y al aplastar otra ves el button1 me sale este error
"project principal2.exe raised exception class EAccessViolation with message 'Access violation
at address 00404CE8 in module 'principal2.exe '.read of address 00000042'".
Este error no me sale si nomas abro y cierro los forms . me sale cuando abro un form y empiezo a utilizar sus funciones. sus funciones son sumas y restas y funciona exelente, pero cuando lo cierro y quiero abrir otro form me sale el error..
Noce si me puedas entender por la esplicacion que te doy . pero se que me puedes ayudar