Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   ocultar icono de la barra de tareas pero no el Form Main (https://www.clubdelphi.com/foros/showthread.php?t=85069)

odiseeus 22-01-2014 22:19:21

ocultar icono de la barra de tareas pero no el Form Main
 
buen día,

requiero alguna manera para ocultar el icono de la barra de tareas de mi programa, pero sin ocultar el Form Principal (Main).
lo que pasa es que el Form principal es el único que si se mantiene siempre por encima de cualquier otra aplicación cuando en su propiedad FormStyle con valor igual a fsStayOnTop, pues ya lo intente con otro Form llamado desde el Form Principal, este segundo Form también con el FormStyle igual a fsStayOnTop pero no se mantiene siempre por encima de las demás aplicaciones, así el Form principal este oculto.

Espero haberme explicado a gusto, uso C++ XE2 en Win 7, Gracias.

ecfisa 23-01-2014 00:38:21

Cita:

Empezado por odiseeus (Mensaje 472012)
requiero alguna manera para ocultar el icono de la barra de tareas de mi programa, pero sin ocultar el Form Principal (Main).

Hola odiseeus.

Aunque no dispongo de la versión que mencionas, de este modo me funciona correctamente :
Código:

void __fastcall TFormPrincipal::FormCreate(TObject *Sender)
{
  ShowWindow(Application->Handle, SW_HIDE);
  SetWindowLong(Application->Handle,
                GWL_EXSTYLE,
                GetWindowLong(Application->Handle, GWL_EXSTYLE)
                | WS_EX_TOOLWINDOW);
  ShowWindow(Application->Handle, SW_SHOW);
}

Saludos :)

odiseeus 23-01-2014 07:00:56

Gracias por responder ecfisa,

pero no funciona el procedimiento en el FormCreate del Form primcipal :( , tampoco creo que la versión haga que eso cambie mucho, igual yo hago que desaparezca el icono de la barra de tareas, pero llamando un Form Secundario y haciendo un Hide() al Form principal, pero a ese secundario no le sirve como debe ser el FormStyle en fsStayOnTop, pues no mantiene sobre las demás aplicaciones, eso es lo que requiero pero no he dado con el chiste, gracias.

ecfisa 23-01-2014 10:21:23

Hola odiseeus.

Sin embargo, la discrepancia pareciera estar provocada por la diferencia de versiones, ya que tanto en Win 32 como en Win 64 obtengo estos resultados:

Sin usar el código anterior.


Usándolo.


Saludos :)

odiseeus 23-01-2014 20:59:52

lo sé, el código debería funcionar, lo probé desde un proyecto en limpio, y no oculta el icono, veo que usas win 8, pero que también tienes una versión anterior de builder, leyendo respecto a eso en la web, dice que a partir de la versión 2010 (otros dicen que desde la 2009) incluyendo las XE el control del icono se lo da al form principal y no directamente a la aplicación, por lo tanto el icono será visible mientras el form no sea oculto, pero que si se puede mostrar el icono y ocultar el Form.

siendo así ecfisa, hay alguna forma de que un Form que no sea el Main, se pueda mantener siempre por encima de las demás aplicaciones?, pues así tenga en el Form el atributo FormStyle en fsStayonTop no lo hace, alguna opción? (tendría que abrir otro hilo para preguntar eso?) , Gracias.

ecfisa 23-01-2014 21:34:41

Hola odiseeus.
Cita:

Empezado por odiseeus (Mensaje 472046)
leyendo respecto a eso en la web, dice que a partir de la versión 2010 (otros dicen que desde la 2009) incluyendo las XE el control del icono se lo da al form principal y no directamente a la aplicación, por lo tanto el icono será visible mientras el form no sea oculto, pero que si se puede mostrar el icono y ocultar el Form.

Es muy interesante y coherente con la situación la explicación que encontraste.

Cita:

Empezado por odiseeus (Mensaje 472046)
hay alguna forma de que un Form que no sea el Main, se pueda mantener siempre por encima de las demás aplicaciones?, pues así tenga en el Form el atributo FormStyle en fsStayonTop no lo hace, alguna opción?

Siempre y cuando estes mostrando los forms de forma no modal, intenta de este modo:
Código:

void __fastcall TForm2::FormCreate(TObject *Sender)
{
  SetWindowPos(Handle,
              HWND_TOPMOST,
              Left,
              Top,
              Width,
              Height,
              SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
}

Saludos :)

odiseeus 23-01-2014 22:13:11

Gracias por responder ecfisa,

pero eso hace que al momento de crear o llamar el Form este se posicione por encima de las demás aplicaciones, pero no se mantiene siempre ahí, pues cuando otra aplicación tenga toma el foco, el Form se mantenga por encima de esa otra aplicación pero no sucede así, algo que si hace el Form Main, espero no molestar tanto, gracias

ecfisa 23-01-2014 22:30:02

Hola odiseeus.

En cuanto a ocultar el ícono para versiones 2007 y posteriores encontré esto Hide the Taskbar button for Delphi 2007, que lamentablemente no puedo comprobar.

Si bién el artículo se refiere a Delphi, hay altas posibilidades que funcione del mismo modo para C++ Builder.

Saludos :)

odiseeus 24-01-2014 00:59:51

Gracias por responder ecfisa,

el método el cual se muestra en la link que me sugeriste, lo adapte a C++ (un simple cambio:) ) y quiero informar que FUNCIONÓ!!! :D ... Gracias! te debo una cerveza! ... espero no haber hecho mucha molestia, éxitos! :D


La franja horaria es GMT +2. Ahora son las 13:31:13.

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