PDA

Ver la Versión Completa : Crear una clase y asignar objetos como propiedades


leanfreue
09-04-2007, 02:59:50
Hola Amigos. Felices Pascuas para todos.

Trabajo con Delphi 7 y MySQL 5.0 con componentes dbExpress.

Estoy tratando de hacer una clase llamada "Buscador", les cuento de qué se trata con un ejemplo:

Tengo un formulario que muestra en un DBGrid una lista de clientes, (ClientDataSet1) ordenados por nombre, al abrirse el formulario tengo el siguiente código;

ClientDataSet1.IndexName := 'oNom';

También tengo en el formulario un TEdit, llamado txtBuscador, en cuyo evento OnChange tengo el siguiente código:

ClientDataSet1.FindKey([txtBuscador.Text]);

Y todo funciona perfecto, a medida que el usuario va ingresando el nombre del cliente, éste aparece seleccionado en la grilla.

Lo que quiero es hacer una clase "Buscador", en la que pueda asignarle:
* El ClientDataSet en que tiene que buscar el dato ingresado.
* El índice por el cuál tiene que buscar.
* El tratamiento que hay que darle al texto ingresado, por ejemplo, si voy a buscar por código, el texto a buscar sería StrToInt(TextoABuscar).

Ya estuve haciendo varias clases simples, pero acá me surge la duda sobre qué tipo de propiedades utilizar, y una vez resuelto el tema, cómo hago para ejecutar el FindKey.

Resumiendo, la pregunta es: ¿Cómo lo hago?

Desde ya les agradezco su tiempo!!!

Lepe
09-04-2007, 11:32:10
Dale una visual a este hilo (http://www.clubdelphi.com/foros/showthread.php?t=41696&highlight=ftstring+ftinteger) Allí se habla de como construir las sqls, para según qué tipo de campo, integer, string, etc. ( Mira a partir del mensaje nº 10)

Saludos

leanfreue
12-04-2007, 21:11:38
Gracias Lepe por tu respuesta (te lo agradezo un poco tarde, :)). Gracias a la info pude solucionar uno de los temas.

Ahora lo único que me queda por resolver es cómo le indico al "Buscador" en qué DataSet tiene que buscar la info.

Saludos para todos.

Lepe
12-04-2007, 23:16:08
Si quieres hacerlo en tiempo de ejecución es lo más fácil:


formbusqueda = class (tform)
....

public
BuscarEn :TDataset;
end;


Lo dejas preparado así, y después puedes asignar el dataset y ejecutar la busqueda:

frmbusqueda.buscarEn := dsClientes;
frmbusqueda.EjecutarBusqueda;


La rutina EjecutarBusqueda mirará en la variable BuscarEn y accederá a los campos de ese TDataset (que puede ser un TTable, Tquery, etc);

Saludos

leanfreue
13-04-2007, 00:08:33
Gracias Lepe !!!!
Anduvo todo perfecto.