Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 09-07-2006
eudy.net eudy.net is offline
Miembro
 
Registrado: jul 2006
Posts: 29
eudy.net Va por buen camino
Calculadora en delphi 7

Hola k tal
Para ser sincero no llevó ni una semana usando delphi, soy un novato
Kisiera k alguien me facilite el codigo de una calculadora en delphi 7
Ya sea a mi email ( eudy.net@hotmail.com ) o por aki mismo .

Muchas Gracias
Responder Con Cita
  #2  
Antiguo 10-07-2006
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 376
nemesio Va por buen camino
Hola

Ya que eres nuevo con delphi, vas a tardar más tiempo tratando de entender el código que te manden que si la haces tu mismo.
Te voy a dar ciertas ideas:
1.- Estudia el Evento OnKeyPress del Edit, es elemental que lo sepas.
2.- Una vez estudiado este evento, te darás cuenta de que puedes capturar todas las teclas numéricas, alfanuméricas y de Caracteres especiales.
3.- Repasa el Uso de Variables.
4.- Cada vez que teclees por ejemplo un Número, lo vas almacenando en una Cadena de Caracteres. El presionar un simbolo como: +,-,/,*,= indicaría que es el fin de la insersión de números.
5.- Si tecleas por ejemplo una Letra, entonces anulas el caracter colocando Key:=#0;

Creo que con esas ideas puedes comenzar. Cualquier duda estoy a la orden.
Recuerda que es más fácil entender un código hecho por ti que el de otra persona.
Suerte.
Responder Con Cita
  #3  
Antiguo 10-07-2006
Avatar de jorge1987
jorge1987 jorge1987 is offline
Miembro
 
Registrado: may 2005
Ubicación: Buenos Aires
Posts: 244
jorge1987 Va por buen camino
Cita:
Empezado por nemesio
Hola

Ya que eres nuevo con delphi, vas a tardar más tiempo tratando de entender el código que te manden que si la haces tu mismo.
Te voy a dar ciertas ideas:
1.- Estudia el Evento OnKeyPress del Edit, es elemental que lo sepas.
2.- Una vez estudiado este evento, te darás cuenta de que puedes capturar todas las teclas numéricas, alfanuméricas y de Caracteres especiales.
3.- Repasa el Uso de Variables.
4.- Cada vez que teclees por ejemplo un Número, lo vas almacenando en una Cadena de Caracteres. El presionar un simbolo como: +,-,/,*,= indicaría que es el fin de la insersión de números.
5.- Si tecleas por ejemplo una Letra, entonces anulas el caracter colocando Key:=#0;

Creo que con esas ideas puedes comenzar. Cualquier duda estoy a la orden.
Recuerda que es más fácil entender un código hecho por ti que el de otra persona.
Suerte.
Jjajaja, un poco complicado para alguien que hace 1 semana que usa delphi, no hubiera sido mas simple, decirle:

Pone tres Tedit, y cuatro TButton, , a cada Tbutton, le pones, por ejemplo, algo asi:
Edit3.Text := (Edit1.Text + Edit2.Text);
Eso para el boton de suma,
Edit3.Text := (Edit1.Text - Edit2.Text);
Eso para el de resta, y ais sucesivamente, seria una calculadora bastante precaria, pero me parece que se ba a ser mas facil de desarrollar.
Espero haberte servido de algo.

Saludos
Responder Con Cita
  #4  
Antiguo 10-07-2006
dec dec is offline
Moderador
 
Registrado: dic 2004
Posts: 11.688
dec Va por buen camino
Hola,

Personalmente creo que la respuesta de Nemesio es acertada, puesto que se le están dando ideas al compañero, no las cosas hechas. Es cierto que el código fuente, leer código fuente, no está para nada demás, pero, el código que tú propones tiene algunos problemas... ¿no te parece Jorge?

Código Delphi [-]
Edit3.Text := (Edit1.Text + Edit2.Text);
// Eso para el boton de suma

Eso no sumaría lo contenido en los "TEdit", sino que concatenaría los "String" contenidos en ambos "TEdit", lo que no es lo mismo, como sabes. En cuanto a lo que propones para la resta, o sea...

Código Delphi [-]
Edit3.Text := (Edit1.Text - Edit2.Text);

Ese código ni siquiera compilaría, puesto que el operador "-" no se comtempla para el tipo "String".

Por otro lado... ¿dónde has visto una calculadora con más de un "TEdit"? Generalmente se utiliza un sólo "TEdit" tanto para escribir los valores con los que operar como para mostrar los resultados de la operación de marras.

En todo caso... estoy seguro de que si se busca un poco por Internet se dará con el código fuente de alguna calculadora escrita en Delphi y cuya "lógica" pudiera estudiarse.
__________________
David Esperalta
www.davidesperalta.com
Responder Con Cita
  #5  
