Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-05-2008
Avatar de kbaby
kbaby kbaby is offline
Miembro
 
Registrado: oct 2007
Ubicación: Granada
Posts: 178
Poder: 19
kbaby Va por buen camino
Vale Delphius aquí estuve pensando pero creo que con tus palabras ya me das todo "machacado" aunque yo sea duro y no me entere. He hecho un nuevo código para que busque el DNI de la persona y lo pase a la tabla. Sólo busca a una persona, a la primera, pero no importa, lo que quiero hacer es que funcione el código hecho por mi. Aquí te lo pongo y me dices si tienes erratas, porque se me ejecuta el programa, pincho en el boton y ... "no hace nada ".

---> CORRECCIÓN: Ya si me funciona y me busca a la persona !!! Bien !!! el fallo estaba en el signo > del while que antes puse < jaja.

Código Delphi [-]
procedure TForm1.Button12Click(Sender: TObject);
var salto:integer ;
begin
  salto:=0;
  while l.items.count > salto do
     If edit7.text = l.Items[salto] then begin
          t.cells[salto+1,1]:=l.Items[salto];
          t.cells[salto+2,1]:=l.items[salto+1];
          t.cells[salto+3,1]:=l.items[salto+2];
          t.cells[salto+4,1]:=l.items[salto+3];
          inc(salto,4);
          end;



end;
end.

Ya tengo un boton de BUSCAR creado por mi jojojo gracias tio.

Última edición por kbaby fecha: 30-05-2008 a las 22:44:26.
Responder Con Cita
  #2  
Antiguo 30-05-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Kbaby, vas entiendo.... el error está en que salto debe recibir inialmente el valor igual a la posición - 1 del campo a buscar. Es decir que:
Si estamos buscando Apellido, Salto debe valer incialmente 2.
Si estamos buscando Nombre, Salto debe valor inicialmente 1.
Si estamos buscando DNI, Salto debe valer inicialmente 0.
Si estamos buscando Ciudad, Salto debe valor inicialmente 3.

Recuerda que StrinGrid comienza en cero por ello:
[0] -> DNI
[1] -> Nombre
...
[3] -> Ciudad

el inc(salto,4) debe hacerse fuera del IF. Ten presente que por más que encuentre, o no... debe seguir recorriendo la lista.

Otro problema, estás sobreescribiendo la primera fila. Necesitas de otra variable, que se incremente en 1 sólo cuando haya una coincidencia, de modo que con Cells[salto +- ?,otra_variable] se consiga ir iterando fila a fila en cada condidencia.

Creo que con esto ya lo tienes.
Ya te lo di bastante regalado.

EDITO:
Otra cosa que veo, es que como dije antes, además de esos campos necesigas guardar el valor de salto para tener referencia e implementar el algoritmo de volcado inverso (desde el STringGrid hacia el TListBox).

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 30-05-2008 a las 22:48:11.
Responder Con Cita
  #3  
Antiguo 30-05-2008
Avatar de kbaby
kbaby kbaby is offline
Miembro
 
Registrado: oct 2007
Ubicación: Granada
Posts: 178
Poder: 19
kbaby Va por buen camino
Fin del problema (no del hilo).

Aquí tengo el codigo made in kbaby para buscar a todos los que tienen el mismo DNI (o lo que sea).

Código Delphi [-]
procedure TForm1.Button5Click(Sender: TObject);
var salto,casilla:integer ;
begin
  panel2.visible:=false;
  edit3.Visible:=false;
  button5.Visible:=false;
  salto:=0;
  casilla:=0;
  while l.items.count > salto do begin
     If edit3.text = l.Items[salto] then begin
          t.cells[1,casilla+1]:=l.Items[salto];
          t.cells[2,casilla+1]:=l.items[salto+1];
          t.cells[3,casilla+1]:=l.items[salto+2];
          t.cells[4,casilla+1]:=l.items[salto+3];
          t.rowcount:=t.rowcount+casilla;
          inc(casilla);
          end;
     inc(salto,4);
     end;
end;

Funciona de maravilla jajaja.

He añadido al código un contador el de t.rowcount porque conforme encuentre a una persona la mesa en la tabla y aumente una fila.

Ahora lo siguiente que voy a hacer, es una vez volcado en la tabla (una persona o dos o las que sean) si la modifico, guardarla y que no se borren las otras. YeahhH!!!!

Última edición por kbaby fecha: 30-05-2008 a las 23:14:28. Razón: El código fallaba porque el inc estaba en lugar equivocado, gracias Delphius.
Responder Con Cita
  #4  
