Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Ayuda con este problema (https://www.clubdelphi.com/foros/showthread.php?t=66675)

emiliano_b 07-03-2010 02:15:08

Ayuda con este problema
 
Hola gente, estoy rindiendo esto, y estoy medio complicado... si alguien la tiene muy clara y tiene ganas de ayudar...para muchos debe ser muy simple pero yo en esto no estoy muy aceitado porq no lo uso demasiado... en fin, les dejo lo que me han pedido para ver que les sale..
Una buena parte la hice, pero me estoy comlicado y por cuestiones de trabjo estoy corto de tiempo...muy corto..
La aplicación debe tener los menús que se indican en la Fig.1. Sus opciones o comandos se detallan a continuación:



Menú Archivo:
Nuevo, Abrir, Guardar, Agregar Cliente, Eliminar Cliente, Cerrar
Donde
Nuevo: crea un nuevo archivo a través de un cuadro de diálogo para almacenar la lista de clientes
Abrir: abre un archivo existente para agregar nuevos clientes o procesar su información.
Guardar: abre un cuadro de diálogo para guardar el archivo con otro nombre o en otro lugar (Guardar como).
Agregar Cliente: actualiza el archivo con los datos de un nuevo cliente.
Eliminar cliente: elimina un cliente del archivo. Al elegir esta opción se deben “apagar” los edit del Formulario a excepción del correspondiente al DNI. Al hacer clik en ACEPTAR se elimina el cliente.
Cerrar: cierra el archivo.






Menú Herramientas:
Buscar Cliente x DNI, Listado de clientes, Lista de clientes con saldo positivo, Lista de clientes con saldo negativo.
Donde:
Buscar Cliente x DNI: anula (apaga) los EDIT a excepción del DNI y permite al usuario buscar en el archivo a dicho cliente al hacer click en ACEPTAR. Si lo encuentra coloca sus datos en cada Edit y aparece su saldo.

Listado de Clientes: Lista en un componente StringGrid (paleta de componentes Adicional) con 4 columnas: apellido, Nombres, DNI y saldo de los clientes del archivo. Saldo Positivo: como en listado de clienes pero solo los clientes con Saldo mayor o igual a cero, Saldo Negativo como el anterior, pero con saldo menor que cero.

Para mostrar los datos utilice componente StringGrid (paleta de componentes Adicional)

en fin, cualquier ayuda sera mas que agradecida, porque hay algunas cosas que nolas manejo del todo-----

Casimiro Notevi 07-03-2010 02:48:46

Hola emiliano_b, bienvenido al clubdelphi, y no olvides echar un vistazo a la guía de estilo del club.

En relación a tu comentario, ¿qué problema tienes?, ¿qué parte no entiendes?, ¿en qué parte necesitas ayuda concretamente?.

Caral 07-03-2010 02:48:47

Hola
Hoy no tengo ganas de hacer un programa completo, paso.
Saludos
PD: Te aconsejo que empieces con algo y sobre todo que cuando solicites ayuda por lo menos des algún avance, aunque sea la BD, no creo que nadie haga esta tarea.

Casimiro Notevi 07-03-2010 02:50:08

Cita:

Empezado por Caral (Mensaje 355876)
Hola
Hoy no tengo ganas de hacer un programa completo, paso.
Saludos [..]

No quise ser tan directo :), ¿quién sabe?, puede que tenga el trabajo casi hecho y tan sólo le falte pequeños detalles ;)

Caral 07-03-2010 02:55:33

Hola amigo.
Si te fijas en lo que solicita lo único que le falta pedir es que imprima jejeje.
Muchas veces hago estos programas para ayudar, ya me conoces, pero esta vez pide y ni siquiera dice con que bd trabaja.
Yo quiero ganar mas dinero, mas clientes, un menú con caviar y por razones de trabajo no lo puedo tener, alguien me ayuda? jejeje.
Saludos

emiliano_b 07-03-2010 02:58:46

Por donde empiezo..
 
