Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Sobre procedimientos y funciones (https://www.clubdelphi.com/foros/showthread.php?t=31762)

Perrero80 17-05-2006 06:41:22

Sobre procedimientos y funciones
 
Cuando creo un procedimiento y en ese procedimiento quiero usar un componente de la form, por ejemplo un boton y acceder a sus propiedades, no puedo hacer ya que bota error, cuales son las "cosas" que debo de pasarle a la funcion o procedimiento para que los componentes funcionen?.

P.D: Ojala me hayan entendido :o

ElKurgan 17-05-2006 07:46:20

¡Pues pasándole el componente que quieras utilizar!... Por ejemplo:
Código Delphi [-]
 
procedure QueSoy(Objeto: TObject);
begin
  if (Objeto is TButton) then
    ShowMessage('Soy un boton llamado ' + TButton(Objeto).Name)
  else if (Objeto is TEdit) then
    ShowMessage('Soy TEdit con el Texto ' + TEdit(Objeto).Text)
  else if (Objeto is TStrings) then
    ShowMessage(Format('Soy una lista con %d elementos ',  
       [TStrings(Objeto).Count])
  else
    ShowMessage('Soy un objeto de tipo ' + Objeto.ClassName);
end;
Un saludo

Neftali [Germán.Estévez] 17-05-2006 10:02:28

Otra opción para obtener información de un componente es utilizar RTTI.
En la sección de Tips de mi página puedes encontrar una funcion llamada GetRTTIControlInfo que te devuelve la lista de todas las propiedades de un control.
También en ese ejemplo, puedes ver cómo obtener el valor de una determinada propiedad a partir de su nombre para cualquier control, indistintamente de su clase.

Sotrono 17-05-2006 11:55:42

Otra forma seria declararlo en la seccion privateo public del form. De esta manera podes acceder a cualquier componente sin tener que pasar ningun parametro.
Código Delphi [-]
 
Private
  procedure Prueba(s: string);
Public
  
end; 
 
{Luego en Implementation lo declaras igual pero con el nombre del form antes que el nombre del procedimiento}
 
Implementation
 
procedure TForm1.Prueba(s: string);
begin
  Button1.Caption := 'dsadasd' 
end;


La franja horaria es GMT +2. Ahora son las 04:47:45.

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