Antiguo 30-05-2008
Avatar de Fenareth
[Fenareth] Fenareth is offline
Miembro Premium
 
Registrado: oct 2007
Ubicación: Guadalajara, Jalisco, México
Posts: 494
Poder: 19
Fenareth Va por buen camino
Cita:
Empezado por kbaby Ver Mensaje
Fin del problema (no del hilo).

Aquí tengo el codigo made in kbaby para buscar a todos los que tienen el mismo DNI (o lo que sea).

Funciona de maravilla jajaja.

Ahora lo siguiente que voy a hacer, es una vez volcado en la tabla (una persona o dos o las que sean) si la modifico, guardarla y que no se borren las otras. YeahhH!!!!
Se siente bien cierto ???
Responder Con Cita
  #5  
Antiguo 30-05-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Cita:
Empezado por kbaby Ver Mensaje
Fin del problema (no del hilo).
Aquí tengo el codigo made in kbaby para buscar a todos los que tienen el mismo DNI (o lo que sea).
(...)
Un momentito... ¿solo son créditos tuyos? made in kabby, powered by Delphius.

Cita:
Empezado por fenareth Ver Mensaje
Se siente bien cierto ???
Si... se siente... bien...
Veo que mi alumnito está aprendiendo.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #6  
Antiguo 30-05-2008
Avatar de kbaby
kbaby kbaby is offline
Miembro
 
Registrado: oct 2007
Ubicación: Granada
Posts: 178
Poder: 19
kbaby Va por buen camino
Cool

Que haría yo sin tí jajaja

Ya le hice unos retoques al código. Bueno me voy a dormir, mañana ya miro el paso inverso:

TStringGrid -> TListBox


Buenas noches
y....


gracias
Responder Con Cita
  #7  
Antiguo 31-05-2008
Avatar de kbaby
kbaby kbaby is offline
Miembro
 
Registrado: oct 2007
Ubicación: Granada
Posts: 178
Poder: 19
kbaby Va por buen camino
Bueno! Aquí regreso Con una pregunta para seguir adelantando cosas...

Quisiera utilizar un form2 (por falta de espacio) donde coloque una StringGrid (donde se volcarán todos los items de mi ListBox). Una vez volcados, quisiera hacer cálculos con ellos, el porcentaje de hombres/mujeres, el porcentaje de gente de Córdoba... etc... (eso si sé).

Mi duda es la siguiente... ¿qué tengo que hacer para en el form2 utilizar el listbox que tengo en el form1?.

Gracias.
Responder Con Cita
  #8  
Antiguo 06-06-2008
Avatar de kbaby
kbaby kbaby is offline
Miembro
 
Registrado: oct 2007
Ubicación: Granada
Posts: 178
Poder: 19
kbaby Va por buen camino
Cool

Aquí estoy de nuevo. El lunes, último día para entregar mi proyecto. Está fenomenal gracias!. Bueno bueno lo unico que me queda es hacer eso de que cuando vuelco a una persona al StringGrid y la modifico desde allí, guardarla en el listbox.

Como me dijiste delphius "piensa en frio" pues eso hice. Se me ocurrió hacer esto:

1. Busco a la persona por su DNI "así me aseguro que sólamente salga 1 persona".
2. Una vez tengo a la persona (con sus datos) en la rejilla, modifico los datos.
3. Hago un button que lo que haga es borrar a esa persona1 de la lista y con los nuevos datos que hay de esa persona1 en la rejilla los vuelco a edits que luego se guardarán en el listbox.

Yo creo que se puede hacer, y sería facil ya que dispongo de conocimientos para hacerlo. Sólo quiero una opinion:

¿está bien pensado?.

Bueno! Luego mas tarde me pondre a ponerlo en práctica y ya cuando lo termine, me lo traeré para que lo veais que está muy chuuuloooo!!!.
Saludos
Responder Con Cita
  #9  
Antiguo 06-06-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Cita:
Empezado por kbaby Ver Mensaje
Aquí estoy de nuevo. El lunes, último día para entregar mi proyecto. Está fenomenal gracias!. Bueno bueno lo unico que me queda es hacer eso de que cuando vuelco a una persona al StringGrid y la modifico desde allí, guardarla en el listbox.

Como me dijiste delphius "piensa en frio" pues eso hice. Se me ocurrió hacer esto:

