Cita:
Posteado originalmente por cadetill
[...]Eso sí, el utilizar la propiedad Tag, te limita a que el valor de retorno sea un entero, por lo que si quieres devolver otro tipo de dato, no te servirá y deberás recurrir a lo de declarar la variable en la sección public.
|
Esto no es del todo cierto. Tag es de tipo LongInt que ocupa el mismo espacio en memoria que un puntero y con un puntero podemos devolver un sinfín de cosas.
De cualquier forma, estoy de acuerdo con
andres1569 en el sentido de que es conveniente usar otros métodos para el fin del ejemplo indicado ya que Tag es una propiedad confusa y poco descriptiva. Más aún, en este caso en particular lo que yo hubiera hecho es lo que hacen todos los cuadros de diálogo:
permitir que el usuario escoja un valor y devolver dicho valor en una propiedad pública. Por ejemplo, TOpenDialog permite seleccionar un archivo y éste lo devuelve en la propiedad FileName.
En este caso podría ser algo así:
Código:
type
TForm2 = class(TForm)
private
FValorABuscar: Integer;
public
property ValorABuscar: Integer read FValorABuscar write FValorABuscar;
end;
Cuando deseemos obtener dicho valor haríamos:
Código:
with TForm2.Create(nil) do
begin
try
if ShowModal = ID_OK then
Table1.Findkey([ValorABuscar]);
finally
Free;
end;
end;
Y por si les interesa, en este hilo:
http://www.clubdelphi.com/foros/show...ghlight=TField
pueden encontrar una aplicación de la propiedad Tag que me parece adecuada y, debido al "casting", el código no pierde legibilidad.
// Saludos
pd: Por cierto, ¿se han fijado que no puede busarse el término "Tag" en la ventana de búsquedas?