PDA

Ver la Versión Completa : Ayuda con este problema


emiliano_b
07-03-2010, 02:15:08
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 (http://www.clubdelphi.com/foros/guiaestilo.php) 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
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
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
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:
Nuevo, Abrir, Guardar, Agregar Cliente, Eliminar Cliente, Cerrar
ademas:
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
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
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:

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

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
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
[..]
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
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:

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
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:
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
Ahi va de nuevo el codigo...toy buescando como hacer lo que me dijiste..
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
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:

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
lo resolvi asi... no se si es la mejor manera, pero es la que pense

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

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í

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:

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
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...http://i28.tinypic.com/15x4uqb.gif

esteban_blanco
22-07-2010, 21:42:19
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 (http://www.clubdelphi.com/foros/guiaestilo.php), muchas gracias.

Caral
23-07-2010, 03:05:50
Hola
..........
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
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
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.


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?


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!


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.


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.


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 ;)