Bueno, toda la parte de la interfaz ya esta,de lo de guardar un registro y demas tb.. en eso lo que me llama la atencion es que los valores nuemricos los guarda mal... guarda bienalgunos datos y otros no:
jose t™   perez   Tö Å6*‡;@
eso no se porque sera.
Otra duda: Como muestro todos los datos en un stringrid???.. estoy probando pero no me sale.
Y lo otro.. como se compara las cadenas dentro del txt para poder eliminar o mostra alguna?
bueno..
eprdon por no ser mas especifico en el primer mensaje, pero estoy medio mareado con esto
saludos y grax

emiliano_b 07-03-2010 03:03:32

jeje
 
Cita:

Empezado por Caral (Mensaje 355879)
Hola amigo.
Si te fijas en lo que solicita lo único que le falta pedir es que imprima jejeje.
Muchas veces hago estos programas para ayudar, ya me conoces, pero esta vez pide y ni siquiera dice con que bd trabaja.
Yo quiero ganar mas dinero, mas clientes, un menú con caviar y por razones de trabajo no lo puedo tener, alguien me ayuda? jejeje.
Saludos

no hay base de datos aca amigo... es un trabajo practico para principiantes, y si queres caviar y eso pegate una vuelta por asa, por ahi tenga.

Caral 07-03-2010 03:08:46

Hola
Bueno, me lo gane y lo acepto.:p
Curioso, te piden hacer un programa que:
Cita:

Nuevo, Abrir, Guardar, Agregar Cliente, Eliminar Cliente, Cerrar
ademas:
Cita:

Buscar Cliente x DNI, Listado de clientes, Lista de clientes con saldo positivo, Lista de clientes con saldo negativo.
Y no sacas los datos de una BD?.
De donde sacan los datos?, de un archivo texto, excel, etc. etc.????.
Interesante tarea.:):eek:
Saludos

emiliano_b 07-03-2010 03:18:51

mas que curioso, una pesadilla para mis conocimientos de este lenguaje
 
Exacto, de un txt...meter lo datos los estoy metiendo en el txt..pero no me los guarda bien, imagino que estara mal el tipo de dato, ahora lo estoy viendo...
pero efectivamente, guarda en una bd, por lo que hay que buscar en cada linea, bueno, y despues en algunos casos hay que mostrar en los mismo edit que uso para ingreasar datos que se buscan a treaves de un DNI..o cuando quieero ver todos los datos en una stringrid..

Casimiro Notevi 07-03-2010 03:51:49

Deberás ir paso a paso, empieza con lo que más falta te haga, nos explicas el problema, te lo resolvemos y vueltas a empezar con el siguiente problema, ¿ok? :)

emiliano_b 07-03-2010 12:20:51

hoa de nuevo..
 
Me acoste a dormir un rato porque no me daban mas las neuronas... Me parece bien tu propuesta, y lo primero es: porque no me guarda bien las cosas en el txt, y comohago saltos de linea!!! Les paso el codigo.
en la unit2:
Código:

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;

en la unit1
Código:

procedure TForm1.AgregarCliente1Click(Sender: TObject);
var c:Cliente; b:byte;
  begin
  Edit1.ReadOnly:=false;
  Edit2.ReadOnly:=false;
  Edit4.ReadOnly:=false;
  c.nombres:=Edit1.Text;
  c.Apellido:=Edit2.Text;
  c.DNI:=StrToInt(Edit3.Text);
  c.saldo:=StrToFloat(Edit4.Text);
    Archivo.AgregarCliente(c,b);
    If b<>0 then ShowMessage('No se pudo agregar el registro. Seguramente no abrió el archivo correspondiente.')
    else ShowMessage('Se ha agregado el registro');
  Edit1.Text:='';
  Edit2.Text:='';
  Edit3.Text:='';
  Edit4.Text:='';
  end;

asi me imprime en el txt:Juan t™ i Carlos& t™ & Á6* Tö u,;~Jose t™ i Perez t™ & Á6* Tö u,;~
nose rian mucho, estoy aprendiendo...

emiliano_b 07-03-2010 14:04:28

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

