Criar Botoes em RunTime, e centraliza-los no Form, como?
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
Tem como fazer isso?
Desde já agradeço
[]s
Titanius
Curtidas 0
Respostas
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
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.
Obrigado.
GOSTEI 0
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..
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
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.
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
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
09/02/2006
Colega,
Tem que exugar o código e tratar algumas situações, mas é basicamente isso aqui:
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
09/02/2006
Valeu pessoal, ajudaram bastante...
[]s
[]s
GOSTEI 0