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

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 15-12-2017
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 12
aguml Va por buen camino
Me gusta mas la otra opcion y he estado liado con ello intentando adaptar el codigo y he llegado a esto:
Código PHP:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    
//Necesario para el desplazamiento automatico de los listbox de Armas2 y Armas3
    
TListBox *LB;
    
_oldwndProc ListBoxCatArmaChris1->WindowProc;
    
    for(
int i=0GroupBoxInventarioChris->ControlCounti++){
        if(
GroupBoxInventarioChris->Controls[i]->ClassNameIs("TListBox")){
            
LB static_cast<TListBox*>(GroupBoxInventarioChris->Controls[i]);
            if(
LB){
                
LB->WindowProc newWndProc;
                
LB->ItemIndex  0;
            }
        }
    }
    for(
int i=0GroupBoxInventarioSheva->ControlCounti++){
        if(
GroupBoxInventarioSheva->Controls[i]->ClassNameIs("TListBox")){
            
LB static_cast<TListBox*>(GroupBoxInventarioSheva->Controls[i]);
            if(
LB){
                
LB->WindowProc newWndProc;
                
LB->ItemIndex  0;
            }
        }
    }
}
//-------------------------------------------------------------------------

void __fastcall TForm1::newWndProc(TMessageMessage)
{
    if(
Message.Msg == WM_VSCROLL)
        
vertScroll(LBActual);
    
_oldwndProc(Message);
}
//-------------------------------------------------------------------------

void __fastcall TForm1::vertScroll(TObject *Sender)
{
    
TPanel *Panel;
    
TGroupBox *GB;
    
TComboBox *CB;
    
AnsiString nombreCB;
    
TPoint pt;
    
HWND HWL;

    
GetCursorPos( &pt );
    
HWL WindowFromPointpt );
    ::
ScreenToClientHWL, &pt );

    for(
int i=0TabControl1->ControlCounti++){
        if(
TabControl1->Controls[i]->ClassNameIs("TPanel") && TabControl1->Controls[i]->Visible==true){
            
Panel static_cast<TPanel*>(TabControl1->Controls[i]);
            if(
Panel->Name == "PanelArmas2"){
                
GB GroupBoxInventarioChris;
            }else if(
Panel->Name == "PanelArmas3"){
                
GB GroupBoxInventarioSheva;
            }
            
//char buff[128];
            //GetClassName( HWL, buff, sizeof( buff ) );
            
LBActual = (TListBox*)GB->ControlAtPos(pt,false,true);
            
LBActual->Selected[GetScrollPos(LBActual->HandleSB_VERT)] = true;
            
nombreCB="ComboBox"+LBActual->Name.SubString(11,LBActual->Name.Length());
            
CB static_cast<TComboBox*>(GB->FindChildControl(nombreCB));
            
RellenarCombo(CB,LBActual->ItemIndex);
            break;
        }
    }
}
//-------------------------------------------------------------------------

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
    
TListBox *LB;
    for(
int i=0GroupBoxInventarioChris->ControlCounti++){
        if(
GroupBoxInventarioChris->Controls[i]->ClassNameIs("TListBox")){
            
LB static_cast<TListBox*>(GroupBoxInventarioChris->Controls[i]);
            if(
LB){
                
LB->WindowProc _oldwndProc;
            }
        }
    }
    for(
int i=0GroupBoxInventarioSheva->ControlCounti++){
        if(
GroupBoxInventarioSheva->Controls[i]->ClassNameIs("TListBox")){
            
LB static_cast<TListBox*>(GroupBoxInventarioSheva->Controls[i]);
            if(
LB){
                
LB->WindowProc _oldwndProc;
            }
        }
    }
}
//------------------------------------------------------------------------- 
El primer problema es que desaparecen todos los ListBox menos el primero y al cerrar la aplicacion da una excepcion incluso despues de salir del evento OnDestroy.
El segundo problema es que no soy capaz de obtener el ListBox actual. Intenté con el evento OnMouseMove del ListBox pero al usar el scroll de este no entra en ese evento asi que lo estoy intentando como ven en el codigo, atraves de la posicion en el GroupBox pero no retorna el Puntero al ListBox aunque he podido ver que la clase es TListBox con las dos lineas que tengo comentadas. Por otro lado LBActual ya no hace falta pasarla como parametro y podria estar en la funcion vertScroll ya que solo hago uso de ella ahi.
¿Como puedo hacer para saber cual ListBox es el que llama a la funcion? ¿Y para solucionar lo de los ListBox que desaparecen?

Última edición por aguml fecha: 15-12-2017 a las 21:04:21.
Responder Con Cita
 



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
Seleccion de item en combobox da error list index out of bonds jafera OOP 18 09-05-2013 10:21:54
Pregunta Combobox, selección del item sin hacer click NPIdea OOP 2 15-01-2010 07:42:14
ListBox - Scroll Kreyser Varios 2 08-06-2005 13:27:24
Scroll en un listbox kakesoft OOP 0 06-04-2005 02:40:25
Selección automática item combobox neon OOP 0 24-02-2005 13:59:22


La franja horaria es GMT +2. Ahora son las 22:32:57.


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