Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-04-2011
arrayman arrayman is offline
Miembro
 
Registrado: abr 2006
Posts: 55
Poder: 19
arrayman Va por buen camino
ScrollBox1.HorzScrollBar.Visible := true howto

Hola, no consigo que un TScrollBox muestre la barra horizontal.
ScrollBox1.HorzScrollBar.Visible := true;

la situacion el la siguiente:
un frame (visor_fra) contiene el scrollbox1
en tiempo de ejecucion se añaden obtetos del Tframe_item
el cual contiene dos paneles uno alineado a la izq con 2 labels que
representan hora desde hora hasta. y otro panel para el contenido align alclient.
en el panel contenido de cada frame_item se cargan objetos frame_entity que representan las reservas de unas pistas de padel de modo que consiguo
que visorfrm muestre el estado de las pistas. pero no consiguo que se muestre
la barra de scrooll horizontal del tscrollbox1 ¿? alguna idea o alternativa?

gracias
Responder Con Cita
  #2  
Antiguo 13-04-2011
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 arrayman.

Código Delphi [-]
...
type
  TScrollBox = class(Forms.TScrollBox)
  private
    procedure WMNCCalcSize(var Message: TMessage); message WM_NCCALCSIZE;
  end;
  
  TForm1 = class(TForm)
    ScrollBox1:  TScrollBox;
  ...

implementation

procedure TScrollBox.WMNCCalcSize(var Message: TMessage);
var
  Style: Integer;
begin
  Style:= GetWindowLong(Handle, GWL_STYLE);
  SetWindowLong(Handle, GWL_STYLE, Style or WS_HSCROLL ); // agrega: or WS_VSCROLL); para ver ambas 
  inherited;
end;
...


Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 14-04-2011
arrayman arrayman is offline
Miembro
 
Registrado: abr 2006
Posts: 55
Poder: 19
arrayman Va por buen camino
hola ecfisa
ante todo muchas gracias por tu respuesta, justo acabo de probarla, y si,el scrool horizontal aparece, pero no, no soluciona mi problema. perdona si mi delphi esta oxidado, primero pense que tenia que modificar en la unidad forms de la vcl. (ya dije lo de oxidado? ). en fin despues probe a poner el codigo en el form donde tengo el frame del visor pero no salta el evento, asi que me lo lleve al frame visor y alli si que funciona el problema es que la barra horizontal ocupa todo scrollbox con lo que no hace scrooll pongo una imagen para que te hagas una idea.

pongo tambien el codigo que he puesto, por si algo hice mal.
Código Delphi [-]
......
type
  TScrollBox = class(Forms.TScrollBox)
  private
    procedure WMNCCalcSize(var Message: TMessage); message WM_NCCALCSIZE;
  end;

  TVisorFra = class(TFrame)
    ScrollBox1: TScrollBox;
.......


{ TScrollBox }

procedure TScrollBox.WMNCCalcSize(var Message: TMessage);
var
  Style: Integer;
begin
  Style:= GetWindowLong(Handle, GWL_STYLE);
  SetWindowLong(Handle, GWL_STYLE, Style or WS_HSCROLL or WS_VSCROLL); // agrega: or WS_VSCROLL); para ver ambas
  inherited;
end;

supongo que me falta algo para indicar al scrollbox que el tamaño es diferente, y la barra se adapte .

un saludo y gracias otra vez
Responder Con Cita
  #4  
Antiguo 14-04-2011
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.

Realmente no entiendo ese comportamiento, de hecho he utilizado ese código sin ningún tipo de inconveniente.

No ví ningún parámetro de la función que lo maneje, pero podés revisar aqui: SetWindowLong Function, por si algo se me escapó.

Además el texto en: About Scroll Bars, denota lo irregular del comportamiento que mencionás.
Cita:
If most of the object is visible, the scroll box occupies most of the scroll bar shaft. Similarly, if only a small portion of the object is visible, the scroll box occupies a small part of the scroll bar shaft.
Quizá el problema lo esté generando el uso de frames...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 14-04-2011
arrayman arrayman is offline
Miembro
 
Registrado: abr 2006
Posts: 55
Poder: 19
arrayman Va por buen camino
Bueno casi que me da verguenza decir esto. en fin el asunto es que al estar los componente internos con align alclient(o altop) nunca llegan a ser mas grandes que la superficie del scrollbox (upss)

al final quedo sin hacer uso el codigo ecfisa (muchisimas gracias)
y aunque es un poco ñapa hago esto.

Código Delphi [-]
procedure TVisorFra.ScrollBox1Resize(Sender: TObject);
var
  i:integer;
  oResItem:TResItemFra;
begin
  for i := 0 to ScrollBox1.ControlCount - 1 do
  begin
    if ScrollBox1.Controls[i] is TResItemFra  then
    begin
      oResItem := TResItemFra(ScrollBox1.Controls[i]);
      oResItem.Align := alNone;
      oResItem.Top := i*oResItem.Height;
      oResItem.Width := 1980;
      //oresItem.Width := ScrollBox1.Width+ 2;
    end;
  end;
end;


nuevamente gracias, he aprendido de ti.
Responder Con Cita
  #6  
Antiguo 14-04-2011
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 arrayman.

No tenés por que disculparte. Me alegra mucho que hayas resuelto el problema y te agradezco que nos hayas presentado la solución.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
AutoCancelDetails, ¿por default True? Al González Conexión con bases de datos 2 21-11-2007 21:55:46
True DBGrid vladimirbp Varios 1 25-11-2006 09:52:30
Visible := true ramonibk Varios 5 15-07-2004 12:57:11
Contar los True de un campo ajum Tablas planas 8 14-08-2003 04:02:46
True y False MRSAM MySQL 2 12-06-2003 22:36:10


La franja horaria es GMT +2. Ahora son las 18:23:56.


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