Casimiro Notevi 07-03-2010 14:10:57

Para que podamos leer mejor el código recuerda ponerlo entre etiquetas [code ] y [/code ]

"Cliente", ¿qué es, una estructura?
"c", ¿qué es, una instancia de "Cliente"?

Casimiro Notevi 07-03-2010 14:15:22

Cita:

Empezado por emiliano_b (Mensaje 355905)
[..]
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

emiliano_b 07-03-2010 15:29:45

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.

Casimiro Notevi 07-03-2010 22:37:26

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;


emiliano_b 07-03-2010 22:53:34

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.

Casimiro Notevi 07-03-2010 23:14:40

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 ]'

emiliano_b 07-03-2010 23:21:35

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

emiliano_b 08-03-2010 01:55:08

ayuda con esto..no sale
 
Cita:

Empezado por Casimiro Notevi (Mensaje 355925)
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

emiliano_b 08-03-2010 03:32:45

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..

emiliano_b 08-03-2010 07:01:46

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

BrunoBsso 08-03-2010 16:11:28

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!

emiliano_b 09-03-2010 00:18:35

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

BrunoBsso 09-03-2010 00:22:42

Creo que los temas no los cerramos los usuarios, sino que los cierran los moderadores/administradores.
Por otro lado, me alegro que se haya solucionado tu problema (aunque mi aporte fue tardío y bastante simple comparado con otros).
Saludos!

Casimiro Notevi 09-03-2010 00:59:48

Nos alegra muchísimo que lo hayas conseguido, finalmente no ha sido tan difícil, es cuestión de echarle ganas y tiempo :)

rgstuamigo 09-03-2010 14:57:08

No sé si será que tu profesor quiere que trabajes así :confused:, 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...

esteban_blanco 22-07-2010 21:42:19

Ayuda Urgente
 
Necesito hacer el siguiente ejercicio y no tengo la menor idea de lo que tengo que hacer...!

Ahí va:
Desarrolle una aplicación Delphi ORIENTADA A OBJETOS que permita administrar los alumnos y calificaciones de la asignatura Matemática Básica de cierta Facultad. La información de los alumnos de la materia se debe organizar en un archivo de acceso directo cuyos registros se componen de los campos: DNI, Apellido, nombres, Nota1, Nota2, Nota3.

La aplicación debe tener los menús
Menú Archivo:
Nuevo, Abrir, Guardar, Agregar Alumno, Eliminar Alumno, Cerrar
Donde
Nuevo: crea un nuevo archivo a través de un cuadro de diálogo para almacenar la lista de alumnos.
Abrir: abre un archivo existente para agregar nuevos alumnos o procesar su información.
Guardar: abre un cuadro de diálogo para guardar el archivo con otro nombre o en otro lugar (Guardar como).
Agregar Alumno: actualiza el archivo con los datos de un nuevo alumno.
Eliminar alumno: elimina un alumno del archivo. Al elegir esta opción se deben “apagar” los edit del Formulario a excepción del correspondiente al DNI. Al hacer clik en ACEPTAR se elimina el alumno.
Cerrar: cierra el archivo.


Menú Herramientas:
Buscar Alumno x DNI, Lista c/Promedios, Lista de Regulares, Lista de Libres
Donde
Buscar Alumno x DNI: anula (apaga) los EDIT a excepción del DNI y permite al usuario buscar en el archivo a dicho alumno al hacer click en ACEPTAR. Si lo encuentra coloca sus datos en cada Eidt y aparecen su promedio y condición: REGULAR si el promedio supera 60 y LIBRE si no lo supera.
Lista c/Promedios: Lista en un componente Memo los apellidos y Nombres de los alumnos del archivo con sus promedios.

Consideraciones para la resolución del problema
UD. Debe definir su propia CLASE en una Unit separada y luego desde el formulario instanciar uno o más objetos de esa clase.

Solo pude hacer la interfaz... I NEED SOMEBODY HELP!!!!

Casimiro Notevi 23-07-2010 03:02:36

