Aplicação na frente de todas
04/12/2009
0
Robson Tavares
Posts
08/12/2009
Benedito Batista
Eu setaria as seguintes propriedades assim
BorderIcons = []
BorderStyle = bsSingle
FormStyle = fsStayOnTop
WindowState = wsMaximized
O unico problema é que da pro usuario abrir o menu iniciar e abrir qquer programa, mas ainda assim seu projeto estara sempre visivel....
09/12/2009
Robson Tavares
HWND_NOTOPMOST,
0, 0, 0, 0,
SWP_NOMOVE OR
SWP_NOACTIVATE OR
SWP_NOSIZE); Como tenho vários forms abertos ao mesmo tempo na minha aplicação, esta função acima serve apenas para manter o form corrente sobre todo o resto. Ou seja, se tiver três forms abertos, os dois de baixo poderão ser sobrepostos por outra aplicação e apenas o primeiro de cima não será. Alguém tem outra sugestão?
09/12/2009
Vitor Rubio
Você quer que sua aplicação fique na frente de todas ou quer impedir que o usuário abra qualquer aplicação que não seja a sua?
O que você pode fazer é iniciar o sistema com uma form transparente, e a partir dessa abrir uma form mdi, modal, always on top.
Todas as outras forms você pode abrir dentro da mdi, como mdi childs, ou usar SetParent para definir a form mdi como parend de qualquer outra.
Se não quiser que outros programas sejam abertos você pode colocar restrições no usuário, no registro, ou usar ShowWindow para fazer "sumir" as janelas de sistema do windows.
Também pode definir o seu programa como sendo o "shell" do windows (isso era possivel no win98, não sei se isso é possivel nos atuais).
09/12/2009
Robson Tavares
sim, verifiquei isso.
Você quer que sua aplicação fique na frente de todas? Exato. ou quer impedir que o usuário abra qualquer aplicação que não seja a sua? Não tem necessidade
O que você pode fazer é iniciar o sistema com uma form transparente, e a partir dessa abrir uma form mdi, modal, always on top. Todas as outras forms você pode abrir dentro da mdi, como mdi childs, ou usar SetParent para definir a form mdi como parend de qualquer outra.
Minha aplicação não pode ser MDI
Se não quiser que outros programas sejam abertos você pode colocar restrições no usuário, no registro, ou usar ShowWindow para fazer "sumir" as janelas de sistema do windows. O problema não é esse. Por exemplo: minha aplicação está rodando e aberta sobre todas as outras e precisa ser dessa forma. Aí o cliente acessa via Logmein o PC onde está rodando a aplicação, e quando ele saí do Logmein fica uma tela sobreposta na minha aplicação. Ocorre o mesmo quando o Logmein emite avisos de atualização, etc (e o problema não é só do Logmein, pois outros programas como Acrobat, Flash, etc causam o mesmo problema). Outra coisa: no Windows Vista, fica aquele logotipo no canto de baixo aparecendo sobre a aplicação e também não consegui tirar aquilo nem fazer com que a aplicação sobreponha o logotipo.
Também pode definir o seu programa como sendo o "shell" do windows (isso era possivel no win98, não sei se isso é possivel nos atuais).
Não é possível.
11/12/2009
Vitor Rubio
Não sei porque não pode ser modal, mas você pode simular modal sem ser de verdade, usando setparent. Você disse que sua aplicação é formada por três forms que formam um tipo de painel de controle, né? Então você pode colocar na sua form principal 3 Tpanels normais nas posições que você quer que as forms fiquem. Daí você pega os handles dos três e usa setparent para colocar as forms dentro dos panels.
Agora já está tarde, mas amanhã de manhã se você quiser eu posso fazer um exemplo.
Clique aqui para fazer login e interagir na Comunidade :)