1. Busco a la persona por su DNI "así me aseguro que sólamente salga 1 persona".
2. Una vez tengo a la persona (con sus datos) en la rejilla, modifico los datos.
3. Hago un button que lo que haga es borrar a esa persona1 de la lista y con los nuevos datos que hay de esa persona1 en la rejilla los vuelco a edits que luego se guardarán en el listbox.

Yo creo que se puede hacer, y sería facil ya que dispongo de conocimientos para hacerlo. Sólo quiero una opinion:

¿está bien pensado?.

Bueno! Luego mas tarde me pondre a ponerlo en práctica y ya cuando lo termine, me lo traeré para que lo veais que está muy chuuuloooo!!!.
Saludos
Hola kbaby, no me parece demasiado indicado realizar el borrado y luego agregarlo.
¿Si se puede modificar tranquilamente sin estar borrando e insertando para que hacer esos pasos? Sobre todo lo desaconsejo si utilizas Add en vez de Insert. Puesto que Add agrega al final, e Insert en la posición indicada en su parámetro y corriendo los demás elementos.

Si puedes localizar el indice al que hace mención los datos de dicha persona, tranquilamente puedes modificar los datos de dicho indice en el TListBox.

Código Delphi [-]
ListBox.Items[indice] := STringGrid.Cells[x,y];

Esa línea contra estas dos:

Código Delphi [-]
ListBox.Items.Delete(...)
ListBox.Items.Add(...)

No tengo Delphi a mano, pero creo que se entiende la idea.

Al volcar los datos desde el TStringGrid hacia el TListBox se sobreescriben todos los datos asociados a dicha persona.
El guardado físico (en el archivo txt) no le interesa si se modificaron 1, 3, 40 datos... guardará en el orden que se encuentren en el TListBox.

Si borras y agregas estarás corriendo los datos y si bien al final en el txt se guardarán como estan representados el efecto es distinto... Los datos inicialmente estaban en cierto orden, y al final... pueden que ya no conserven dicha posición.
Puede ser "molesto" el correr los datos de lugar.
Lo mejor sería sobreescribirlos.

¿Porqué quieres borrarlos? ¿No terminaste de comprender mi idea verdad?

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #10  
Antiguo 06-06-2008
Avatar de kbaby
kbaby kbaby is offline
Miembro
 
Registrado: oct 2007
Ubicación: Granada
Posts: 178
Poder: 19
kbaby Va por buen camino
Cita:
¿Porqué quieres borrarlos? ¿No terminaste de comprender mi idea verdad?
Ajá y ni logro comprenderla. Y esto se debe a que el profesor no me enseño como hacerlo y hoy se lo pregunte y me dijo que buscará por internet y yo pensé esto. Si mi listbox tiene estos items:

nombre1
provincia1
telefono1
nombre2
provincia2
telefono2

Si yo busco a una persona (a la persona 1) y la vuelco en un stringgrid. Una vez alli, modifico su nombre1 (y pongo pepe). Luego borro nombre1, provincia1, telefono1. Y añado: pepe, provincia1, telefono1. Quedando:

nombre2
provincia2
telefono2
pepe
provincia1
telefono1

El orden de las personas no altera nada, siempre que los items tengan una posicion correcta por ejemplo, todos los telefonos tendran estas posiciones:

3-6-9-12...

Mientras esos órdenes no se alteren... puedo hacerlo ¿o no?

Grax
Responder Con Cita
  #11  
Antiguo 06-06-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Efectivamente kbaby, los datos siguen el orden.
Pero si te fijas ahora la persona que estaba primero, queda despues de una modificación en último lugar.

Y eso, puede ser molesto.

Como es de práctica lo que estás haciendo no importa mucho. Pero en situaciones reales puede marear un poco.

Lo que tu buscas se consigue en dos pasos, lo que yo digo se consigue en uno.
Si se puede sustituir en un solo paso ¿para que hacer más de la cuenta?

Te estoy preparando una demo para que veas de lo que hablo. Dame unos minutos más y te la tengo lista.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Ayuda con código. wofox Varios 6 11-12-2007 00:16:21
Ayuda con un codigo JoNieve C++ Builder 0 21-04-2007 12:27:33
Ayuda con error en codigo :-( jorgegetafe Varios 6 07-02-2007 19:29:04
Codigo de Barras.... Ayuda!!!!! adolfoz Varios 14 15-11-2006 17:13:55
Ayuda con código de barras ramiretor Varios 0 28-06-2003 00:42:58


La franja horaria es GMT +2. Ahora son las 08:08:08.


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