Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Tengo dudas con el libro delphi2006 (https://www.clubdelphi.com/foros/showthread.php?t=92412)

kratos1981 24-10-2017 03:16:29

Tengo dudas con el libro delphi2006
 
Hola buen dia, hace una semana comencé a leer DELPHI2006, ya que quiero aprender a programar aplicaciones para puntos de venta y rockolas, todo iba bien con los ejemplos a pesar de que uso el delphiXE2, hasta que no pude entender donde se coloca este procedimiento

procedure TMainForm.ShowButtons(Sender: TObject);
begin
Button1.Visible := CheckBox1.Checked;
Button2.Visible := CheckBox1.Checked;
Button3.Visible := CheckBox1.Checked;
Button4.Visible := CheckBox1.Checked;
end;

En los demàs ejemplos al colocar cualquier objeto al formulario, en propiedades en la pestaña evento se crea un procedimiento, bueno pues al día de hoy no he podido encontrar donde se crea ese procedimiento y al intentar escribirlo tal cual, el programa me muestra un error a la hora de correrlo, para evitar ese problema usè el evento onClick del CheckBox.

quedando de esta manera.

procedure TForm.CheckBox1.Click(Sender: TObject);
begin
Button1.Visible := CheckBox1.Checked;
Button2.Visible := CheckBox1.Checked;
Button3.Visible := CheckBox1.Checked;
Button4.Visible := CheckBox1.Checked;
end;

El cual me ha servido, todo estaba bien, hasta que al avanzar con otros ejemplos me muestra un error, cada vez que activo y desactivo la el checkbox.

El codigo del nuevo ejemplo es este

procedure TForm1.CheckBox1Click(Sender: TObject);
var
Cnt: Integer;
Comp: TComponent;
begin
for Cnt := 1 to 7 do
begin
Comp := FindComponent('Button' + IntToStr(Cnt));
TButton(Comp).Visible := CheckBox1.Checked;
end;
end;

y el error que me aparece dice ACCESS VIOLATION AT ADDRESS 0483FBB IN MODULE 'CHECKBOX1.EXE'. READ OF ADDRESS 00000061

echenme una explicaciòn, no quiero desanimarme mas del delphi

oscarac 24-10-2017 06:19:54

porque le pones

Código Delphi [-]
for Cnt := 1 to 7 do

tienes 7 checkbox?

Neftali [Germán.Estévez] 24-10-2017 09:23:15

Cita:

Empezado por kratos1981 (Mensaje 521961)
...
procedure TMainForm.ShowButtons(Sender: TObject);
...
procedure TForm.CheckBox1.Click(Sender: TObject);

Si creas un nuevo formulario verás que la estructura que se crea en el .PAS asociado es la siguiente:

Código Delphi [-]
type
  TForm2 = class(TForm)
    procedure FormClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
    procedure ShowButtons();
  public
    { Public declarations }
    procedure Publica(Sender: TObject);
  end;

Los dos primeros procedimientos son eventos y su implementación es similar a la siguiente; Fíjate que están en la zona antes de la definicción private.

Código Delphi [-]
procedure TForm2.FormClick(Sender: TObject);
begin
   ...
end;

procedure TForm2.FormShow(Sender: TObject);
begin
  ...
end;

Los 2 segundos definidos en la parte private y public son procedimientos definidos (no eventos) cuya implementación es la siguiente:

Código Delphi [-]

procedure TForm2.Publica(Sender: TObject);
begin
  ...
end;

procedure TForm2.ShowButtons;
begin
  ...
end;

Los eventos se diferencias en que están "ligados" a algún componente visual.

En el código que has puesto, y los elementos marcados en rojo veo como cosas raras:
(1) Que unos hacen referencia a TMainForm y otros aTForm (seguramente por copiar y pegar)
(2) Que el procedimiento que te falla, deberá estar definido en la parte privada/public del formulario o en la zona anterior si es un evento.


La franja horaria es GMT +2. Ahora son las 22:50:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi