PDA

Ver la Versión Completa : Agenda Delphi


Jrodfer89
20-05-2014, 10:42:14
Hola amigos,
miren estoy trabajando para hacer una agenda en delphi en base de datos, me gustaria saber la formula para los botones:

(cuando le doy por ejemplo a la letra A, me aparezcan solo las personas cuyo apellido 1 empieze por A)
(cuando le doy por ejemplo a la letra B, me aparezcan solo las personas cuyo apellido 1 empieze por B)
(cuando le doy por ejemplo a la letra C, me aparezcan solo las personas cuyo apellido 1 empieze por C)

y asi sucesibamente hasta la letra Z

ecfisa
20-05-2014, 12:04:56
Hola Jrodfer89, bienvenido a Club Delphi.

No mencionas con que componente te estas conectando a la bd, pero por el ícono que aparece en la imágen de tu adjunto pareciera que se trata de un TTable .

Con él podrías hacer:

...
implementation

var
Filtro: Char;

// Este evento debes asignarlo a todos los botones
procedure TForm1.SpeedButtonsClick(Sender: TObject);
begin
Filtro:= (Sender as TSpeedButton).Caption[1]; //(*)
Table1.Filtered:= False;
Table1.Filtered:= True;
end;

procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
Accept:= UpCase(Table1.FieldByName('COGNOM1').AsString[1]) = UpCase(Filtro);
end;

En la imágen también pareciera que se tratan de TSpeedButton, de no ser así reemplazá el moldeo en la línea (*) por la clase correspondiente (TButton, TBitBtn, ...).

Por último y como es costumbre con los nuevos miembros, te invitamos a que leas nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php).

Saludos :)

Neftali [Germán.Estévez]
20-05-2014, 12:06:54
Hola amigos,
miren estoy trabajando para hacer una agenda en delphi en base de datos, me gustaria saber la formula para los botones:

(cuando le doy por ejemplo a la letra A, me aparezcan solo las personas cuyo apellido 1 empieze por A)
(cuando le doy por ejemplo a la letra B, me aparezcan solo las personas cuyo apellido 1 empieze por B)
(cuando le doy por ejemplo a la letra C, me aparezcan solo las personas cuyo apellido 1 empieze por C)

y asi sucesibamente hasta la letra Z

Pues lo suyo sería realizar una consulta para que te filtre los registros que cumplan esa condición.
Algo así como:


SELECT * FROM AGENDA WHERE NOMBRE LIKE 'A%'

Jrodfer89
22-05-2014, 15:49:30
Hola de nuevo,
los botones son TBitBtn y en el codigo he puesto esto:
procedure TForm1.BaClick(Sender: TObject);
begin
Filtro:= (Sender as TBitBtn).Caption[1];
Table1.Filtered:= False;
Table1.Filtered:= True;
end;

Ahora solo me falta poner este codigo, pero no se en donde va puesto
procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
Accept:= UpCase(Table1.FieldByName('COGNOM1').AsString[1]) = UpCase(Filtro);
end;

muchas gracias

ecfisa
22-05-2014, 16:31:37
Hola Jrodfer89.
... pero no se en donde va puesto...
Hacé click sobre el componente TDataSet que estes usando (TTable, TADOTable, etc) de modo que quede seleccionado. Desde el Object Inspector (si está oculto presiona F11) hace click sobre la pestaña Events y luego doble click sobre el evento OnFilterRecord, Delphi automáticamente te armará el cuerpo de la función así:
procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin

end;
Luego copia y pega la línea:
Accept:= UpCase(Table1.FieldByName('COGNOM1').AsString[1]) = UpCase(Filtro);
ente el begin ~ end y listo.

Cuando incluyas código en tus mensajes recorda usar los TAG's:
http://img403.imageshack.us/img403/3461/75416396.jpg

Saludos :)

Jrodfer89
27-05-2014, 21:37:33
Ya casi por terminar, me gustaria saber como hacer para que dentro del mismo programa, abrir una ventana que incluyera un codigo para que me buscara a la persona que yo quisiera.



Ejemplo: (Dentro del programa) --> Tener una pestaña que me dijese [buscar persona]
(codigo para esta pestaña)

ecfisa
27-05-2014, 22:50:25
Hola Jrodfer89.

Una opción es usar el componente TPageControl: TPageControl - Delphi Usage Examples, Tips and Tricks (http://delphi.about.com/od/tpagecontrol/)

Saludos :)