Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Diseño de componentes (https://www.clubdelphi.com/foros/showthread.php?t=52123)

escafandra 11-01-2008 00:36:07

Diseño de componentes
 
Estoy diseñando un componente en c++ que me plantea un problema. Debo detectar cuando esta corriendo el programa y cuando estoy en fase de diseño del formulario. Me explico.

Tengo una función que asigna un valor a una propiedad llamada Hide. Hide es de tipo bool y si es true, debe esconder la aplicación de la siguiente forma:

Código:

void __fastcall TTaskBarIcon::SetHide(bool Value)
{
  FHide = Value;
  if(FHide)
    ::ShowWindow(Application->Handle, SW_HIDE);
}

El problema esta que cuando diseño el formulario y coloco Hide en true, lo que hace es esconderme al propio compilador (Application->Handle) que desaparece de la barra de tareas. Por eso quiero detectar esta situación para que no ocurra, y que funcione sólo cuando el programa está compilado y corriendo.

Si sabéis una solución...

Saludos.

dec 11-01-2008 00:44:33

Hola,

Puedes probar con la propiedad "ComponentState" del tipo:

Código Delphi [-]
  TComponentState = set of (csLoading, csReading, csWriting, csDestroying,
    csDesigning, csAncestor, csUpdating, csFixups, csFreeNotification,
    csInline, csDesignInstance);

Normalmente sueles ver por ahí código como el que sigue, por ejemplo:

Código Delphi [-]
  if not (csDesigning in ComponentState) then
  begin
    // Estamos en tiempo de ejecución
  end;

escafandra 11-01-2008 00:48:14

dec
Al mirar las ayudas del c++Builder lo vi de pasada y no le presté mucha atención. lo voy a volver a mirar.
Gracias.

Saludos.

escafandra 11-01-2008 01:07:13

Confirmado.

El código en C++ quedaría de la siguiente forma:

Código:

void __fastcall TTaskBarIcon::SetHide(bool Value)
{
  FHide = Value;

  if(!ComponentState.Contains(csDesigning))
    if(FHide)
        ::ShowWindow(Application->Handle, SW_HIDE);
}

Muchas Gracias dec.

Saludos.


La franja horaria es GMT +2. Ahora son las 17:55:49.

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