Comienzo preparando los controles que necesito en un ficha nueva como puedes ver en la imagen.
Objetos utilizados: Los botones son de la paleta Adicional. Observa que algunos tienen en panel de fondo. He puesto dos etiquetas Tlabel, NUMERO1 y otra para la solución que ahora no ves.
Solo escribo 'a dedo' el código del evento On_Clic de los botones; y el resto lo ha construido el Delphi mientras que yo he ido arrastrando objetos a la ficha.
unit PORCENT;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls;
type
TForm1 = class(TForm)
NUM: TLabel;
NUMERO: TEdit;
ACEPTAR: TBitBtn;
PORCENTAJE: TBitBtn;
SOLUCION: TLabel;
CERRAR: TBitBtn;
BORRAR: TBitBtn;
Panel1: TPanel;
Panel2: TPanel;
procedure ACEPTARClick(Sender: TObject);
procedure PORCENTAJEClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BORRARClick(Sender: TObject);
procedure CERRARClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
NUMEROS:ARRAY[1..20] OF INTEGER;
I:INTEGER;
implementation
{$R *.DFM}
PROCEDURE MOSTRAR; // INSTRUCCIÓN QUE ME HE INVENTADO PARA EL "PORCENTAJE"
VAR
POSITIVOS,NOCERO:REAL;
K:INTEGER;
BEGIN
K:=I; // "K" ES EL TOPE
// RECORRO LA TABLA Y CUENTO POSITIVOS:
// PRIMERO PONGO LOS CAMPOS A CERO:
POSITIVOS:=0;
NOCERO:=0;
FOR I:=1 TO K DO //<-SIEMPRE QUE SEA ASIGNACIÓN LO PONGO ASÍ
BEGIN
IF NUMEROS[I]>0 THEN
POSITIVOS:=POSITIVOS+1;
IF NUMEROS[I]<>0 THEN
NOCERO:=NOCERO+1;
END;
FORM1.SOLUCION.CAPTION:='EL PORCENTAJE ES '+FLOATTOSTR(POSITIVOS/NOCERO*100);
END;
procedure TForm1.ACEPTARClick(Sender: TObject);
begin
NUMEROS[I]:=STRTOINT(NUMERO.TEXT);
I:=I+1;
IF I>20 THEN
MOSTRAR
ELSE
FORM1.NUM.CAPTION:='NUMERO '+INTTOSTR(I)+':';
NUMERO.CLEAR;
NUMERO.SetFocus;
end;
procedure TForm1.PORCENTAJEClick(Sender: TObject);
begin
MOSTRAR;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
NUM.CAPTION:='NUMERO'+INTTOSTR(I);
end;
procedure TForm1.BORRARClick(Sender: TObject);
begin
NUMERO.CLEAR;
NUMERO.SETFOCUS;
SOLUCION.CAPTION:=' '; //EN VEZ DE "CLEAR" PORQUE NO ES UN CAMPO DE ENTRADA
end;
procedure TForm1.CERRARClick(Sender: TObject);
begin
CLOSE;
end;
INITIALIZATION
I:=1;
end.
Y este es el programa ejecutando:
No hay comentarios:
Publicar un comentario