Amigo estaban_blanco, bienvenido a clubdelphi, por favor, lee nuestra guía de estilo, muchas gracias.

Caral 23-07-2010 03:05:50

Hola
Cita:

Empezado por esteban_blanco (Mensaje 371246)
..........
Solo pude hacer la interfaz... I NEED SOMEBODY HELP!!!!

Bueno; Yo tambien solo podria hacer lo mismo.
Mal de muchos, consuelo de ...........:D
Saludos

Delphius 23-07-2010 07:03:18

Bueno amigos, dejando de lado que esteba_blanco ha infringido unas cuantas:rolleyes: normas, al menos debemos rescatar su sinceridad y nos lo ha dicho bien clarito: ¡quiere que le hagamos su tarea!:D. Otros se la ingenian para "disfrazar" sus preguntas.

Esteban, me sorprende que diga que sólo hayas podido realizar sólo la interfaz. Se supone que si uno viene estudiando, prestando atención en clase, y poniendo en práctica los conceptos no debería tener problemas en encarar el ejercicio.... O al menos tener cierto indicio o noción.

La consigna del ejercicio da una muestra de que se está pidiendo algo relativamente avanzado en conceptos. En primera está pidiendo manejos de archivos y en segunda se pide que se definan clases propias para el manejo. Si están pidiendo eso entonces se llega a la conclusión de que los conceptos se dieron en clase. Un profesor nunca va a pedir algo que no se haya dado en clase o pedido que investigaran y/o estudiaran.

¡Di al menos que sabes lo que es una clase!

¿Cuál es el verdadero problema? ¿En que PUNTUALMENTE tienes dudas?

El asunto es que aquí nadie te hará la tarea. Te podríamos ayudar siempre y cuando tu des el primer paso y lo intentes. Te iremos asesorando en la medida en que avances y surjan los problemas y/o dudas.
Se te brindarán consejos, guías y sugerencias pero de allí a una aventar una solución completa a tu problema... hay una enorme diferencia y es una línea que ninguno de aquí cruzará.

¿Deseas aprobar? Entonces te sientas, te pones a pensarlo un poco, intentas, pruebas. En caso de dudas PUNTUALES aquí estaremos.

Por cierto, inicia un nuevo hilo.

Saludos,

Delphius 24-07-2010 06:01:08

He visto que Esteban se paseó por el foro hace unas horas. Me extraña que no dijera nada al respecto:rolleyes:... O es que está muy ocupado haciendo su tarea, o no le gustó las soluciones que les hemos presentado (quizá le parece demasiado complicado el código que les pasamos:D).

Saludos,

esteban_blanco 24-07-2010 19:15:35

Tarea
 
Hola:

Realmente estoy muy ocupado como para contestar...!.
Quizá yo sea un novato en este foro pero quisiera aclararte que el trabajo que tengo que hacer es para un curso que estoy haciendo a distancia. No sólo no sé qué comandos utilizar, sino que en las clases audiovisuales que envian en la plataforma, no hay nada parecido a esto, por eso es que me paseo por el foro.
Tengo que hacer el trabajo, no cuento con herramientas para hacerlo, y encima tengo que soportar a una persona que cuestiona mis acciones, poniendo en duda mi honestidad.
Para tu información, yo soy docente, y sé perfecctamente como secuenciar contenidos para que este tipo de situaciones no ocurran, pero bueno; opinar es realmente fácil y criticar más fácil todavia.
Si realmente me queres ayudar, quisiera saber cuáles son los comandos para un menu desplegable, sino gracias lo mismo.
Esteban

Caral 24-07-2010 19:46:53

Hola
No te enojes, tambien se vale hacer bromas de vez en cuando.
Nadie duda de tu honestidad ni mucho menos.
Saludos

ecfisa 24-07-2010 19:52:51

Hola Esteban.

Ahora vamos rumbeando... ;)

1) Pone un componente TMainMenu en el Form.
2) Hacé doble Click sobre él.
3) Agregá los Items que quieras, y llená sus propiedades Caption, en tu caso: Archivo, Nuevo, Abrir, Guardar,...
El primero (Archivo) va a ser el que aparezca como título en el menu, los demás van debajo.

