Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema con PageControl (https://www.clubdelphi.com/foros/showthread.php?t=85523)

jesconsa 28-03-2014 10:48:51

Problema con PageControl
 
Hola. Tengo un problema con un PageControl. Cuando voy pulsando las pestañas (tabs) no se pinta bien sino que pinta lo de otro tab, hay que darle una segunda vez al tab para que lo pinte bien. He revisado mil veces la jerarquia de objetos que hay en cada tab pero todo esta correcto. Supongo que es algo muy basico pero no doy con lo que es. El que utilizo es el de Jedi (JvPageControl) y lo tengo puesto encima de un JvPanel . En dicho panel lo que tengo son dos JvPagecontrol separados por un splitter. Alguna idea?.

Gracias
Saludos

Jesus

Casimiro Noteví 28-03-2014 11:38:59

Desde aquí no vemos tu código fuente ;)

jesconsa 28-03-2014 11:46:04

Hola Casimiro. La pregunta va enfocada a tema de propiedades del control o ignorancia mia de utilizar el control mas que a codigo fuente. Era por si a alguien le habia pasado.;-)

Gracias
Saludos

jesconsa 28-03-2014 12:04:21

Pagecontrol
 
Hola. Que curioso, he visto que esto ocurre cuando en otro panel tengo seleccionado un VirtualTreeVew (dentro de otro pagecontrol), si no es asi el PageControl del otro panel se "repinta" sin problemas....Por que afecta el VirtualTreeView de un panel al Pagecontrol de otro panel?..

Saludos
Jesus

Casimiro Noteví 28-03-2014 13:25:42

Te das cuenta cómo sí que hace falta que veamos el código fuente. No somos adivinos para saber que tienes un virtualtreeview ni sabemos lo que estás haciendo con él para que funcione bien cuando lo desactivas ;)

jesconsa 28-03-2014 14:08:04

PageControl
 
Hola Casimiro. En la aplicacion hay MUCHOS objetos . Como entenderas no puedo poner todo el codigo relativo a TODOS los objetos. La relacion que he encontrado entre el VirtualTreeView es pura casualidad porque no hay relacion ninguna entre este Tree y el PageControl que comentaba, no hay relacion de programacion pero si debe haber alguna de jerarquia de componentes, es lo que quiero saber y por eso he puesto el mensaje. Creeme que no tengo inconveniente en poner codigo, pero cuando tenga sentido ponerlo..;-)

Saludos
Jesus

jesconsa 28-03-2014 14:44:27

PageControl
 
Hola de nuevo. He ido ejecutando paso a paso y cuando el Tree rellena los nodos se queda indefinidamente en su rutina:

Código Delphi [-]
function MsgHookProc(Code: Integer; CurrentProcess: Cardinal; HookStruct: PCWPStruct): integer; stdcall;
begin
  case HookStruct.Message of
  WM_WINDOWPOSCHANGING, WM_WINDOWPOSCHANGED:
     begin
       if Assigned(FocusGrid) then
         FocusGrid.MoveFocusHelper;
     end;
  end;

  Result := CallNextHookEx(MsgHook, Code, CurrentProcess, LParam(HookStruct))
end;


Es esto normal?.....Parece como si el Tree acaparara (sin yo hacer nada en codigo) todo el tiempo del procesador o algo parecido y asi no dejara que se pinta bien el PageControl...

Saludos
Jesus

jesconsa 28-03-2014 15:27:36

Y de nuevo...Efectivamente, sigo con el paso a paso y entra contiuamente el Tree en su rutina OnGetText para pintar el caption de cada nodo:

Código Delphi [-]

procedure TForm1.VST1GetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
var
    CustomerRecord : PTreeData;
begin
CustomerRecord := Sender.GetNodeData(Node);

case Column of
  0: begin
        CellText := CustomerRecord.NCaption;
        if(CustomerRecord.Chk=True) then Node.CheckState:=VirtualTrees.csCheckedNormal
            else Node.CheckState:=VirtualTrees.csUncheckedNormal;

     end;
  1: if VST1.GetNodeLevel(Node)=2 then CellText := DateToStr(CustomerRecord.NColumna1);
  2: if VST1.GetNodeLevel(Node)=2 then CellText := IntToStr(CustomerRecord.NColumna2);
  3: if VST1.GetNodeLevel(Node)=2 then CellText := CustomerRecord.NColumna3;
end;

end;

........Es este su comportamiento normal?, no deberia de entrar en esta rutina cuando hay algun cambio o se hace algo con el raton (etc) y no continuamente?

Saludos
Jesus

jesconsa 28-03-2014 15:40:11

PageControl
 
Pues si,..es asi...He puesto Un panel, dentro un PageControl y en una de los tabs del PageCOntrol un VirtualTreeView,..en cuanto he definido el OnGetText no ha salido de ahi......Sin tocar ni propiedades del Tree ni nada....No es raro?.....

Saludos
Jesus

look 28-03-2014 15:46:15

hola prueba a poner esto en el evento onCreate del form:

PageControl1.DoubleBuffered := true;

esto tambien funciona con los panels.

Saludos!

jesconsa 28-03-2014 16:46:40

PageControl
 
Hola Look. Has dado con la tecla. Ademas , al hacer lo que me has dicho me he dado cuenta de una rutina (OnMouseDown) de un PageContol que no existia y que tambien ha podido contribuir a que no fuera bien.

Muchisimas gracias
Saludos

Jesus

look 28-03-2014 16:55:02

Cita:

Empezado por jesconsa (Mensaje 474474)
Hola Look. Has dado con la tecla. Ademas , al hacer lo que me has dicho me he dado cuenta de una rutina (OnMouseDown) de un PageContol que no existia y que tambien ha podido contribuir a que no fuera bien.

Muchisimas gracias
Saludos

Jesus

Excelente.!

Saludos!


La franja horaria es GMT +2. Ahora son las 21:25:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi