Delphi - ayudenme con codigo

 
Vista:

ayudenme con codigo

Publicado por Ac1d0k (13 intervenciones) el 07/04/2007 19:34:42
porfa ayudenme con codigo para la separacion de las palabras ke entren en un edit y guardarlas en variables o en otros edits
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayudenme con codigo

Publicado por nombre (484 intervenciones) el 09/04/2007 00:55:07
No te esfuerces tanto en presentar tu duda que a lo mejor la entendemos y te la solucionamos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayudenme con codigo

Publicado por nombre (484 intervenciones) el 09/04/2007 00:55:29
No te esfuerces tanto en presentar tu duda que a lo mejor la entendemos y te la solucionamos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:ayudenme con codigo

Publicado por E.T. (1244 intervenciones) el 09/04/2007 18:32:46
Que tal, creo que esto te puede servir necesitamos un edit y un botón, en el evento onclick del boton po lo siguiente:

procedure TForm1.Button1Click(Sender: TObject);
var palabras:array of string;
i:integer;
begin
i:=0;
SetLength(palabras,length(palabras)+1);
palabras[length(palabras)-1]:='';
repeat
inc(i);
if Edit1.text[i]<>' ' then begin
palabras[length(palabras)-1]:=palabras[length(palabras)-1]+Edit1.text[i];
end else begin
while Edit1.text[i]=' ' do
Inc(i);
if i<length(edit1.text)then
SetLength(palabras,length(palabras)+1);
dec(i);
end;
until i=Length(edit1.Text);

for i:=1 to length(palabras)do
ShowMessage(palabras[i-1]);
end;

El codigo anterior guarda las palabras de el edit en un arreglo o matriz de strings y al finalizar el proceso los muestra como un mensaje uno por uno
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayudenme con codigo

Publicado por Ac1d0k (13 intervenciones) el 09/04/2007 22:44:57
esta muy bueno el codigo ese pero tengo un problema quiero meter cada palabra en un edit diferente por ejemplo en nombre en edit1 apellido paterno en el edit2 asi y no puedo no se si pudieran ayudarme
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:ayudenme con codigo

Publicado por E.T. (1244 intervenciones) el 09/04/2007 23:32:43
Aqui se complica un poco la cosa, por ejemplo hay apellidos como "De la Rosa", o personas con más de un nombre, que obviamente no son una palabra, por lo tanto hice lo siguiente:

En lugar de que selecciones palabra por palabra, lo que vamos ha hacer es que en una variable se guarde el texto como lo seleccionemos, es decir, si alguien tiene dos nombres o apellidos compuestos lo guardaremos y lo almacenaremos según lo seleccionemos, a continuación te muestro el código

Delcaramos en el apartod private la siguiente variable

palabras:array of string;

Agregamos un edit

en el evento OnKeyDown del edit ponemos

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_ADD then begin
SetLength(palabras,length(palabras)+1);
palabras[Length(palabras)-1]:=Edit1.SelText;
end else if key=VK_SUBTRACT then
SetLength(palabras,0);
end;

El código de arriba hace lo siguiente: dentro de una variable array en su primer elemento pondrá el texto que esté seleccionado dentro del edit, al hacerlo por segunda ves lo hará en su elemnto numero 2 y asi sucesivamente. Entonces lo que hay que hacer es seleccionar el o los nombres y presionar la tecla '+' luego seleccionamos el apellido paterno y presionamos de nuevo '+' y lo mismo con el materno, hecho esto tenemos el nombre separado correctamente, si así lo hicimos, ahora solo queda asignarlo a los edits correspondientes, se debe presionar la tecla '-' antes de hacerlo con otro nombre ya que si no lo hacemos los datos anteriores aún estarán almacenados.

si quieres hacerlo de forma automática se requiere de muchas validaciones de como estan compuestos lo nombres y llevaría algo de tiempo hacerlo.

En el evento OnKeyPress ponemos

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key in ['+','-'] then
key:=#0;
end;

Y por último en un botón ponemos

procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.text:=palabras[0];
Edit2.text:=palabras[1];
Edit3.text:=palabras[2];
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayudenme con codigo

Publicado por Ac1d0k (13 intervenciones) el 10/04/2007 18:26:46
sorry por molestarte otra ves pero con lo que ponga en los edits o en el arreglo kiero buscar un registro que coinsida con los tres campos de mi tabla lo estube intentando con el locate pero no puedo y quisiera que porfa si puedes me ayudes con eso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:ayudenme con codigo

Publicado por E.T. (1244 intervenciones) el 10/04/2007 19:05:25
Bueno depende de que quieras utilizar, puedes utilizar la propiedad filter de tu tabla, un query o el locate que mencionas te pongo las tres haber cual se te acomoda más

Supongamos que ya tenemos en el arreglo lleno con el nombre para los tres casos

*************************************Para el Filter**************************************
En el botón donde ibamos a pasar los valores a los edits ponemos lo siguiente

TabladeClientes.Filtered:=false;
TabladeClientes.Filter:='Nombre = '+QuotedStr(palabras[0])+' And ApellidoPaterno
= '+QuotedStr(palabras[1])+' And ApellidoMaterno = '+QuotedStr(palabras[2]);
TabladeClientes.Filtered:=true;

NOTA: los campos que son de tipo char o string se les pone quotedStr, si los campos son numéricos no lleva en quotedstr

De esa manera encontramos el registro deseado, pero solo nos mostrará un registro en el grid, para restaurarlo desactivamos la propiedad filtered de la tabla

*************************************Para el locate*************************************
Ponemos en el mismo botón lo siguiente

Tabla.Locate('Nombre;Apellido_Paterno;Apellido_Materno',VarArrayOf([palabras[0],palabras[1],palabras[2]]),[]);

Esto hará que el cursor de la tabla se dirija hacia el registro que corresponda, ten en cuenta que si el nombre no está escrito igual que en la tabla, no encontrará nada.

***************************************Para en query***********************************
SELECT *
FROM TablaClientes
Where Nombre=:PNombre And ApellidoPaterno=:PApellidoPaterno
And ApellidoMaterno=:PApellidoMaterno

Una ves que esto está en el query vamos al botón que hará la busqueda y ponemos lo siguiente

Query.Active:=false;
query.Params[0].Value:=Palabras[0];
query.Params[1].Value:=Palabras[1];
query.Params[2].Value:=Palabras[2];
query.active:=true;

Espero esto te sea de utilidad, si no pregunte de nuevo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayudenme con codigo

Publicado por Ac1d0k (13 intervenciones) el 10/04/2007 19:39:01
bueno solo otra pregunta este codigo sirve para llamar a DBedits la informacion del registro que estoy buscando?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:ayudenme con codigo

Publicado por E.T. (1244 intervenciones) el 10/04/2007 19:42:19
Si los dbEdits están enlazados a la misma tabla o query en el que realizaste la búsqueda la información deberá aparecer si la búsqueda fue exitosa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayudenme con codigo

Publicado por Ac1d0k (13 intervenciones) el 10/04/2007 20:27:09
grax por todo si me surge alguna otra duda te la comentare gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar