FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
ayuda con calculadora
mi idea es hacer una calculadora que me sirva para el negocio. pero me estoy volviendo loco. les muestro como es la idea de la calculadora
(k18.kn3.net/D7130472A.png) esa es la imagen de la calculadora. si me pueden ir ayudando. donde calcula precio por cantidad, y siempre va poniendos los resultados en el total de abajo los edit de la izquierda se les ingresa enteros o flotantes, en cambio los del medio solo enteros, y a la derecha van los subtotales. pero a la hora de programar las tareas me estoy volviendo loco, no se ni por donde empezar la idea es qe no se use el mouse, todo con el teclado. (Escape se encarga de limpiar y volver la calculadora al principio) y cada vez qe se ingrea un numero va cambiando los subtotales y por supuesto, un cambio en un subtotal cmabia el total. espero respuestas gracias |
#2
|
||||
|
||||
A ver tiro idea, y luego tu le das forma, chapa, pintura y quizá un cambio de aceite:
En el ejemplo me baso en el uso de Frames. Básicamente el Frame contiene los edits para el precio, cantidad y subtotal. La aplicación crea tanto frames como se requiera. En cuanto a la lógica es muy simple, dispongo de un arreglo dinámico y creo tantos registros subtotales como frames, les paso los datos y calculo. Ahora te resta pulir y ver el modo de "actualizar" los cálculos antes algún cambio en algún frame... juega con los eventos. Por otro lado, es muy fácil caer así sin nada sin siquiera al menos tirar una idea; es como pedir que te lo hagan. Pon de tu parte primero; PUNTUALIZA en tus propias dudas, que llevas hecho, o como lo estuviste al menos encarando, etc. Saludos, |
#3
|
||||
|
||||
Hola
Demasiado sencillo para ponerle interes. Me parece que deberias complicarlo algo mas para que fuera interesante y poder aprender. Por ejemplo: 1- tener los precios y la descripcion de los articulos en una BD 2- buscar el articulo y colocarlo en el primer edit. asi sucesivamente. 3- Calcular el monto fina. Asi si merece la pena trabajar. Por otro lado: En cuanto al tema de sumas en edits hay mucha informacion en el foro. Saludos
__________________
Siempre Novato |
#4
|
||||
|
||||
Cita:
O bien no tiene una base de datos, ni aplicación alguna y hace las cosas con la "libreta de almacenero" y quiere algo simple y rápido. Saludos, |
#5
|
||||
|
||||
Hola
Es que la idea es ponerlo dificil para aprender, si no, que gusto tiene . Saludos
__________________
Siempre Novato |
#6
|
|||
|
|||
es qe solamente necesito algo para cuando hago una nueva venta. la idea es hacer una calculadora, pero facil de usar, para no tener qe anotar los subtotales, y despues sumarlos. solo qiuero la aplicacion qe sume es decir 2 cosas de $34, 123 cosas de $12.45 y 132 cosas de $1.30, y tener el total de la venta, y tmb los resultados parciales para mostrar ante cualquier duda. es simple. pero me tira errores por todos lados
|
#7
|
||||
|
||||
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.
No somos adivinos para saber los errores que te salen |
#8
|
||||
|
||||
Hola
Un realito adjunto. Colocas el Precio y con solo cambiar el dato de la cantidad te cambia el subTotal y el Total. Saludos PD: Ahora te toca mejorarlo.
__________________
Siempre Novato Última edición por Caral fecha: 17-09-2012 a las 01:19:12. |
#9
|
|||
|
|||
Código:
unit Calculadora1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, RpDefine, RpRender, RpRenderPDF, Grids, Calendar, ExtCtrls, DBGrids, DB, DBTables, ComCtrls, StdCtrls, jpeg, OleCtrls, SHDocVw, IdBaseComponent, IdComponent, IdIPWatch; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; Edit9: TEdit; Edit10: TEdit; Edit11: TEdit; Edit12: TEdit; Edit13: TEdit; Edit14: TEdit; Edit15: TEdit; Edit16: TEdit; Edit17: TEdit; Edit18: TEdit; Edit19: TEdit; Edit20: TEdit; Edit21: TEdit; Edit22: TEdit; Edit23: TEdit; Edit24: TEdit; Edit25: TEdit; Edit26: TEdit; Edit27: TEdit; Edit28: TEdit; Edit29: TEdit; Edit30: TEdit; Edit31: TEdit; Button1: TButton; Calculadora: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label1: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Label19: TLabel; Label20: TLabel; Recordatorio: TMemo; DateTimePicker1: TDateTimePicker; Memo1: TMemo; Label21: TLabel; enREDados: TLabel; Label22: TLabel; Label23: TLabel; procedure Edit1KeyPress(Sender: TObject; var Key: Char); procedure Edit30Change(Sender: TObject); procedure FormActivate(Sender: TObject); procedure Edit2Change(Sender: TObject); procedure Edit3Change(Sender: TObject); procedure Edit6Change(Sender: TObject); procedure Edit7Change(Sender: TObject); procedure Edit9Change(Sender: TObject); procedure Edit12Change(Sender: TObject); procedure Edit14Change(Sender: TObject); procedure Edit15Change(Sender: TObject); procedure Edit17Change(Sender: TObject); procedure Edit19Change(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Edit12Change(Sender: TObject); begin if((Edit11.Text <> ('')) and (Edit12.Text <> ('')))then Edit26.Text := IntToStr((StrToInt(Edit12.Text)*(StrToInt(Edit11.Text)))) else Edit26.Text := IntToStr(0); end; procedure TForm1.Edit14Change(Sender: TObject); begin if((Edit13.Text <> ('')) and (Edit14.Text <> ('')))then Edit27.Text := IntToStr((StrToInt(Edit13.Text)*(StrToInt(Edit14.Text)))) else Edit27.Text := IntToStr(0); end; procedure TForm1.Edit15Change(Sender: TObject); begin if((Edit15.Text <> ('')) and (Edit16.Text <> ('')))then Edit28.Text := IntToStr((StrToInt(Edit15.Text)*(StrToInt(Edit16.Text)))) else Edit28.Text := IntToStr(0); end; procedure TForm1.Edit17Change(Sender: TObject); begin if((Edit17.Text <> ('')) and (Edit18.Text <> ('')))then Edit29.Text := IntToStr((StrToInt(Edit17.Text)*(StrToInt(Edit18.Text)))) else Edit29.Text := IntToStr(0); end; procedure TForm1.Edit19Change(Sender: TObject); begin if((Edit19.Text <> ('')) and (Edit20.Text <> ('')))then Edit30.Text := IntToStr((StrToInt(Edit19.Text)*(StrToInt(Edit20.Text)))) else Edit30.Text := IntToStr(0); end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not ((Key in ['0'..'9'] )or (Key = #08)) then begin Key:= #0; Beep; end; end; procedure TForm1.Edit2Change(Sender: TObject); begin if((Edit1.Text <> ('')) and (Edit2.Text <> ('')))then Edit21.Text := IntToStr((StrToInt(Edit2.Text)*(StrToInt(Edit1.Text)))) else Edit21.Text := IntToStr(0); end; procedure TForm1.Edit30Change(Sender: TObject); var a , I: integer; begin a:=0; for I := 21 to 30 do if(((FindComponent('Edit' + IntToStr(i)) as TEdit).Text))<>('')then begin a:=a + ( StrToInt((FindComponent('Edit' + IntToStr(i)) as TEdit).Text)); end else a:=a+0; Edit31.Text := IntToStr(a); end; procedure TForm1.Edit3Change(Sender: TObject); begin if((Edit3.Text <> ('')) and (Edit4.Text <> ('')))then Edit22.Text := IntToStr((StrToInt(Edit3.Text)*(StrToInt(Edit4.Text)))) else Edit22.Text := IntToStr(0); end; procedure TForm1.Edit6Change(Sender: TObject); begin if((Edit5.Text <> ('')) and (Edit6.Text <> ('')))then Edit23.Text := IntToStr((StrToInt(Edit5.Text)*(StrToInt(Edit6.Text)))) else Edit23.Text := IntToStr(0); end; procedure TForm1.Edit7Change(Sender: TObject); begin if((Edit7.Text <> ('')) and (Edit8.Text <> ('')))then Edit24.Text := IntToStr((StrToInt(Edit7.Text)*(StrToInt(Edit8.Text)))) else Edit24.Text := IntToStr(0); end; procedure TForm1.Edit9Change(Sender: TObject); begin if((Edit9.Text <> ('')) and (Edit10.Text <> ('')))then Edit25.Text := IntToStr((StrToInt(Edit9.Text)*(StrToInt(Edit10.Text)))) else Edit25.Text := IntToStr(0); end; procedure TForm1.FormActivate(Sender: TObject); var i, a: Integer; begin for i := 1 to 20 do begin if ((i mod 2)= 0) then begin (FindComponent('Edit' + IntToStr(i)) as TEdit).text := '1'; end else begin (FindComponent('Edit' + IntToStr(i)) as TEdit).text := '0'; end; end; for a := 21 to 30 do (FindComponent('Edit' + IntToStr(a)) as TEdit).text := '0'; end; end. $1 eso es un peso, pero yo quiero mostrarlo asi 1.00 y asi con tengo qe encontrar lamanera de acceder a los ultimos dos caracteres de mi string, correrlos un lugar para la derecha y agregar la coma donde estaba el anteultimo. bien se qe un string es un array of caracteres. tendria qe acceder por array size. existe una funcion asi? y hay alguna manera de aumentar el array en ese momento? sigo probando y leyendo. |
#10
|
||||
|
||||
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.
Una de las normas, lógica, es: preguntas distintas en temas distintos. No vamos a mezclar las cosas, se convertirían los foros en algo imposible de controlar. Además puedes hacer una búsqueda, las máscaras de presentación de números es un tema que se ha tratado multitud de veces, recuerda que tenemos cerca de 78000 temas en nuestra base de datos, ahí está 'casi' todo lo que necesites. |
#11
|
||||
|
||||
Me encanta cuando los usuarios vienen, tiran una pantalla y luego esperan que se les caiga de arriba.
Lo bueno es que al menos te hemos sacado algo de tu parte, y diste un comienzo. Voy a hacer de cuenta que ese código no lo he visto... Con todo respeto, ¡Que te lo complicas demasiado! conversiones de un tipo a otro, código por demás repetido, Se que para una primera aproximación, y que el sistema tampoco es para mucho, y que al parecer eres iniciado puede ser una posibilidad; pero es que puede mejorarse mucho, e incluso añadir controles que te pasas de largo. Yo te he tirado algunos conceptos que te pueden dar mucho alivio: El uso de records, un arreglo o array y unos frames (quizá esto último es lo que más te puede costar entender; busca en los foros sobre frames). Ahora respecto a tu nueva duda, la verdad es que no se te entiende demasiado. ¿Porqué no piensas tus palabras y te explicas mejor? Eso hará más fácil asesorarte. Tengo una duda: Y si necesitas de más "items" que los que pusiste, cómo te las ingenias? En la foto hay lugar para 10 items. ¿Van a ser como máximo 10, o pueden ser más? ¿Una cantidad no determinada quizá? De ser indeterminada, entonces con más razón debe llevarse el problema por otro lado e implementar un proceso que permita extenderse según se requiera. La propuesta del uso del array dinámico y del frame va justo en este sentido. El array nos permite llevar la estructura en cuanto a la lógica; y el frame en cuanto a la interfaz. Explico lo del frame: Es como un form, plantilla, en que se van a disponer los elementos que hacen a un ítem. Luego, se crean tantas instancias de este frame como items se necesiten. En el frame es posible incorporar código que nos permita llevar el control necesario para operar adecuadamente con los valores, y además es donde se llenan justamente la posición i-ésima del arreglo (siendo i el item correspondiente). Un método de interés, de nombre hipotético UpdateSubTotal, lo que hace es recalcular el subtotal ante cualquier cambio en el precio o cantidad. Por consiguiente, indirectamente este método manda a llamar a un UpdateTotal que recalculará el total. Este UpdateTotal puede, y yo recomiendo, que esté en el form. El uso del arreglo permite hacer los cálculos sin complicarse la vida de utilizar StrToXXX y sus inversas. Una vez que se guardan los datos en el la operatoria es elemental. DEJA la interfaz para cuestiones de interfaz... piensa en un arreglo. Saudos, |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
ayuda calculadora basica!! | ciberTron | Varios | 7 | 08-02-2011 13:58:35 |
Calculadora en sistema | capo979 | Varios | 2 | 07-12-2007 02:20:12 |
Calculadora | sebaguillen | Varios | 17 | 28-08-2007 15:27:23 |
Calculadora | Epunamun | OOP | 3 | 19-12-2005 22:33:11 |
Calculadora licencia GNU | bismarck_sierra | Varios | 0 | 05-04-2005 06:56:33 |
|