Antiguo 10-07-2006
Avatar de Neftali
Neftali Neftali is offline
Aporreador de teclados
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 13.274
Neftali Va por buen camino
Cita:
Empezado por jorge1987
por ejemplo, algo asi:
Edit3.Text := (Edit1.Text + Edit2.Text);
Eso para el boton de suma,
Eso no creo que sume...

Cita:
Empezado por jorge1987
Edit3.Text := (Edit1.Text - Edit2.Text);
Eso para el de resta
Y esto no creo ni que compile...
__________________
Neftalí -web - MyDropBox-
Guía de estilo, Guía alternativa, TAG's.
*Añade tu foto al Club*

(UPDATE) TrackInfo v.1.7b

Contactar con el Clubdelphi


P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 04-03-2007
keikurono keikurono is offline
Miembro
 
Registrado: mar 2007
Posts: 16
keikurono Va por buen camino
si ese es mi problema tambien, pero el chiste es que solo hayga un edit pero ...nemesio aver explica mejor eso de como utizar eso de OnKeyPress del Edit y de key:=#0(en donde lo pongo), ademas No encuentro el comando del edit que hace que uno escriba de derecha a izquierda como en los verdaderas calculadorass no recuerdo ese comando porfa diganlo psss
Responder Con Cita
  #7  
Antiguo 04-03-2007
dec dec is offline
Moderador
 
Registrado: dic 2004
Posts: 11.688
dec Va por buen camino
Hola,

Respecto del "key := #0"... lo sitúas en el miso evento "OnKeyPress": fíjate que "key" es un parámetro que se pasa como referencia en dicho método, de modo que tú puedes operar sobre el mismo, por ejemplo asignándole el valor que dices.

Respecto de la alineación del texto en un "TEdit"... si en tu versión de Delphi no cuentas con una propiedad "AlignText" o "Alignment", o "TextAlign" (ahora mismo no recuerdo su nombre exacto) puedes probar en todo caso el componente que preparó Román y cuya lógica y código fuente puedes encontrar aquí: "Alineando texto en un TEdit".
__________________
David Esperalta
www.davidesperalta.com
Responder Con Cita
  #8  
Antiguo 04-03-2007
Avatar de joHn je@N
joHn je@N joHn je@N is offline
Miembro
 
Registrado: jun 2005
Ubicación: Toluca, Mexico
Posts: 44
joHn je@N Va por buen camino
?

dec solo una pregunta. ¿En que version de Delphi aparece la propiedad en un Edit de Alinear el Texto?. (Uso Delphi7 y no la tiene)

No he visto el código de Roman pero, si es complicado mejor usa un Memo o un RichEdit.

Saludos
__________________
Dado el presente, el futuro es independiente del pasado.
Responder Con Cita
  #9  
Antiguo 04-03-2007
dec dec is offline
Moderador
 
Registrado: dic 2004
Posts: 11.688
dec Va por buen camino
Hola,

Creo que es a partir del Delphi que acompaña a BDS 2005 que ya se encuentra dicha propiedad (y algunas más añadidas al "TEdit" y otros componentes). También contarás con ella en BDS 2006 y creo que también en Turbo Delphi.

En cuanto al código de Román... no, hombre, aparte de que no es nada complicado (desde mi punto de vista, por otro lado nada privilegiado), digo, además de eso Román lo comenta pormenorizadamente.
__________________
David Esperalta
www.davidesperalta.com
Responder Con Cita
  #10  
Antiguo 04-03-2007
Avatar de joHn je@N
joHn je@N joHn je@N is offline
Miembro
 
Registrado: jun 2005
Ubicación: Toluca, Mexico
Posts: 44
joHn je@N Va por buen camino
Ya he visto el código de roman solo me queda hacerle una reverencia.
Que bueno tener a gente como roman en el foro.

Pero como eudy se dice ser un novato, "instalar o agregar" el componente le sería más complicado.

Saludos
__________________
Dado el presente, el futuro es independiente del pasado.
Responder Con Cita
  #11  
Antiguo 04-03-2007
Avatar de Julián
Julián Julián is offline
Merodeador
 
Registrado: may 2003
Ubicación: en mi casa
Posts: 1.780
Julián Va por buen camino
Cita:
Empezado por keikurono
...pero el chiste es que solo hayga un edit pero ...
Pues eso tampoco compila
__________________
"la única iglesia que ilumina es la que arde"
Anonimo
Responder Con Cita
  #12  
