Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   ScrollBars en TDBGrid (https://www.clubdelphi.com/foros/showthread.php?t=9159)

jealousy 15-04-2004 16:42:48

ScrollBars en TDBGrid
 
Hola :)

Tengo un TDBGrid al que quiero ocultar las ScrollBars. Para Hacerlo uso esto:

TStringGrid(DBGrid1).ScrollBars:=ssNone;

...Pero la barra vertical me aparece, aunque solo haya dos items y sobre espacio (o sea que no haria falta).

Saludos !

jachguate 17-04-2004 09:49:59

Cita:

Empezado por jealousy
TStringGrid(DBGrid1).ScrollBars:=ssNone;

Oye... esto es peligroso!!... donde aprendiste a hacerlo. Estas aplicando un "Molde" que no corresponde para nada, con la clase, pues el TDBGrid no hereda del TStringGrid (al menos no en las versiones de delphi que yo tengo...)

Una asignación cómo esta puede arrojar resultados impredecibles, pues está sobreescribiendo espacios de memoria que corresponden probablemente a otras propiedades (o incluso otras variables y hasta no asignados), con el consecuente riesgo de generar Violacciones de Acceso a Memoria o cambiar el valor de otras propiedades "a huevo". (si no a ocurrido, es porque corres con suerte, pero como sigas con está práctica... ya veras!)

Si queres aplicar un molde a una clase... te aconsejo que investigues su herencia, o bien que siempre apliques un "molde seguro" (safe typecast) con el operador AS. De esa manera, si la clase no "es" lo que vos pretendes que sea, se eleva una excepción, evitando algun desastre.

Hasta luego.

;)

Gydba 17-04-2004 15:27:04

Fijáte si te sirve:
Código:

...
type TSinScrollDBGrid = class(TDBGrid)
protected
  procedure Paint; override;
end;

implementation

procedure TSinScrollDBGrid.Paint;
begin
  SetScrollRange(Self.Handle, SB_VERT, 0, 0, False);
  SetScrollRange(Self.Handle, SB_HORZ, 0, 0, False);
  inherited Paint;
end;
...


jealousy 17-04-2004 16:00:46

Gracias por la info ;)

SOY UN PELIGRO!! jeje

"TSTringGrid(DBGrid1).ScrollBars:=ssNone" lo saque de la pagina de Trucomania ( http://www.q3.nu/trucomania/ftesp.html )
Nº de truco:334


Probare lo que me habeis dicho, gracias otra vez

Saludos!!

jachguate 18-04-2004 14:35:12

pues es peligroso. En el mismo hilo, Ivn recomienda el uso de:

ShowScrollBar(DBGRID1.Handle, SB_VERT, False) ; - remove

ShowScrollBar(DBGRID1.Handle, SB_VERT, True) ; - add

Que me parece mucho mas limpio, y le veo mas probabilidades de funcionar en distintas versiones de Delphi y de windows.

Hasta luego.

;)

jealousy 18-04-2004 20:37:12

Gracias de nuevo :)

Informare a Radikal ;)

Saludos!!

roman 19-04-2004 19:04:38

El problema con cualquiera de los soluciones propuestas es que TDBGrid siempre inentará recolocar la barra lo cual origina el desagradable efecto de ver constantemente como aarece y desaparece la barra.

// Saludos


La franja horaria es GMT +2. Ahora son las 00:27:30.

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