Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   programa activo en windows (https://www.clubdelphi.com/foros/showthread.php?t=88306)

novato_erick 18-05-2015 18:44:41

programa activo en windows
 
Hola Sres. Como están ustedes...

Tengo una interrogante el cual necesito que la aplicación desarrollada en delphi esté siempre en primer plano ya que en ocasiones se pone en segundo plano y la aplicación se encarga de leer codigos de barra sin intervención de ningún usuario y al estar en segundo plano el lector realiza la lectura pero el programa no captura en el edit la lectura. eso es posible usando la api de windows?


Saludos

novato_erick

ecfisa 18-05-2015 19:09:15

Hola novato_erick.

Ajusta la propiedad FormStyle del form principal en fsStayOnTop en tiempo de diseño, o si prefieres en ejecución:
Código Delphi [-]
procedure TMainForm.FormCreate(Sender: TObject);
begin
  FormStyle := fsStayOnTop; 
  ...
end;

Saludos :)

ecfisa 18-05-2015 19:20:32

Hola de nuevo.

Ahora noto que lo publicaste en el foro API de windows, así que si gustas hacerlo por esa vía:
Código Delphi [-]
procedure FormAlTop(aForm: TForm; const alTop: Boolean);
begin
  if alTop then
    SetWindowPos(aForm.Handle,
                 HWND_TOPMOST,
                 0,
                 0,
                 0,
                 0,
                 SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE)
  else
    SetWindowPos(aForm.Handle,
                 HWND_NOTOPMOST,
                 0,
                 0,
                 0,
                 0,
                 SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;

Llamada ejemplo:
Código Delphi [-]
procedure TMainForm.CheckBox1Click(Sender: TObject);
begin
  FormAlTop(MainForm, CheckBox1.Checked);
end;

Saludos :)

novato_erick 18-05-2015 19:23:37

Jaaja ecfisa
esto es todo?

Cita:

Ajusta la propiedad FormStyle del form principal en fsStayOnTop en tiempo de diseño, o si prefieres en ejecución:

procedure TMainForm.FormCreate(Sender: TObject);
begin
FormStyle := fsStayOnTop;
...
end;
yo buscando por todo lado función como esta Función GetActiveWindow.

Saludos

ecfisa 18-05-2015 19:35:16

Cita:

Empezado por novato_erick (Mensaje 492240)
Jaaja ecfisa
esto es todo?
...

Un ejemplo de la belleza de la simplicidad... :D

Saludos :)

novato_erick 18-05-2015 20:40:16

Hola Chicos complementando un poco a mi tema en el que creo que el problema a parte de ejecución a primer plano de la aplicación a parte estaba el problema luego del Focus del componente que en este caso es un edit

esta es el codigo implementado en una funcion llamada ActiveFocus;

Código Delphi [-]
function TfrmAsistencia.ActiveFocus: Boolean;
var
  Handle: THandle;
  Len: LongInt;
  Title: string;
begin
  Result := False;
  Handle := GetForegroundWindow;
  if Handle <> 0 then
  begin
    Result := True;
    if Result then
    begin
      edtCedula.SetFocus;
    end;
  end;


con un Timer en el evento OnTimer del mismo llamo simplemente la funcion y resolví el problema del focus en la aplicación esto aunque dentro del formulario mi edit el Tab Order es el primero no me hacia el foco al pasar nuevamente a primer plano.

Saludos

novato_erick

p.d:

Cita:

ecfisa
Un ejemplo de la belleza de la simplicidad... :D
espero sea este código se convierta en algo más simple...

ecfisa 18-05-2015 21:08:52

Hola novato_erick.

Realmente no alcanzo a visualizar la situación ni el problema, ¿ Podrías explicar con mas detalle el comportamiento que estas buscando ?

Saludos :)

AgustinOrtu 18-05-2015 23:53:14

Este tema me resulta interesante ya que dentro de poco voy a tener que andar usando un lector de huellas digitales en una aplicacion que por ahora esta en papel y lapiz

La aplicacion en teoria registra asistencia de una persona al leer la huella digital de la misma, seria muy interesante que aunque no sea la ventana activa siga realizando el proceso

Lamentablemente no tengo codigo para compartir, pero supongo que consistira en un control edit en el cual capturo la lectura de la huella digital, y en el evento OnChange invocar algun metodo que busque a la persona con la huella digital y se encargue de marcar el presente

La solucion de la propiedad fsStayOnTop es la ultima alternativa a la que me gustaria recurrir, ya que la pc en cuestion podria estar usandose para otra cosa (como expuse en otro tema mi aplicacion registra presentes de socios en un gimnasio), por ejemplo la usan para pasar musica


Cordiales saludos

Neftali [Germán.Estévez] 19-05-2015 16:53:00

Cita:

Empezado por AgustinOrtu (Mensaje 492256)
Este tema me resulta interesante ya que dentro de poco voy a tener que andar usando un lector de huellas digitales en una aplicacion que por ahora esta en papel y lapiz

Con los que yo he trabajado no funcionan como los lectores de códigos, que suelen "emular" la introducción de un teclado (ya que también se podría hacer tecleando al código manualmente -cuando la etiqueta, por ejemplo, está rota y no se puede leer con el lector-).

En el caso de un lector de huella no tiene sentido introducirla tecleando, y se los que yo he visto funcionan con DLL/OCX que se distribuyen con el dispositivo y se comunican con él.


La franja horaria es GMT +2. Ahora son las 15:16:00.

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