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 27-12-2013
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Duda tonta con herencia

Estoy usando un componente TDateTimePicker para que el usuario indique una fecha. Como puede sre que el rango de fechas no alcance la fecha del sistema me gustaría, por aquello de la elegancia, eliminar el circulo de la fecha del día de forma que no se muestre. He estado viendo la ayuda de este componente y, al menos en teoría, debería poder hacer esto:
Código:
DateTimePicker1->ShowTodayCircle = false
ya que este elemento desciende de TCommonCalendar. Sin embargo si pongo esa línea de código al compilar me da este error:
Cita:
[C++ Error] LisPer.cpp(28): E2247 'TCommonCalendar::ShowTodayCircle' is not accessible
¿Cómo puedo acceder a las propiedades del componente antecesor del que quiero usar?
Responder Con Cita
  #2  
Antiguo 27-12-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por favor, recuerda poner títulos descriptivos a tus preguntas

Gracias y feliz año
Responder Con Cita
  #3  
Antiguo 27-12-2013
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Perdona, no me di cuenta.
Responder Con Cita
  #4  
Antiguo 27-12-2013
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Si son "protected", heredándolas. Pero claro, deberás usar entonces la clase derivada y no la original (instalarlo como componente o crearlo "a mano").

Debería ser tan fácil como:
Código:
  class TMiDateTimePicker: public TDateTimePicker {
  public
  /* Getter */
    bool GetShowTodayCircle (void) inline { return this->ShowTodayCircle; }
  };
Hace mucho que no hago nada en C++, así que puede haber algún error.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #5  
Antiguo 27-12-2013
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
La solución que propone Ñuño Martínez sería de esta forma:

Código:
class TMiDateTimePicker: public TDateTimePicker
{
  public:
    void __fastcall SetShowTodayCircle(bool v) {ShowTodayCircle = v;}
};

// Para quitar el círculo
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   TMiDateTimePicker *DateTimePicker = (TMiDateTimePicker*)DateTimePicker1;
   DateTimePicker->SetShowTodayCircle(false);
}
Pero aunque te saltas la seguridad de la herencia, no funciona, te cambia la visualización (Kind) a Time. Se debe a que el TDateTimePicker no es un TCalendar hasta que no lo desplegamos.

La solución puede hacerse desde la API de Windows asignando al evento OnDropDown el siguiente código:

Código:
void __fastcall TForm1::DateTimePicker1DropDown(TObject *Sender)
{
   // Encontramos el HANDLE del calendario 
  HANDLE hCalendar = (HANDLE)SendMessage(DateTimePicker1->Handle, DTM_GETMONTHCAL, 0, 0);
  if(hCalendar > 0)
    SetWindowLong(hCalendar, GWL_STYLE, GetWindowLong(hCalendar, GWL_STYLE)|MCS_NOTODAYCIRCLE);
}

Saludos.
Responder Con Cita
  #6  
Antiguo 28-12-2013
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Muchas gracias por la ayuda. Me ha funcionado perfectamente con la API.
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
Ayuda con QREPORT!!!!! (DUDA TONTA) pape19 Impresión 1 03-08-2010 00:36:28
duda algo tonta cyber_zero Varios 10 17-09-2008 00:08:58
Pregunta Tonta Mario1980 Varios 1 30-10-2004 16:36:14
duda tonta con gdb acrophet Conexión con bases de datos 14 19-02-2004 20:26:35
duda tonta :P acrophet Varios 2 01-12-2003 11:12:20


La franja horaria es GMT +2. Ahora son las 18:07:10.


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