Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-01-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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.
Responder Con Cita
  #2  
Antiguo 11-01-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 11-01-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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.
Responder Con Cita
  #4  
Antiguo 11-01-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
diseño centralizado de datasets, aplicación BD grande, crear componentes dinámicos.. pvizcay OOP 25 28-04-2012 20:01:34
No veo, en tiempo de diseño los nombres de los componentes QuarkBcn Varios 3 19-12-2007 09:38:31
Diseño pepelu1975 Varios 1 31-05-2004 09:55:36
Instalar componentes solo en tiempo de diseño DarKraZY Varios 0 19-08-2003 16:47:37
Diseño de componentes vichovi OOP 10 22-05-2003 14:33:31


La franja horaria es GMT +2. Ahora son las 01:49:52.


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
Copyright 1996-2007 Club Delphi