Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   validacion clic derecho (https://www.clubdelphi.com/foros/showthread.php?t=91422)

ANCELMO 03-02-2017 18:12:15

validacion clic derecho
 
Buenas tardes.

Me podrian ayudar, estoy tratando de validar el clic derecho, ctrl+p,crtl +g. he intentado con los virtual keys pero solo me los valida cuando estoy con el foco en un edit y al usarlos sobre el onkeydown y el mousedown de la forma no los valida me podrian ayudar con esto

bitbow 03-02-2017 18:18:48

A que te refieres con validar?
Detectar que este pulsado?
evitar que aparezca el menu default?

Saludos.

ANCELMO 03-02-2017 18:27:00

bueno en si estoy usando un acropdf pero donde solo usuarios con permisos asignados puedan imprimir, guardar. y pues con los comando de ctrl+p, ctrl+g o el clic derecho pueden hacer estas acciones. lo que se me ocurrio fue validarlos en los eventos del onkeydouwn y mousedown pero
al hacer estas acciones no ingresa a la validacion.

bitbow 03-02-2017 19:12:49

No he revisado si el acropdf tiene algun evento que se pueda usar (si es asi no se si debas habilitar el KeyPreview en el formulario), pero si por ese camino no es posible puedes usar un hook para detectar los eventos del raton.

Saludos.

AgustinOrtu 03-02-2017 19:15:44

la forma mas facil es usar TActionList, en donde defines diferentes TAction

En el evento OnExecute de cada TAction escribes el codigo que queres que ejecute ese "comando"
En el evento OnUpdate (el cual es invocado periodicamente por la Vcl) podes escribir validaciones del tipo habilitar/deshabilitar la accion, por ej:

Código Delphi [-]
 type
  TTuForm = class(TForm)
    ActionList: TActionList;
    Action_Imprimir: TAction;
    procedure Action_ImprimirExecute(Sender: TObject);
    procedure Action_ImprimirUpdate(Sender: TObject);
  end;

procedure TTuForm.Action_ImprimirExecute(Sender: TObject);
begin
  // codigo para imprimir
end;

procedure TTuForm.Action_ImprimirUpdate(Sender: TObject);
begin
  Action_Imprimir.Enabled := UsuarioPuedeImprimir;
end;

Tambien es posible directamente dejar TAction.Enabled a True o False en algun momento de inicializacion y no escribir los eventos OnUpdate

Lo bueno de las TAction es que podes enlazarla a distintos componentes, de esta forma centralizas el codigo para ejecutar los distintos comandos y las validaciones en objetos TAction, y luego simlemente conectas componentes con su determinada accion

Los TButton o similares, los elementos de los objetos TMainMenu, y muchos mas (en realidad todos los descendientes de TControl), tienen una propiedad publicada "Action".

Dicha accion puede ser compartida por distintos controles. Por ejemplo, si tenes un item de un menu conectado con la Action_Imprimir, al hacer click sobre ese item, se ejecuta el evento Action_ImprimirExecute. Si la misma accion la utiliza un componente TButton, el caso es sl mismo, al hacer click sobre el boton, se ejecuta el mismo codigo

De manera analoga, si deshabilitas la accion, todos los componentes asociados se deshabilitan; en otras palabras, no hay manera de poder ejecutar el comando hasta que se habilite nuevamente


La franja horaria es GMT +2. Ahora son las 19:40:37.

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