Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-03-2010
emiliano_b emiliano_b is offline
Miembro
 
Registrado: mar 2010
Posts: 13
Poder: 0
emiliano_b Va por buen camino
Otra vez yo

Gente, he podido avanzar astante... tengo algunos detalles nomas.... (ademas de algunos errores menores que ya voy resolviendo...

1ero.. puedo realizar busquedas bien en el txt con los datos que agrego.. se
ve que estono es php, porque ahi yo puedo leer sin problemas lo que escribo a partir de un archivo.. sera el tipo de codificacion??, en fin, mientras pueda escribir y realizar busquedas en el txt no me interesa mucho.

2do.. La verdad que no encuentro como meter los datos del txt en un stringgrid, en esto no tengo ni idea... es una matriz de 4 elementos.

3ro.. como hago una validadcion del tipo siguiente para usar un mismo boton y no tener que agregar uno para cada procedimiento?? Intente algo del tipo:
if nuevo1Click.execute = true then
begin
end
if abrir1.click.execute = true then
.....

o .action.execute... no recuerdo bien como lohabia hecho.. la cuestion es que no me deja... y se preguntaran porq no lo hago directamente del main menu???...porque el profesor quiere que desde el main seleccione los campos que se habilitan nomas,.... cosas del chango este.
Gracias de nuevo... aunque sea por las bardeadas o las criticas me encabronaron - enojaron lo suficiente para que lo haga..jajajaja
saludos
Responder Con Cita
  #2  
Antiguo 07-03-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por emiliano_b Ver Mensaje
[..]
2do.. La verdad que no encuentro como meter los datos del txt en un stringgrid, en esto no tengo ni idea... es una matriz de 4 elementos.
si tu stringgrid se llama, ejemplo: Rejilla, es tan fácil como el "juego de los barquitos":

Rejilla[Fila,Columna] = "lo que sea";

0,0 - 0,1 - 0,2 - 0,3
1,0 - 1,1 - 1,2 - 1,3
2,0 - 2,1 - 2,2 - 2,3
3,0 - 3,1 - 3,2 - 3,3
Responder Con Cita
  #3  
Antiguo 07-03-2010
emiliano_b emiliano_b is offline
Miembro
 
Registrado: mar 2010
Posts: 13
Poder: 0
emiliano_b Va por buen camino
A ver si me explico mejor

En relacion a CLIENTE es Cliente = Record, yc:CLIENTE...sino entendi mal, sino me salio de casualidad es como asignarlo a c...sino contame que hice jaja.
Con respecto a lo segundo... del stringrid..
peor si e sun while y no se la cantidad de elementos que voy a tener?, porq asi pongo los titulos, eso lo hice, Pero el tema es si hago un while?
gracias gente.
Responder Con Cita
  #4  
Antiguo 07-03-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Deberías explicar cómo lo lees, qué haces, ¿lees línea a línea del fichero de texto y luego debes poner los datos leídos en el grid, no?, si es así, sólo debes de crearte por ejemplo un par de variables para fila y columna y hacer el bucle:

Pones los títulos en la fila 0, luego:
Más o menos así, es que no sé cómo lo tienes implementado, pero la idea es esta:
Código:
fila:=1;
columna:0;

Cliente.first;
while not cliente.eof do
begin
  rejilla[fila,columna] := c.nombre;
  inc(columna);
  rejilla[fila,columna] := c.apellidos;
  ...
  ...
  cliente.next;
  inc(fila):
end;
Responder Con Cita
  #5  
Antiguo 07-03-2010
emiliano_b emiliano_b is offline
Miembro
 
Registrado: mar 2010
Posts: 13
Poder: 0
emiliano_b Va por buen camino
ta muy bueno lo que me decis..

Esta muy buena la forma en que me decis de hacerlo, pero como que definis fila y columna... te muestro el desastre que tengo hecho hasta aho desde la unit 2 donde estan los procedimientos para la otra unit:
Código Delphi [-]
unit Unit2;

interface
uses Dialogs, StdCtrls, SysUtils, Grids;

type
Cliente = Record
  Apellido, nombres: string[20];
  DNI, saldo: double;
end;
TArchivo = class
private
  Archi:File of Cliente;
  datos: Cliente;
  Ver: TStringGrid;
public
  procedure CrearArchivo(ArchiFisico:string);
  procedure AbrirArchivo(ArchiFisico:string);
  procedure AgregarCliente(c:Cliente;var b:byte);
  procedure GuardarArchivo(ArchiFisico:string);
  procedure EliminarCliente(var h:longint; e10: string);
  procedure CerrarArchivo;
  function Buscar_X_DNI(var h:longint; var c:Cliente):boolean;
  procedure MostrarLista(var ver:TStringGrid);
end;
implementation

procedure TArchivo.CrearArchivo;
  begin
    AssignFile(Archi,ArchiFisico);
    Rewrite(Archi);
  end;
procedure TArchivo.AbrirArchivo(ArchiFisico:string);
  begin
    AssignFile(Archi,ArchiFisico);
    Reset(Archi)
  end;
procedure TArchivo.AgregarCliente(c:Cliente;var b:byte);
  begin
  {$I-}
  Seek(Archi, FileSize(archi));
  {$I+};
  b:=IOResult;
    If b=0 then
      Write(Archi, c);
  end;
procedure TArchivo.GuardarArchivo(ArchiFisico:string);
  begin
    AssignFile(Archi,ArchiFisico);
    Rewrite(Archi);
  end;
procedure TArchivo.EliminarCliente(var h:longint; e10: string);
var
  aux: file of Cliente;
begin
  assignfile(aux,'temp.dat');
  {$I-}
  reset(archi);
  rewrite(aux);
  {$I+}

    if ioresult<>0 then
    showmessage('Error en Archivo')
    else
      Begin
      while not eof (archi) do begin
      read(archi,datos);
          if datos.dni <> h then
          write(aux,datos);
      end;
  closefile (archi);
  closefile(aux);
  erase(Archi);
    if not
    RenameFile('temp.dat', e10)
    then
    Showmessage('Error renombrando Archivos!');
    end;
    Showmessage ('Se eliminó correctamente el Cliente con DNI'+ inttostr(h));
end;
procedure TArchivo.CerrarArchivo;
  begin
      if IOresult = 0 then
      begin
      closefile(Archi);
      end


  end;
function TArchivo.Buscar_X_DNI(var h:longint;var c: Cliente):boolean;
begin
  reset(archi);
  while not eof (archi) do
  begin
    read(archi, c);
    if c.dni = h then
      begin
      Result := True;
      Exit;
      end;
  end;
  // Cliente no encontrado
  Result := False;
end;
  procedure TArchivo.MostrarLista(var ver:TStringGrid);
  var fila, columna: integer;
  begin
  with ver do
    begin
    // Título de las columnas
      Cells[0, 0] := 'NOMBRE';
      Cells[1, 0] := 'APELLIDO';
      Cells[2, 0] := 'DNI';
      Cells[3, 0] := 'SALDO';
    Reset(Archi);
fila:=1;
columna:=0;

cliente.first;
while not cliente.eof do
begin
  rejilla[fila,columna] := c.nombre;
  inc(columna);
  rejilla[fila,columna] := c.apellidos;
  ...
  ...
  cliente.next;
  inc(fila):
end;
end;
    showmessage('El Archivo esta vacio');
    exit;
    end;
  end;
end.

NI falta que me digas que debe tener errores, voy emparchando mas o menos porq lo tengo que terminar hoy si osi porq mañana laburo, asi que nada...lo hago como puedo... la proxima ya ira mejor imagino.
gracias por todo viejo.

Última edición por rgstuamigo fecha: 09-03-2010 a las 14:35:50. Razón: Estética en el código
Responder Con Cita
  #6  
Antiguo 07-03-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por favor, pon el código entre etiquetas code, así es complicado leerlo

[code ]
...
tu código
...
[/code ]

sin el espacio que he dejado entre el 'e ]'
Responder Con Cita
  #7  
Antiguo 07-03-2010
emiliano_b emiliano_b is offline
Miembro
 
Registrado: mar 2010
Posts: 13
Poder: 0
emiliano_b Va por buen camino
Perdon, soy nuevo en el foro

Ahi va de nuevo el codigo...toy buescando como hacer lo que me dijiste..
Código:
unit Unit2;

interface
uses Dialogs, StdCtrls, SysUtils, Grids;

type
Cliente = Record
  Apellido, nombres: string[20];
  DNI, saldo: double;
end;
TArchivo = class
private
  Archi:File of Cliente;
  datos: Cliente;
  Ver: TStringGrid;
public
  procedure CrearArchivo(ArchiFisico:string);
  procedure AbrirArchivo(ArchiFisico:string);
  procedure AgregarCliente(c:Cliente;var b:byte);
  procedure GuardarArchivo(ArchiFisico:string);
  procedure EliminarCliente(var h:longint; e10: string);
  procedure CerrarArchivo;
  function Buscar_X_DNI(var h:longint; var c:Cliente):boolean;
  procedure MostrarLista(var ver:TStringGrid);
end;
implementation

procedure TArchivo.CrearArchivo;
  begin
    AssignFile(Archi,ArchiFisico);
    Rewrite(Archi);
  end;
procedure TArchivo.AbrirArchivo(ArchiFisico:string);
  begin
    AssignFile(Archi,ArchiFisico);
    Reset(Archi)
  end;
procedure TArchivo.AgregarCliente(c:Cliente;var b:byte);
  begin
  {$I-}
  Seek(Archi, FileSize(archi));
  {$I+};
  b:=IOResult;
    If b=0 then
      Write(Archi, c);
  end;
procedure TArchivo.GuardarArchivo(ArchiFisico:string);
  begin
    AssignFile(Archi,ArchiFisico);
    Rewrite(Archi);
  end;
procedure TArchivo.EliminarCliente(var h:longint; e10: string);
var
  aux: file of Cliente;
begin
  assignfile(aux,'temp.dat');
  {$I-}
  reset(archi);
  rewrite(aux);
  {$I+}

    if ioresult<>0 then
    showmessage('Error en Archivo')
    else
      Begin
      while not eof (archi) do begin
      read(archi,datos);
          if datos.dni <> h then
          write(aux,datos);
      end;
  closefile (archi);
  closefile(aux);
  erase(Archi);
    if not
    RenameFile('temp.dat', e10)
    then
    Showmessage('Error renombrando Archivos!');
    end;
    Showmessage ('Se eliminó correctamente el Cliente con DNI'+ inttostr(h));
end;
procedure TArchivo.CerrarArchivo;
  begin
      if IOresult = 0 then
      begin
      closefile(Archi);
      end


  end;
function TArchivo.Buscar_X_DNI(var h:longint;var c: Cliente):boolean;
begin
  reset(archi);
  while not eof (archi) do
  begin
    read(archi, c);
    if c.dni = h then
      begin
      Result := True;
      Exit;
      end;
  end;
  // Cliente no encontrado
  Result := False;
end;
  procedure TArchivo.MostrarLista(var ver:TStringGrid);
  var fila, columna: integer;
  begin
    Reset(Archi);
    fila:=1;
    columna:=0;
    while not EOF do
    begin
      datos.first;
      ver.Cells[fila,columna] := datos.nombres;
      inc(columna);
      ver.Cells[fila,columna] := datos.Apellido;
      archi.datos.next;
      inc(fila):
    end;
end;
    showmessage('El Archivo esta vacio');
    exit;
    end;
  end;
end.
gracias
Responder Con Cita
  #8  
Antiguo 08-03-2010
emiliano_b emiliano_b is offline
Miembro
 
Registrado: mar 2010
Posts: 13
Poder: 0
emiliano_b Va por buen camino
ayuda con esto..no sale

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Deberías explicar cómo lo lees, qué haces, ¿lees línea a línea del fichero de texto y luego debes poner los datos leídos en el grid, no?, si es así, sólo debes de crearte por ejemplo un par de variables para fila y columna y hacer el bucle:

Pones los títulos en la fila 0, luego:
Más o menos así, es que no sé cómo lo tienes implementado, pero la idea es esta:
Código:
fila:=1;
columna:0;

Cliente.first;
while not cliente.eof do
begin
  rejilla[fila,columna] := c.nombre;
  inc(columna);
  rejilla[fila,columna] := c.apellidos;
  ...
  ...
  cliente.next;
  inc(fila):
end;
!!!!!!!!!!!!esto ultimo , el haer el next para que empiece a trabar en el siguiente array de elemntos no lo puedo hacer andar...ya probe con un if, buqsque ver ocmo usar ese next y el first pero no hay caso.
grax
Responder Con Cita
  #9  
Antiguo 08-03-2010
emiliano_b emiliano_b is offline
Miembro
 
Registrado: mar 2010
Posts: 13
Poder: 0
emiliano_b Va por buen camino
ya casi esta

lo resolvi asi... no se si es la mejor manera, pero es la que pense
Código:
  procedure TArchivo.MostrarLista(var ver:TStringGrid);
  var fila, columna,i: integer; d1,d2: word; d3, d4: real;
  begin
    if IOresult<> 0 then
      begin
      showmessage('El Archivo esta vacio');
      exit;
      end;
    ver.Cells[0,0]:='Nombre';
    ver.Cells[1,0]:='Apellido';
    ver.Cells[2,0]:='DNI';
    ver.Cells[3,0]:='Saldo';
    while not eof(archi) do begin
    read(archi, datos);
    columna:=0;
        for fila:=1 to 3 do
            ver.Cells[columna,fila] := datos.nombres;
            inc(columna);
        for fila:=1 to 3 do
            ver.Cells[columna,fila] := datos.Apellido;
            inc(columna);
        for fila:=1 to 3 do
            ver.Cells[columna,fila] := FloatToStr(datos.DNI);
            inc(columna);
        for fila:=1 to 3 do
            ver.Cells[columna,fila] := FloatToStr(datos.saldo);
            inc(columna);
      end;
    end;
casi..falta hacer una validadcion poniendo los valores negatovos y los positivos..
Responder Con Cita
  #10  
Antiguo 08-03-2010
emiliano_b emiliano_b is offline
Miembro
 
Registrado: mar 2010
Posts: 13
Poder: 0
emiliano_b Va por buen camino
ultima ayuda constringgrid y validacion

gente les pido un ultimo favor... faltando 3horas para irme a trabajr y ocon la intencion de dormir al menos dos apelo a su buena voluntad..
necesito limpiar un stringrid al seleccionar para ejecutar otra consulta y ver la nueva.
segundo asunto, necesito validar uno de los campos para ver si es un valor negativo o positivo.
hasta aca es donde llegue:

Código:
  procedure TArchivo.MostrarListaPositivos(var ver:TStringGrid);
  var fila, columna,i: integer;
  begin
    if IOresult<> 0 then
      begin
      showmessage('El Archivo esta vacio');
      exit;
      end;
    ver.Refresh;
    ver.Cells[0,0]:='Nombre';
    ver.Cells[1,0]:='Apellido';
    ver.Cells[2,0]:='DNI';
    ver.Cells[3,0]:='Saldo';
    fila:=1;
    columna:=0;
      while not eof(archi) do
        begin
          read(archi, datos);
          ver.Cells[columna,fila] := datos.nombres;
          ver.Cells[1,fila] := datos.Apellido;
          ver.Cells[2,fila] := FloatToStr(datos.DNI);
          ver.Cells[3,fila] := FloatToStr(datos.saldo);
          inc(fila);
        end;
  end;
imagino que no ha de ser comlicado pero luego de unas 10 horas seguidas con esto ya no tengo resto..
gracias, cualquier aporte sera mas que agradecido
Responder Con Cita
  #11  
Antiguo 08-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Para validar si uno de los campos es positivo o negativo, usa algo así
Código Delphi [-]
Num:=FloatToStr(ver.Cells[2,fila]); //Num sería un real
if (Num>0) then
  Num es positivo
else
  Num es negativo

Para limpiar el StringGrid fiajate si te sirve esto:
Código Delphi [-]
procedure LimpiarStrGrid(var S:TStringGrid);
var
  Fila:Integer;
begin
  //Desde Fila=1 porque Fila=0 contiene el nombre de cada columna
  for Fila := 1 to S.RowCount-1 do begin
    S.Cells[0,Fila]:='';
    S.Cells[1,Fila]:='';
    S.Cells[2,Fila]:='';
    S.Cells[3,FIla]:='';
  end;
  S.RowCount:=2;
  //Así te queda la fila que contiene los nombres de la columna y una fila vacía para empezar a agregar datos
end;
Saludos!

Última edición por BrunoBsso fecha: 08-03-2010 a las 16:25:01.
Responder Con Cita
  #12  
Antiguo 09-03-2010
emiliano_b emiliano_b is offline
Miembro
 
Registrado: mar 2010
Posts: 13
Poder: 0
emiliano_b Va por buen camino
fin de tema

No se de donde se cierra el tema...pero finalmente salio...les agradezco y espero devolver las ayudas que me han dado en algun momento.
saludos
Responder Con Cita
  #13  
Antiguo 09-03-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

No sé si será que tu profesor quiere que trabajes así , pero te cuento que en delphi existen componentes que te permiten hacer exactamente eso que pretender hacer sin codificar casi nada..
Si te interesa puedes avisar para poder explicarte..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
Respuesta



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 este codigo kurono Varios 4 13-06-2008 01:03:29
Ayuda con este código que me dejaron LAFALOFO Varios 7 14-09-2006 20:50:26
una ayuda con este error please dariana20 SQL 3 14-06-2006 23:14:06
Ayuda con este error???? danytorres Varios 1 27-10-2004 11:38:09
Me ayuda alguien con este msg de error? NaZZ Varios 4 12-03-2004 09:31:25


La franja horaria es GMT +2. Ahora son las 10:51:02.


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