Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Agenda Delphi (https://www.clubdelphi.com/foros/showthread.php?t=85882)

Jrodfer89 20-05-2014 10:42:14

Agenda Delphi
 
1 Archivos Adjunto(s)
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:
Código Delphi [-]
...
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.

Saludos :)

Neftali [Germán.Estévez] 20-05-2014 12:06:54

Cita:

Empezado por Jrodfer89 (Mensaje 476613)
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:

Código SQL [-]
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.
Cita:

... 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í:
Código Delphi [-]
procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
   
end;
Luego copia y pega la línea:
Código Delphi [-]
  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:


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

Saludos :)


La franja horaria es GMT +2. Ahora son las 05:35:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi