Criar Botoes em RunTime, e centraliza-los no Form, como?
09/02/2006
0
Tem como fazer isso?
Desde já agradeço
[]s
Titanius
Posts
09/02/2006
Cabelo
09/02/2006
Titanius
Obrigado.
09/02/2006
Cabelo
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..
09/02/2006
Michael
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
09/02/2006
Aroldo Zanela
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;
Clique aqui para fazer login e interagir na Comunidade :)