Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   por que tengo que poner el nombre del form en el procedure (https://www.clubdelphi.com/foros/showthread.php?t=75360)

DarkBlue 17-08-2011 02:00:28

por que tengo que poner el nombre del form en el procedure
 
hola que tal mi duda es muy sencilla y si hubiera manera de evitar esto porfavor sean amables diciendome como(ya que tengo que poner el nombre del form seguido del nombre del componente. por cierto tengo otra duda que esta en mi comentario del codigo. Por su atencion muchas gracias que tengan un buen dia.


Código Delphi [-]


 procedure VerRs;
  var nall,pin,hoja,pinhoja:integer;
  begin

  if (fcotizacionn.claveservicio='-1') or ([COLOR="rgb(255, 140, 0)"]fcotizacionn[/color].claveservicio='') then
  begin
  showmessage('no se ha creado ningun presupuesto para el servicio '+fcotizacionn.DBGrid2.Fields[0].AsString);
  exit;
 fcotizacionn.formcreate(sender)//esta linea siempre me funciona cuando lo
// pongo en un boton pero al ponerlo en el procedimiento no me funciona , me
// dice que la variable sender no esta declarada que le pongo??}
  end;

Caral 17-08-2011 02:30:31

Hola
Te explicas poco.
1- supongo que fcotizacionn es un form
2- Si no se declara el procedimiento dentro del type no sabra a que form llamar, por eso se necesita especificar.
3- Dentro del procedimiento de un boton funciona por que esta declarado en el type.
4- Para mi el sender sobra (tal y como lo planteas).
Saludos

ecfisa 17-08-2011 05:05:07

Hola.

La necesidad de calificar al form con el nombre, te la ha explicado perfectamente el amigo Caral.

En cuanto a la línea:
Código Delphi [-]
  fcotizacionn.formcreate(sender)
Primero que nada, no es buena práctica llamar al procedimiento FormCreate manualmente.
FormCreate (de estar asignado a la propiedad OnCreate de tipo TNotifyEvent), debería ser invocado en la creación del form donde se supone que se realizan actividades inherentes a la creación del mismo.

De todas maneras desde tu procedimiento (VerRs) podrías llamarlo así:
Código Delphi [-]
  fcotizacionn.FormCreate(nil);

Saludos.

DarkBlue 17-08-2011 05:18:53

segunda duda
 
muchas gracias, he intentado hacer lo que me indicaste pero...

Código Delphi [-]

type
  Tfcotizacionn = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    ListBox2: TListBox;
....


   procedure Cambiar1Click(Sender: TObject);
    procedure Reparar1Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure algo1Click(Sender: TObject);
    procedure loquesea1Click(Sender: TObject);
    procedure Porcliente1Click(Sender: TObject);
    procedure Pornumerodeserie1Click(Sender: TObject);
    procedure Porplacas1Click(Sender: TObject);
    procedure Pornumerodeserie2Click(Sender: TObject);
    procedure oT1Click(Sender: TObject);
    procedure E1Click(Sender: TObject);
    procedure DBGrid2ColumnMoved(Sender: TObject; FromIndex,
      ToIndex: Integer);
    procedure Producto1Click(Sender: TObject);
    procedure StringGrid1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
      procedure VerRs;

//


implementation

{$R *.dfm}


procedure VerRs;
  var nall,pin,hoja,pinhoja:integer;
  begin

  if (fcotizacionn.claveservicio='-1') or ([COLOR="rgb(255, 140, 0)"]fcotizacionn[/color].claveservicio='') then
  begin
  showmessage('no se ha creado ningun presupuesto para el servicio '+fcotizacionn.DBGrid2.Fields[0].AsString);
  exit;
end;





pero me sale un mensaje de error como el siguiente

[Error] cotizaciones.pas(151): Unsatisfied forward or external declaration: 'Tfcotizacionn.VerRs'

espero que me puedas seguir ayudando muchas gracias

ups... ya lo resolvi tenia que darle el nombre del form al procedure de la siguiente manera


procedure tfcotizacionn.procedimiento;
aun asi que bueno que estan por aqui para guiar a otros ;)

ecfisa 17-08-2011 07:37:25

Hola DarkBlue.

Es que falta la clase en la declaración del procedimiento:
Código Delphi [-]
procedure VerRs;
...

Tendría que ser:
Código Delphi [-]
procedure Tfcotizacionn.VerRs;
...

Un saludo.

Edito: Disculpame. Leí el código y puse la solución sin ver que más abajo decias haberla encontrado.


La franja horaria es GMT +2. Ahora son las 04:34:28.

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