Antiguo 04-03-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Modelador
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.239
vtdeleon Va por buen camino
Cita:
Empezado por dec
y creo que también en Turbo Delphi.
En los turbo no está eso. Y nunca lo habia visto en versiones anteriores , me sorprendo ahora. Siempre he usado los trucos o componentes de terceros para alinear.

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #13  
Antiguo 04-03-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
seoane Va por buen camino
Y el truco de Marcos:
Código Delphi [-]
  SysLocale.MiddleEast := true;
  Edit1.BiDiMode := bdRightToLeft
Responder Con Cita
  #14  
Antiguo 05-03-2007
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 356
fidel Va por buen camino
Hola:

Si es para practicar o por otra razón puedes hacerte la calculadora, pero si no llama desde Delphi a la de windows y ya está.
Código Delphi [-]
ShellExecute(Handle, 'open', 'calc.exe', nil, nil, SW_SHOW);

Un saludo.
Responder Con Cita
  #15  
Antiguo 06-03-2007
keikurono keikurono is offline
Miembro
 
Registrado: mar 2007
Posts: 16
keikurono Va por buen camino
aver que les parece este codigo....
Solucion al problema de la calcu en delphi!!!!!
Código Delphi [-]
 
unit calcu_Until;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
arreg1=array[1..100,1..100] of string;
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
w:boolean;
B:arreg1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
    begin
        w:=true;
    end;
procedure TForm1.Button2Click(Sender: TObject);//boton suma
    begin
       if edit1.Text<>'' then
            if W=true then
                begin
                   B[1,1]:=edit1.Text;
                   B[1,2]:='+';
                   W:=false;
                   edit1.Text:='';
                   edit1.SetFocus;
                end
           else
               begin
                     B[2,1]:=edit1.Text;
                          if B[1,2]='+' then
                                B[1,1]:=floattostr(strtofloat(B[1,1])+strtofloat(B[2,1]));
                          if B[1,2]='/' then
                                if B[2,1]<>'0' then
                                       B[1,1]:=floattostr(strtofloat(B[1,1])/strtofloat(B[2,1]))
                                else
                                       MESSAGEDLG('EL DIVIDENDO DEVE DE SER <>0',mTInformation,[mbok],0);
                          if B[1,2]='-' then
                                B[1,1]:=floattostr(strtofloat(B[1,1])-strtofloat(B[2,1]));
                          if B[1,2]='*' then
                                B[1,1]:=floattostr(strtofloat(B[1,1])*strtofloat(B[2,1]));
                    B[1,2]:='+';
                    edit1.Text:=B[1,1];
                    edit1.SetFocus;
                    W:=false;
                    B[2,1]:='';
             end;
 
end;
procedure TForm1.Button3Click(Sender: TObject);//BOTON RESTA
begin
       if edit1.Text<>'' then
              if W=true then
                  begin
                      B[1,1]:=edit1.Text;
                      B[1,2]:='-';
                      W:=false;
                      edit1.Text:='';
                      edit1.SetFocus;
                 end
             else
                  begin
                       B[2,1]:=edit1.Text;
                            if B[1,2]='+' then
                                  B[1,1]:=floattostr(strtofloat(B[1,1])+strtofloat(B[2,1]));
                            if B[1,2]='-' then
                                  B[1,1]:=floattostr(strtofloat(B[1,1])-strtofloat(B[2,1]));
                            if B[1,2]='*' then
                                  B[1,1]:=floattostr(strtofloat(B[1,1])*strtofloat(B[2,1]));
                            if B[1,2]='/' then
                                  if B[2,1]<>'0' then
                                      B[1,1]:=floattostr(strtofloat(B[1,1])/strtofloat(B[2,1]))
                                  else
                                      MESSAGEDLG('EL DIVIDENDO DEVE DE SER DISTINTO DE CERO',mTInformation,[mbok],0);                            
                            B[1,2]:='-';
                            edit1.Text:=B[1,1];
                            edit1.SetFocus;
                            W:=false;
                            B[2,1]:='';
                    end;
end;
procedure TForm1.Button4Click(Sender: TObject);//BOTON POR
     begin
         if edit1.Text<>'' then
              if W=true then 
                 begin
                     B[1,1]:=edit1.Text;
                     B[1,2]:='*';
                     W:=false;
                     edit1.Text:='';
                     edit1.SetFocus;
                 end
             else
                 begin
                      B[2,1]:=edit1.Text;
                            if B[1,2]='+' then
                                  B[1,1]:=floattostr(strtofloat(B[1,1])+strtofloat(B[2,1]));
                            if B[1,2]='-' then
                                  B[1,1]:=floattostr(strtofloat(B[1,1])-strtofloat(B[2,1]));
                            if B[1,2]='*' then
                                  B[1,1]:=floattostr(strtofloat(B[1,1])*strtofloat(B[2,1]));
                            if B[1,2]='/' then
                                   if B[2,1]<>'0' then
                                           B[1,1]:=floattostr(strtofloat(B[1,1])/strtofloat(B[2,1]))
                                   else
                                           MESSAGEDLG('EL DIVIDENDO DEVE DE SER DISTINTO DE CERO',mTInformation,[mbok],0);

                            B[1,2]:='*';
                            edit1.Text:=B[1,1];
                            edit1.SetFocus;
                            W:=false;
                            B[2,1]:='';
                   end;
