Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-12-2012
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Poder: 14
bulc Va por buen camino
Como usar procedure en otro Unit

Tengo un procedimiento de usuario para ejecutar sonidos cuyas constantes se colocan en la sección Interface del Unit principal. Luego el procedimiento está en la seccion Implementation ( Procedure Toca(xFile: PChar) y también en todos y cada una de las unidades secundarias.
Integro en el Uses, sección Implementation de cada unidad secundaria el mismo procedimiento y le coloco la constante que está en el principal.
Funciona perfectamente, pero me gustaría saber como se puede hacer pública la función externa de usuario (Toca(xFile: PChar) de manera que no se tenga que repetir en todas las unidades secundarias. He probado de varias maneras pero sin fortuna.
¿Puede alguien sacarme de dudas?
Responder Con Cita
  #2  
Antiguo 07-12-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola bulc.

Declara la cabecera de función en la sección de interface de la unidad:

Código Delphi [-]
unit x;

interface

uses ...;

...
procedure Toca(xFile: PChar);
...

implementation

procedure Toca(xFile: PChar);
begin
   ...
end;
Esta unidad deberá incluirse en las unidades donde utilices el procedimiento, de ese modo será visible para cada una de ellas.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 07-12-2012 a las 15:51:04.
Responder Con Cita
  #3  
Antiguo 07-12-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
bulc,

Revisa esta información:
Espero sea útil

Nelson.
Responder Con Cita
  #4  
Antiguo 07-12-2012
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Poder: 14
bulc Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola bulc.

Declara la cabecera de función en la sección de interface de la unidad:

Código Delphi [-]
unit x;

interface

uses ...;

...
procedure Toca(xFile: PChar);
...

implementation

procedure Toca(xFile: PChar);
begin
   ...
end;
Esta unidad deberá incluirse en las unidades donde utilices el procedimiento, de ese modo será visible para cada una de ellas.

Saludos.
Una duda. La incluyo en la unidad secundaria, pero ¿en el uses de interface o en el de implementation?
Y nada más que agradecerte tu buena guía. Gracias.
Responder Con Cita
  #5  
Antiguo 07-12-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
bulc,

Cita:
Empezado por bulc
Una duda. La incluyo en la unidad secundaria, pero ¿en el uses de interface o en el de implementation?
En términos prácticos en cualquiera de las dos.

En términos teóricos depende de la ámbito de visibilidad que quieras dar a tu unidad, interface es pública, implementation es privada.

Espero sea útil

Nelson.
Responder Con Cita
  #6  
Antiguo 07-12-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola bulc.

En este caso basta con incluirla en la sección de implementación.

Si necesitaras de una declaración de la unidad B para conformar otra de la unidad A que se encuentra en la sección de interface de esta última, tendrías que incluirla en la sección de interface. Ejemplo:

Unidad B:
Código Delphi [-]
unit UnitB;

interface

uses ...;

type
  TMiClase = class(TObject)
   Miembro: string;
  end;
...

Unidad A:
Código Delphi [-]
unit UnitA;

interface

uses ..., UnitB;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    FClase: TMiClase; // <-  Necesario inclusión previa de B
  public
  end;
...
En este caso, como es lógico, es necesario que la unidad B este incluida con anterioridad al uso de TMiClase ya que de otro modo no sería conocida en ese punto por la unidad A

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 07-12-2012 a las 18:06:10.
Responder Con Cita
  #7  
Antiguo 08-12-2012
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Poder: 14
bulc Va por buen camino
Lo he hecho como dices y !voila! va como la seda

Gracias por tus indicaciones, muy provechosas. He adaptado el código y va perfectamente, con lo cual uno se ahorra mucho código.
También he descubierto por casualidad (serendipia pura) que se puede usar el código de un botón citando el nombre del botón como prefijo seguido de punto y el nombre del evento. Por ejemplo BitBtn2.Click. Nunca lo había visto especificado en los libros de Delphi que uso. Claro que son un poco obsoletos. De Delphi 4 y 5. Pero bueno, lo menciono por si alguien lo lee.
Saludos,
Bulc.
Responder Con Cita
  #8  
Antiguo 08-12-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Eso es que no has leido bien los libros

Uno cualquiera en La cara oculta de Delphi 4:
Código Delphi [-]
procedure TwndLibretas.DBGrid1DblClick(Sender: TObject);
begin
  bnOk.Click;
end;
Responder Con Cita
  #9  
Antiguo 09-12-2012
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Poder: 14
bulc Va por buen camino
Ese no lo había leído

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Eso es que no has leido bien los libros

Uno cualquiera en La cara oculta de Delphi 4:
Código Delphi [-]
procedure TwndLibretas.DBGrid1DblClick(Sender: TObject);
begin
  bnOk.Click;
end;
"Nunca es tarde si la dicha es buena"...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Acceder a procedure en dpr desde unit frangarrob Varios 7 03-08-2012 12:40:55
Usar un Stored Procedure como DataSet Cura Conexión con bases de datos 1 25-07-2007 07:42:20
Como usar un select dentro de otro erasmorc SQL 6 14-12-2005 01:33:32
¿Como puedo llamar un Procedure desde otra unit? athal Lazarus, FreePascal, Kylix, etc. 11 17-05-2004 01:05:20
como puedo usar una unit externa dentro de mi aplicacion redlyon13 Varios 2 30-11-2003 18:09:13


La franja horaria es GMT +2. Ahora son las 13:39:25.


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
Copyright 1996-2007 Club Delphi