Componente - ScrollBar

Delphi

04/12/2006

Estou criando um componente, e precisso colocar o ScrollBar Horizontal e Vertical no meu componente!

Alguem poderia me dar um exemplo ou como fazer para coloca o scrollbar no meu componente?


Rudá

Rudá

Curtidas 0

Respostas

Rodc

Rodc

04/12/2006

Você precisa criar os dois Scroll em runtime no Contructor do seu componente. Depois de criado configure um para ficar no bottom e outro no right. Não esqueça de no Destructor liberá-los.
Para aprender um pouco mais, dê uma olhada no código do TCustomMemo para ver como ele cria os scrolls.


GOSTEI 0
Rudá

Rudá

04/12/2006

Consegui colocar, mas não sei como controlar ele para por exemplo deixar ele visivel ou não, para poder ele rolar para ele só fica parado!

Alguem pode me dar mais alguma ajuda, orientação?

Para criar usei isso
procedure TRudaNewGrid.CreateParams(var Params: TCreateParams);
const
ScrollBar: array[TScrollStyle] of DWORD = (0,WS_HSCROLL,WS_VSCROLL,WS_HSCROLL or WS_VSCROLL);
WordWraps: array[Boolean] of DWORD = (0,ES_AUTOHSCROLL);
begin
inherited CreateParams(Params);
with Params do
begin
Style:= Style and not WordWraps[FWordWrap] or ScrollBar[FScrollBars];
end;
end;



GOSTEI 0
Rudá

Rudá

04/12/2006

Acho que irei usar um ScrollBox, mas tenho uma dúvida eu precisso tipo colocar algo no ScrollBox que não possa ser movido, no topo do ScrollBox entende?

Alguem poed me ajudar a fazer isso?


GOSTEI 0
Rodc

Rodc

04/12/2006

[quote:797ec3831c=´Rudá´]...precisso tipo colocar algo no ScrollBox que não possa ser movido, no topo do ScrollBox entende?[/quote:797ec3831c]
Todos os componentes que você criar dinamicamente dentro do seu componente não podem ser mexidos pelo usuário. Apenas os componentes que o próprio usuário colocar dentro do seu scrollbox ele poderá mexer.
Segue um exemplo:
private
    Topo: TLabel;

implementation

contructor Create(AOwner: TComponent); override;
begin
    inhirited;

    Topo := TLabel.Create(self);
    Topo.Top = 0;
    Topo.Left = 10;
    Topo.Parent = self;
end;

destructor Destroy()
begin
    Topo.Free();
end;

Não tenho certeza se está certo porque fiz sem o Delphi e faz tempo que não programo em pascal.


GOSTEI 0
Rudá

Rudá

04/12/2006

Ele mecheu sim quando desci a barra de rolagem do ScrollBox!


GOSTEI 0
Rudá

Rudá

04/12/2006

Quero algo que só possa ser movido pelo scrollbar de baixo, é algo como no Grid que o Primeiro Row Fixo não move para cima nem para baixo só para os lados!

Alguem pode me ajudar por favor?


GOSTEI 0
Rudá

Rudá

04/12/2006

Já consegui resolver o problema, agora eu tenho outra dúvida!

Como faço para poder saber se no ScrollBox a Barra Vertical está aparecendo, já que ele só aparece se passar da área, mas se não passar ele não mostra, tem como eu saber se ele está aparecendo ou não?


GOSTEI 0
POSTAR