end;
procedure TForm1.Button5Click(Sender: TObject);//boton entre
  begin
       if edit1.Text<>'' then
             if W=true then
                 begin
                      B[1,1]:=edit1.Text;
                      B[1,2]:='/';
                      W:=false;
                      edit1.Text:='';
                      edit1.SetFocus;
                 end
             else
                 begin
                      B[2,1]:=edit1.Text;
                           if B[1,2]='+' then
                                  B[1,1]:=floattostr(strtofloat(B[1,1])+strtofloat(B[2,1]));
                           if B[1,2]='-' then
                                  B[1,1]:=floattostr(strtofloat(B[1,1])-strtofloat(B[2,1]));
                           if B[1,2]='*' then
                                  B[1,1]:=floattostr(strtofloat(B[1,1])*strtofloat(B[2,1]));
                           if B[1,2]='/' then
                                 if B[2,1]<>'0' then
                                       B[1,1]:=floattostr(strtofloat(B[1,1])/strtofloat(B[2,1]))
                           else
                                 MESSAGEDLG('EL DIVIDENDO DEVE DE SER DISTINTO DE CERO',mTInformation,[mbok],0);
                           
                       B[1,2]:='/';
                       edit1.Text:=B[1,1];
                       edit1.SetFocus;
                       W:=false;
                       B[2,1]:='';
               end;
 
end;
procedure TForm1.Button1Click(Sender: TObject);//boton igual 
   begin
        if (B[2,1]='')and(B[1,2]<>'')then
             B[2,1]:=edit1.Text;
        if B[1,2]='+' then
             B[1,1]:=floattostr(strtofloat(B[1,1])+strtofloat(B[2,1]));
        if B[1,2]='-' then
             B[1,1]:=floattostr(strtofloat(B[1,1])-strtofloat(B[2,1]));
        if B[1,2]='*' then
             B[1,1]:=floattostr(strtofloat(B[1,1])*strtofloat(B[2,1]));
        if B[1,2]='/' then
             if B[2,1]<>'0' then
                  B[1,1]:=floattostr(strtofloat(B[1,1])/strtofloat(B[2,1]))
             else
                  MESSAGEDLG('EL DIVIDENDO DEVE DE SER DISTINTO DE CERO',mTInformation,[mbok],0);
        B[2,1]:='';
        B[1,2]:='';
        edit1.Text:=B[1,1];
        w:=TRUE;
 
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
  begin
       if not (key in ['0'..'9',#8]) then
          begin
              key:=#0;
              beep;
          end;
  end;
end.

Última edición por keikurono fecha: 10-03-2007 a las 05:36:13.
Responder Con Cita
  #16  
Antiguo 10-03-2007
keikurono keikurono is offline
Miembro
 
Registrado: mar 2007
Posts: 16
keikurono Va por buen camino
La nota es que es muy larga porque siempre repito este codigo en los 4 botones (+, -, *, /)
Código SQL [-]
 if B[1,2]='+' then
             B[1,1]:=floattostr(strtofloat(B[1,1])+strtofloat(B[2,1]));
        if B[1,2]='-' then
             B[1,1]:=floattostr(strtofloat(B[1,1])-strtofloat(B[2,1]));
        if B[1,2]='*' then
             B[1,1]:=floattostr(strtofloat(B[1,1])*strtofloat(B[2,1]));
        if B[1,2]='/' then
             if B[2,1]<>'0' then
                  B[1,1]:=floattostr(strtofloat(B[1,1])/strtofloat(B[2,1]))
             else
                  MESSAGEDLG('EL DIVIDENDO DEVE DE SER DISTINTO DE CERO',mTInformation,[mbok],0);

Alguien save eso de como utilizar en un project como estos, eso de prosedimiento ???, por que con eso se acortaria mejor .
Responder Con Cita
Respuesta


Herramientas
Desplegado

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
calculadora de conjuntos...insercion, union,etc sakuragi JAVA 3 19-02-2009 16:46:59
Calculadora Epunamun OOP 3 19-12-2005 22:33:11
Calculadora licencia GNU bismarck_sierra Varios 0 05-04-2005 06:56:33
Componente Calculadora Gustavo Gowdak OOP 4 23-01-2005 13:19:14
Ejecutar la calculadora en una posición de la pantalla cybergerman OOP 11 27-09-2004 09:13:33


La franja horaria es GMT +2. Ahora son las 15:34:56.


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