Acabas de hacer un menú principal con MenuItems.
Para asignar procedimientos a cada MenúItem, otra vez doble click sobre TMainMenu, selecciona un item, anda a la pestaña events y hacé doble click sobre OnClick.

Sé que es una respuesta bastante escueta, pero tenés mucho escrito sobre MainMenu para ampliar.



Saludos.

Delphius 24-07-2010 22:03:22

Cita:

Empezado por esteban_blanco (Mensaje 371482)
Hola:

Realmente estoy muy ocupado como para contestar...!.

Todos estamos ocupado y tenemos nuestras obligaciones. Y a pesar de eso, nos tomamos la "molestia" de responder, algunos lo hacen incluso poniendo en riesgo su trabajo.
Así que en ese punto no hay escusa.
Tranquilamente, con esa misma manera de pensamiento. Cualquiera de nosotros podría tomar en sus manos el derecho a no responderte (y dicho sea de paso, es algo que lo permite la guía de estilo). NO estamos obligados a responderte. Pero he aquí que de una u otra forma, hay gente que se toma el tiempo para dedicar a este (y otros) foro.

Cita:

Empezado por esteban_blanco (Mensaje 371482)
Quizá yo sea un novato en este foro pero quisiera aclararte que el trabajo que tengo que hacer es para un curso que estoy haciendo a distancia.

Todos somos novatos en algo. En eso no hay problema, y no he insultado ni te he señalado en ese sentido.

Y no interesa si es a distancia o presencial. Se supone que de una u otra forma se te dan los instrumentos y materiales para con que puedas estudiar y poner en práctica. Y/o de última brindan la información suficiente y necesaria para inverstigarlo por cuenta propia. Es a ello a lo que apunto.

Repito, novatos somos todos. Nadie nació aprendiendo así que por ello no debes sentirte inferior ni de malas.

Lo que molesta aquí es el modo en como tu pretendes recibir ayuda. Te limitaste a exponer la consigna y te sientas a esperar mágicamente la solución. Ese es el mensaje que transmite tu escrito. Distinto hubiera sido si al menos te hubieras tomado la molestia de PUNTUALIZAR y explicar tus dudas. Algo como "Disculpen, pero no entiendo esta parte", "hice esto, pero no me funciona. Me sale este error, aquí" O algo parecido.

¿Se entiende ahora como funciona el Foro? Se ayuda, pero para ello el primer compromiso debe venir de ti. Repito: si deseas recibir ayuda, entonces brinda los elementos necesarios para ayudarte en tus dudas puntuales y no exponiendo la consigna y un simple texto "Solo pude hacer la interfaz... I NEED SOMEBODY HELP!!!!"

Ayuda sabemos que necesitas. El asunto es ¿Qué tipo de ayuda?

Cita:

Empezado por esteban_blanco (Mensaje 371482)
No sólo no sé qué comandos utilizar, sino que en las clases audiovisuales que envian en la plataforma, no hay nada parecido a esto, por eso es que me paseo por el foro.

Es entendible el no tener suficiente noción como encararlo, de saberlo no consultarías por aquí. Lo que no es entendible que digas que no tuviste ni te dieran algo parecido al problema.
Repito lo que he dicho: un profesor nunca pedirá algo que no se haya explicado o investigado.

Es decir, una cosa es no tener noción y otra muy diferente es no tener demasiada noción. Se supone que algo tenes que saber ¿O no?

Algo se te debe haber dado. Algún material de consulta, no se... Pero algo para tener como orientarse seguro. La gran mayoría de las instituciones que ofrecen cursos a distancia tienen un aula virtual en la que los alumnos pueden (y deben) descargar los materiales de estudio, tienen una sección en donde exponer sus dudas al profesor, etc. ¡Es más... algunas incluso envían libros, carpetas y demás por domicilio!

Cita:

Empezado por esteban_blanco (Mensaje 371482)
Tengo que hacer el trabajo, no cuento con herramientas para hacerlo, y encima tengo que soportar a una persona que cuestiona mis acciones, poniendo en duda mi honestidad.

