Fórum Aumentar tamanho em run-time #167505

02/07/2003

0

Alguém sabe como aumentar o tamanho de um componente em tempo de execução usando o mouse?


Earmarques

Earmarques

Responder

Posts

02/07/2003

Skywalker

Depende Qual componente?


Responder

Gostei + 0

02/07/2003

Marcelo Saviski

Coloque 8 Panels no seu form

altere as propriedades para:
color = clblack; width = 8 ; heigth = 8; visible = false;


coloque os nomes deles como P1, P2 ... P8;
e mude os cursors de cada 1 deles
O P1 para \ O P2 para <-> O P3 para / O P4 para | O P5 para | O P6 para / O P7 7ara <-> O P8 para \


P1 irá ser a alça da esquerda topo
P2 esquerda
P3 esquerda base
P4 Topo
P5 Base
P6 Direita topo
P7 Direita
P8 Direita Base

mude a propriedade tag dos panels comforme seu nome, P1: tag 1, P2: tag 2....

no Form, na parte public (aonde está [i:5d9e86829d]{public eclarations}[/i:5d9e86829d]), digite:
property SelCtrl: TControl;

e pressione [u:5d9e86829d]Ctrl + Shift + C[/u:5d9e86829d]


nessa procedure que criou (SetSelCtrl), coloque esse código
if Assigned(Value) then
begin
  P1.left := Value.left -4;
  P2.left := Value.left -4;
  P3.left := Value.left -4;
  P4.left := Value.left + (Value.width div 2) -4;
  P5.left := Value.left + (Value.width div 2) -4;
  P6.left := Value.left + Value.width  -4;
  P7.left := Value.left + Value.width  -4;
  P8.left := Value.left + Value.width  -4;
  
  P1.top := Value.top -4;
  P4.top := Value.top -4;
  P6.top := Value.top -4;
  P2.top := Value.top + (Value.height div 2) -4;
  P7.top := Value.top + (Value.height div 2) -4;
  P3.top := Value.top + Value.height -4;
  P5.top := Value.top + Value.height -4;
  P8.top := Value.top + Value.height -4;

  P1.visible := true;
  P2.visible := true;
  P3.visible := true;
  P4.visible := true;
  P5.visible := true;
  P6.visible := true;
  P7.visible := true;
  P8.visible := true;
end
else
begin
  P1.visible := false;
  P2.visible := false;
  P3.visible := false;
  P4.visible := false;
  P5.visible := false;
  P6.visible := false;
  P7.visible := false;
  P8.visible := false;
end;


Selecione todo os componentes(que tenham um evento onmousedown) e de um clique duplo no evento onmousedown e coloque esse código:

SelCtrl := TControl(sender);


isso coloca ele como se fossem os ´pontinhos´ pretos

mas eles não fazem nada ainda, então declare essas variaveis a nível de unidade
XX,YY : integer;


selecione todos os Panels P1 ... P8
De um clique duplo no evento on mouse down;
faça:

XX := X;
YY := Y;
SelCtrl := TControl(Sender);


no on mouse move {isso com todos os panels selecionados}
var
  PX, PY: Integer;
begin
  with TPanel(Sender) do
  if csClicked in ControlState then
  begin
    PX := Left + X - XX;
    PY := Top + Y - YY;
    case Tag of 
     1, 2, 3: 
       begin
         P1.Left := PX;
         P2.Left := PX;
         P3.Left := PX;
       end;
     6, 7, 8: 
       begin
         P6.Left := PX;
         P7.Left := PX;
         P8.Left := PX;
       end;
  end;

  case Tag of 
    1, 4, 6
    begin
      P1.Tp := SY;
      P4.Tp := SY;
      P6.Tp := SY;
    end;
    3, 5, 8
    begin
      P3.Tp := SY;
      P5.Tp := SY;
      P8.Tp := SY;
    end;
  end;  
  P4.Left := (P1.Left + P6.left) div 2;
  P5.Left := P4.Left;
  P2.Top := (P1.Top + P3.Top) div 2;
  P6.Top := P2.Top;
  SelCtrl.SetBounds(P1.left + 4, P1.Top + 4, P8.Left - P1.Left, P8.Top - P1.Top);


não testei mas espero que funcione :wink:

[color=blue:5d9e86829d][b:5d9e86829d]Responda nesse tópico para dizer se funcionou ou não.[/b:5d9e86829d][/color:5d9e86829d]


Responder

Gostei + 0

02/07/2003

Marcelo Saviski

Se tiver problemas com ´TControl´ tente trocar pelo ´T´ + o tipo do componente a ser movido

Ex:
se vc quer mover um edit >> TEdit(...
se é um Image >> TImage(...


Responder

Gostei + 0

17/08/2004

Macario

Olá Marcelo, boa tarde.


Cara esse esquema é bem legal, mas não esta redimencionando o componente.

Se voce puder me passar um dica e tambem como mover ele eu agradeço.

eu estou fazendo uns testes aqui mas até agora não obtive exito.


Grato.




P.s: Me desculpem por trazer um topico tão antigo.


Responder

Gostei + 0

17/08/2004

Marcelo Saviski

Editei a mensagem lá em cima, veja se funciona


Responder

Gostei + 0

18/08/2004

Tatuweb

Olá, deem uma olhada nesse outro tópico:
:arrow: http://delphiforum.icft.com.br/forum/viewtopic.php?t=43965


Responder

Gostei + 0

18/08/2004

Macario

Ola TatuWeb, blz...

Ainda não instalei o componente, mas devido a ser free apenas para uso não comercial não ira me servir. Pois estou desenvolvendo um aplicativo
que vai ser distribuido junto a um produto, que vai ser vendido.


Responder

Gostei + 0

18/08/2004

Tatuweb

Desculpe mas quando eu escrevi aquele tópico eu não prestei atenção direito na licença. É que na verdade são duas e a que se refere ao compente citado diz que vc pode usar o componente livremente em seus projetos. O que não se pode é vender o componente. Ou seja, você pode usa-lo em suas aplicações sem problemas.


Responder

Gostei + 0

18/08/2004

Macario

Por enquanto valeu a ajuda Marcelo e TatuWeb....


um abraço.... :D 8)


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar