Criar Botoes em RunTime, e centraliza-los no Form, como?

Delphi

09/02/2006

Olá, como faço pra criar botoes em RunTime, e depois de criar colocar eles lado a lado, um do lado do outro, e centralizar todos no meio do Form?

Tem como fazer isso?


Desde já agradeço

[]s


Titanius

Titanius

Curtidas 0

Respostas

Cabelo

Cabelo

09/02/2006

Tem sim.. use as propriedade [size=18:7c0099d910][b:7c0099d910]Left Top Width e Heigth[/b:7c0099d910] [/size:7c0099d910]do botão para posicioná-los no form...


GOSTEI 0
Titanius

Titanius

09/02/2006

Olá cabelo, obrigado pela resposta, porem a tela pode mudar de tamanho e a quantidade de botoes também, então gostaria de saber se alguem jah fez algo parecido..

Obrigado.


GOSTEI 0
Cabelo

Cabelo

09/02/2006

Não é tão complicado...

vc pode criar uma função que utiliza o número de botões a ser criado e determina a área do form de acordo com a qtd de botões a ser criado...

vc passa a essa função a quantidade de botões, aí é só fazer os cálculos..


GOSTEI 0
Michael

Michael

09/02/2006

Olá!

Após criar os botões, some a largura de todos, mais os eventuais espaços entre eles. Depois, use a fórmula (LarguraForm - LarguraTotal) div 2. Agora vc tem a posição inicial (Left) do primeiro botão. Basta então fazer um loop pela quantidade de botões, e setar o [b:1a735b8062]Left [/b:1a735b8062]de cada um para o valor encontrado anteriormente. No final do loop incremente esse valor com a largura do botão.

var
  Botoes: array[1..5] of TButton;
  I, LarguraTotal, LeftInicial: integer;
begin
  LarguraTotal := 0;
  for I := Low(Botoes) to High(Botoes) do
  begin
    Botoes[I] := TButton.Create(Self);
    Inc(LarguraTotal, Botoes[I].Width);
  end;
  
  LeftInicial := (Self.Width - LarguraTotal) div 2;
   
  for I := Low(Botoes) to High(Botoes) do
  begin
    Botoes[I].Left := LeftInicial;
    Inc(LeftInicial, Botoes[I].Width);
  end;
end;


Não testei esse código, mas acredito que funcione. Os botões ficarão ´colados´ um no outro pq não foi definido um espaço entre eles.

[]´s


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

09/02/2006

Colega,

Tem que exugar o código e tratar algumas situações, mas é basicamente isso aqui:

var Botoes: array of TButton;
    i, n, x, Altura, Largura, Espaco, LaguraTotal, Esquerda, Topo: SmallInt;
begin

  SetLength(Botoes,5);

  n           := Low(Botoes);
  x           := High(Botoes);
  Altura      := 25;
  Largura     := 75;
  Espaco      := 5;
  LaguraTotal := (Largura*x)+(Espaco*x)+(Largura);
  Esquerda    := (ClientWidth - LaguraTotal) div 2;
  Topo        := (ClientHeight-Altura) div 2;

  for i := n to x do
  begin

    Botoes[I]         := TButton.Create(Self);
    Botoes[I].Parent  := Self;
    Botoes[I].Left    := Esquerda;
    Botoes[I].Top     := Topo;
    Botoes[I].Width   := Largura;
    Botoes[I].Height  := Altura;
    Botoes[I].Caption := ´btnTESTE´+IntToStr(I);

    Esquerda  := Esquerda + Largura + Espaco;

  end;

end;



GOSTEI 0
Titanius

Titanius

09/02/2006

Valeu pessoal, ajudaram bastante...


[]s


GOSTEI 0
POSTAR