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 20-01-2012
ToritoCapo ToritoCapo is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 14
Poder: 0
ToritoCapo Va por buen camino
Gracias a todos por su tiempo, estuve con unos problemas por eso no me pude conectar a responder.

Creo que las soluciones que me brindaron pueden llegar a funcionar todas, pero tengo el inconveniente que no puedo traducirlas.
Además no tengo tantos conocimientos por ejemplo, como para poder crear nuevas clases, perdón soy bastante novato.

Por eso valoro muchísimo lo que hacen todos ustedes por los demás.

Saludos y gracias.
Responder Con Cita
  #2  
Antiguo 21-01-2012
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
No me había percatado de este tema hasta ahora. Voy a poner mi granito de arena.

En primer lugar y como solución sencilla sería llamar al evento OnChange cada vez que usemos la propiedad ActivePageIndex, de forma "manual". Tiene la ventaja de ser sencillo y comprenderse bien, pero no es automático:
Código:
PageControl1->ActivePageIndex = 3;
PageControl1Change(this);
Una segunda solución mas avanzada y parecida a la solución de roman y Neftali sería reescribir el método SetActivePageIndex de la clase TPageControl. Tiene la ventaja de automatizar el proceso, el evento OnChange se lanzará con cada asignación de ActivePageIndex:

Código:
// Nueva definición de SetActivePageIndex de la clase TPageControl
void __fastcall TPageControl::SetActivePageIndex(const int Value)
{
  if (Value > -1 && Value < PageCount)
    ActivePage = Pages[Value];
  else
    ActivePage = 0;

  if(OnChange) OnChange(this); // Lanzamos el Evento
}

// Asignación de ActivePageIndex 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  PageControl1->ActivePageIndex = 1;
}

// Evento OnChange
void __fastcall TForm1::PageControl1Change(TObject *Sender)
{
  ShowMessage("Eureca");
}

Saludos.
Responder Con Cita
  #3  
Antiguo 10-05-2018
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
Cita:
Empezado por escafandra Ver Mensaje
Una segunda solución mas avanzada y parecida a la solución de roman y Neftali sería reescribir el método SetActivePageIndex de la clase TPageControl. Tiene la ventaja de automatizar el proceso, el evento OnChange se lanzará con cada asignación de ActivePageIndex:
Estaba buscando por el foro, porque tengo el mismo problema que abrió este hilo. Este código de escafandra me parece estupendo por lo sencillo pero he estado mirando por Builder y no encuentro por ninguna parte ese método SetActivePageIndex. ¿Me podéis explicar como implementarlo?
Responder Con Cita
  #4  
Antiguo 10-05-2018
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
Cita:
Empezado por Angel.Matilla Ver Mensaje
Estaba buscando por el foro, porque tengo el mismo problema que abrió este hilo. Este código de escafandra me parece estupendo por lo sencillo pero he estado mirando por Builder y no encuentro por ninguna parte ese método SetActivePageIndex. ¿Me podéis explicar como implementarlo?
No lo encontrarás en Builder porque es un método escrito en delphi:

comctrls.pas
Código Delphi [-]
TPageControl = class(TCustomTabControl)
private
.....
procedure SetActivePageIndex(const Value: Integer);
.....

Pero nada te impide que lo reescribas y lo compiles para que puedas cambiarle su funcionalidad.

Saludos.
Responder Con Cita
  #5  
Antiguo 10-05-2018
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
Cita:
Empezado por escafandra Ver Mensaje
Pero nada te impide que lo reescribas y lo compiles para que puedas cambiarle su funcionalidad.
Gracias por la respuesta, pero si Builder y yo ya tenemos más de un desencuentro, no te quiero explicat con Delphi. El código que hay antes estápuesto en Builder; ¿bastaría con ponerlo tal cual y compilarlo o habría que hacer algo más?
Responder Con Cita
  #6  
Antiguo 10-05-2018
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
Cita:
Empezado por Angel.Matilla Ver Mensaje
Gracias por la respuesta, pero si Builder y yo ya tenemos más de un desencuentro, no te quiero explicat con Delphi. El código que hay antes estápuesto en Builder; ¿bastaría con ponerlo tal cual y compilarlo o habría que hacer algo más?
Claro. La solución está escrita en C++. Si tienes problemas te mando un proyectito. Ahora no tengo a mano un PC.

Saludos
Responder Con Cita
  #7  
Antiguo 11-05-2018
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
Ahí te subo un ejemplo. No lo dejaré mucho tiempo para no consumir mi espacio de archivos adjuntos.

Saludos.

Última edición por escafandra fecha: 11-05-2018 a las 20:33:48.
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
OnChange elturu15 Varios 4 03-05-2011 17:51:54
Evento onChange en TImage MAXIUM Gráficos 3 08-03-2010 03:02:11
evento onchange de un dbedit ercrizeporta Varios 1 31-10-2006 14:09:38
Findfirst funciona cuando quiere rfernandez API de Windows 3 17-03-2005 11:35:43
OnChange en TListBox fedecm Varios 1 30-06-2004 17:24:32


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


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