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 30-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Llamar a la funcion que ordena al pulsar un titulo de columna

Hola amigos, tengo esto:
Código PHP:
void __fastcall TForm1::ButRefrescarProcClick(TObject *Sender)
{
    
ListItemsProcesos->Clear();
    
llenarLista();
   if(
LastShortedColumn != -1)
      
//Aqui la funcion que ordene todo por la columna deseada
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ListViewProcesosColumnClick(TObject *Sender,
      
TListColumn *Column)
{
   
LastShortedColumn Column->Index;
    
ColumnToSort Column->Index;
    ((
TCustomListView *)Sender)->AlphaSort();
}
//--------------------------------------------------------------------------- 
Y lo que quiero es que al pulsar el boton de refrescar se ordene el listview por la columna que indique LastShortedColumn pero no se como hacer para llamar a ese evento del ListView. ¿alguien puede ayudarme?
Responder Con Cita
  #2  
Antiguo 30-10-2014
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
Mira esto.


Saludos.
Responder Con Cita
  #3  
Antiguo 30-10-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola aguml.

También tenes un ejemplo en la propia ayuda de C++ Builder (TCustomListView => AlphaSort => Example)

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 30-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
No me entendisteis, yo tengo esto:
Código PHP:
void __fastcall TForm1::ButRefrescarProcClick(TObject *Sender)
{
    
ListItemsProcesos->Clear();
    
llenarLista();
   if(
LastShortedColumn != -1)
   { 
//Aqui la funcion que ordene todo por la columna deseada
      
   
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ListViewProcesosColumnClick(TObject *Sender,
      
TListColumn *Column)
{
   
LastShortedColumn Column->Index;
    
ColumnToSort Column->Index;
    ((
TCustomListView *)Sender)->AlphaSort();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ListViewProcesosCompare(TObject *Sender,
      
TListItem *Item1TListItem *Item2int Dataint &Compare)
{
    if (
ColumnToSort == 0)
        
Compare CompareText(Item1->Caption,Item2->Caption);
    else if(
ColumnToSort == 1)
    {
        
Compare Item1->SubItems->Strings[0].ToInt() - Item2->SubItems->Strings[0].ToInt();
    }
    else if(
ColumnToSort == 2)
    {
        
Compare CompareText(Item1->SubItems->Strings[1], Item2->SubItems->Strings[1]);
    }
    else if(
ColumnToSort == || ColumnToSort == 4)
    {
        
Compare Item1->SubItems->Strings[2].ToInt() - Item2->SubItems->Strings[2].ToInt();
    }
}
//--------------------------------------------------------------------------- 
Lo que quiero es que cuando haga clic en el boton ButRefrescarProc me limpie la lista, la rellene, y la ordene, sin tener que hacer clic en ninguna columna.
Responder Con Cita
  #5  
Antiguo 30-10-2014
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
Revisa la propiedad TListView::SortType

Saludos.
Responder Con Cita
  #6  
Antiguo 30-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
no entiendo. Lo que he puesto funciona perfecto si hago clic en un titulo de columna pero tambien quiero que ordene al dar en el boton que indico y que lo haga justo con la misma columna de la ultima vez que se ordenó. ¿Poniendo esa propiedad en alguno de esus valores hace eso? Creo que uno era shorttext o algo asi aunque yo lo tengo a none.
Responder Con Cita
  #7  
Antiguo 31-10-2014
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
Revisa la propiedad y asignalá en el evento OnCick del botón.


Saludos.
Responder Con Cita
  #8  
Antiguo 31-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Al final lo hice así:
Código PHP:
void __fastcall TForm1::ButRefrescarProcClick(TObject *Sender)
{
    
ListItemsProcesos->Clear();
    
llenarLista();
   if(
LastShortedColumn != -1)
   { 
//Aqui la funcion que ordene todo por la columna deseada
      
ListViewProcesos->AlphaSort();
   }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ListViewProcesosColumnClick(TObject *Sender,
      
TListColumn *Column)
{
   
LastShortedColumn Column->Index;
    
ColumnToSort Column->Index;
    ((
TCustomListView *)Sender)->AlphaSort();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ListViewProcesosCompare(TObject *Sender,
      
TListItem *Item1TListItem *Item2int Dataint &Compare)
{
    if (
ColumnToSort == 0)
        
Compare CompareText(Item1->Caption,Item2->Caption);
    else if(
ColumnToSort == 1)
    {
        
Compare Item1->SubItems->Strings[0].ToInt() - Item2->SubItems->Strings[0].ToInt();
    }
    else if(
ColumnToSort == 2)
    {
        
Compare CompareText(Item1->SubItems->Strings[1], Item2->SubItems->Strings[1]);
    }
    else if(
ColumnToSort == 3)
    {
        
Compare Item1->SubItems->Strings[2].ToInt() - Item2->SubItems->Strings[2].ToInt();
    }
   else if(
ColumnToSort == 4)
   {
      
Compare CompareText(Item1->SubItems->Strings[3], Item2->SubItems->Strings[3]);
   }
   else if(
ColumnToSort == 5)
   {
      
Compare CompareText(Item1->SubItems->Strings[4], Item2->SubItems->Strings[4]);
   }
}
//--------------------------------------------------------------------------- 
No pude hacerlo como dices asignando la propiedad ya que me decia algo de que era ambiguo y no me dejaba ni con = ni con << pero si vi que existian tanto AlphaSort como CustomSort y la primera hace lo que quería pero intenté como dices o usando CustomSort que supongo que tendrá la ventaja de hacer un ordenamiento mas personalizado pero no fui capaz de usar ninguno de los dos.
Responder Con Cita
  #9  
Antiguo 31-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
una pregunta, cuando limpio y relleno el tlistview se ve como se vacia y se rellena. En delphi creo que se evita eso usando ante una funcion updatebegin o algo asi ¿Como puedo hacerlo para que no se vea el parpadeo ese y simplemente aparezca actualizada sin mas?
Responder Con Cita
  #10  
Antiguo 31-10-2014
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
Revisa esto: Trucos para TListView con la API de Windows.


Saludos
Responder Con Cita
  #11  
Antiguo 01-11-2014
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
Otro detalle, para usar SortType desde código, hazlo así:
Código PHP:
 ListView1->SortType Comctrls::stText

Saludos.
Responder Con Cita
  #12  
Antiguo 01-11-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
¿En que se diferencia hacer lo que haces en tus trucos que muestras a usar ListView1->Items->BeginUpdate() para impedir que se actualice y luego usar ListView1->Items->EndUpdate() para mostrarlo ya actualizado?
Responder Con Cita
  #13  
Antiguo 01-11-2014
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
Mi truco evita la actualización de la ventana ListView a bajo nivel. Esa actualización es lenta pues se realiza a través de mensajes windows uno a uno. Mi truco evita procesar los mensajes ganando rapidez con efecto visual de instanteneidad.

Saludos.
Responder Con Cita
  #14  
Antiguo 01-11-2014
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
En realidad ambas cosas son lo mismo, trabajan a nivel del mensaje WM_SETREDRAW para evitar la actualización visual. Conocerlo a bajo nivel es útil para usarlo con cualquier ventana en builder o cuando trabajamos sólo con la API a bajo nivel Windows.

Saludos.
Responder Con Cita
  #15  
Antiguo 01-11-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
ok, mil gracias.
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
Cambiar el color del titulo de una columna en un DbGrid adrall OOP 3 20-06-2011 13:38:11
Lookup al pulsar sobre una columna en TDBGrid noob Conexión con bases de datos 6 21-10-2008 20:19:10
Obtener titulo de una columna MaMu OOP 1 29-06-2007 23:58:00
Título columna en varias líneas SMTZ .NET 6 07-09-2006 20:46:39
capturar click en la columna de titulo StringGrid poliburro Varios 10 23-01-2006 12:12:21


La franja horaria es GMT +2. Ahora son las 12:54:22.


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