Ver Mensaje Individual
  #4  
Antiguo 30-05-2011
martinartaza martinartaza is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 77
Reputación: 14
martinartaza Va por buen camino
Talking Ya casi, falta destrabar la tecla Alt.

Bueno ya está andando pero me queda la aplicación, en realidad todo el windows como si estuviera con la tecla alt presionada, pero uno presiona la tecla alt (y la suelta y ya queda todo bien).

Le muestro el código de ejemplo.

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, RxCalc, StdCtrls, Mask, ToolEdit, CurrEdit;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    RxCalculator1: TRxCalculator;
    procedure RxCalculator1CalcKey(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    CANTENTER: INTEGER;
    valor: Currency;
    banvalor: boolean;
  end;

var
  Form1: TForm1;

implementation

uses ComObj;

{$R *.dfm}

procedure TForm1.RxCalculator1CalcKey(Sender: TObject; var Key: Char);
begin
// Cuando se presiona enter parece ser que interna mente lo transforma en un =  que es #61
if key = #61 then
   begin
   IF CANTENTER = 1 THEN
      BEGIN
        // guardo el valor en la bariable valor
         valor :=  RxCalculator1.CalcDisplay;
         // cierro la calculadora con la tecla ALT + F4
         keybd_event(vk_menu,0,0,0);
         keybd_event(VK_F4,0,0,0);
         CANTENTER:= 0;
      end
   else  inc(CANTENTER);
   end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
//Inicializo la cantidad de enter a 0
CANTENTER:= 0;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
// detecto si se presiona un * (con eso abro la calculadora)
if key = #42 then
   begin
   banvalor:= True;
   RxCalculator1.Execute;
   // no uso if RxCalculator1.Execute (debido a que se la
   // cerrara con alt + F4
   end;
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   // cuando se levanta la tecla, se borra el * y
   // se pone el valor y luego seteo la bandera.
   Edit1.Clear;
   Edit1.Text:= floattostr(valor);
   banvalor:= False;
end;

end.

Alguien me podría ayudar a desbloquear la tecla ALT.

Nota: este código no lo hubiera podido lograr sin la ayuda de ecfisa, muchas gracias.

Última edición por martinartaza fecha: 30-05-2011 a las 21:17:04. Razón: comente un poquito más el código.
Responder Con Cita