Te digo sinceramente que me cuesta creer que no tienes las herramientas para ello. Sea a distancia o presencial material te dan.
No cuestiono tus acciones, sino el método y la forma en que pretendías recibir tu ayuda. Se te ha invitado a leer la guía de estilo y se te ha dicho que esa es no es la forma de exponer las dudas de uno.

La honestidad se verá con el tiempo. Solamente puedo decir que si realmente quisieras recibir ayuda, entonces hubieras iniciado las cosas de otro modo. Aquí hay una guía de estilo y hay que respetarla.

Cita:

Empezado por esteban_blanco (Mensaje 371482)
Para tu información, yo soy docente, y sé perfecctamente como secuenciar contenidos para que este tipo de situaciones no ocurran, pero bueno; opinar es realmente fácil y criticar más fácil todavia.

Ahora que dices que eres docente me cuesta más aún aceptar la forma en como encaraste esto. Me cuesta creer que un docente diga una única línea: "Solo pude hacer la interfaz... I NEED SOMEBODY HELP!!!!"
Y exponga el ejercicio.

Y si fueras docente, más aún cuesta entender el que no digas que tienes el material.
Podría entender que tengas material pero de que te cueste entenderlo, o asimilar apropiadamente.

Si yo fuera tu, y estuviera cursando ese curso y viendo que no se me brindan el material de trabajo y estudio me hubiera tomado la molestia de averiguar el porqué de ello. ¿Que no te ofrecieron algunos textos? ¿Alguna referencia bibliográfica? ¿Con qué entonces se te enseña?
El asunto es que no podemos hacer mucho si el problema es más una falta de material que se supone que la institución que dicta dicho curso debe brindar a sus alumnos.

Distinto, y discutible, sería si el material no es de la mejor calidad, que le faltase ejemplos o de contenidos muy vagos y simples y sin profundidad teórica...

Alguna noción debes tener seguramente. Algo debiste haber estudiado, visto o analizado.... ¡Cuesta mucho creer viniendo de un docente, que diga esas cosas!

El asunto es que si te ayudamos pero y si luego tu nos dices que no le entiendes o no sabes que es una clase o lo que fuese entonces nuestra ayuda sería en vano. Porque allí lo que se estaría evidenciando es la falta de compromiso de tu parte por haber estudiado al menos mínimamente sobre el tema.

Con todo respeto yo te pregunto ¿Que es lo que sabes? ¿Hasta donde llegan tus conocimientos? ¿Qué estuviste estudiando? Si nos puedes brindar una descripción sobre tus limitaciones y del conocimiento que tienes podríamos irte asesorando.

Cita:

Empezado por esteban_blanco (Mensaje 371482)
Si realmente me queres ayudar, quisiera saber cuáles son los comandos para un menu desplegable, sino gracias lo mismo.
Esteban

Aquí se te quiere ayudar, pero el asunto es que no nos facilitas las cosas para poder ayudarte. No lo tomes a mal, pero es que un ejercicio completo no lo haremos. Se te ayudará en la medida en que nos muestres tus propios avances y tus propias dudas.

Y por cierto... no existen comandos en Delphi.

Te invito a analizar mejor las cosas. Espero que comprendas como es que se maneja en este foro.

La ayuda aquí se ofrece de manera totalmente altruista, no nos pagan por esto. Lo hacemos de nuestro propias ganas. Pero el asunto es que si vamos a poner de nuestra parte y con el debido compromiso, esperamos el mismo compromiso por quien inicia la pregunta.

Si deseas tener más material de donde estudiar y aprender Delphi puedes ir a la sección FTP. Allí hay tanto material teórico como práctico. Recomiendo la lectura del libro La Cara Oculta.

Saludos,

Casimiro Notevi 25-07-2010 03:36:27

Delphius se ha explicado muy claramente: si quieres ayuda... ayúdanos a ayudarte ;)


La franja horaria es GMT +2. Ahora son las 10:14:20.

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