GARANTIR DESCONTO

Fórum Mover e redimensionar componente en RunTime #336827

26/01/2007

0

Pesquisando, consegui desenvolver a função abaixo para mover e redimensionar os componentes...

Sendo que num funciona para TEdit, TLabel entre outros, alguem pode me ajudar?!?!?

procedure TForm1.CtrlMouseMove(Sender:TObject; Shift: TShiftState; X, Y: Integer); function CheckDif(Tamanho, Posicao, Limite: Word): Boolean; begin Result := Abs(Tamanho - Posicao) <= Limite; end; begin //{$Region´Muda o cursor do componente para redimensionar´} if not (Sender is TForm) then begin //-- Redimensionar inferior direito if (CheckDif(TWinControl(Sender).Width, X, 3) and CheckDif(TWinControl(Sender).Height, Y,3)) then TWinControl(Sender).Cursor := crSizeNWSE //-- Redimensionar inferior esquerdo else if (CheckDif(0, X, 3) and CheckDif(TWinControl(Sender).Height, Y,3)) then TWinControl(Sender).Cursor := crSizeNESW //-- Redimensionar superior esquerdo else if (CheckDif(0, X, 3) and CheckDif(0, Y,3)) then TWinControl(Sender).Cursor := crSizeNWSE //-- Redimensionar superior direito else if (CheckDif(TWinControl(Sender).Width, X, 3) and CheckDif(0, Y,3)) then TWinControl(Sender).Cursor := crSizeNESW //-- Redimensionar pela base inferior else if CheckDif(TWinControl(Sender).Height, Y, 3) then TWinControl(Sender).Cursor := crSizeNS //-- Redimensionar pela base superior else if CheckDif(0, Y, 3) then TWinControl(Sender).Cursor := crSizeNS //-- Redimensionar pela lateral direita else if CheckDif(TWinControl(Sender).Width, X, 3) then TWinControl(Sender).Cursor := crSizeWE //-- Redimensionar pela lateral esquerda else if CheckDif(0, X, 3) then TWinControl(Sender).Cursor := crSizeWE else TWinControl(Sender).Cursor := crDrag; end; //{$EndRegion} if (ssLeft in Shift) and not (Sender is TForm) then begin //{$Region´Executa o redimensionamento dos componentes´} ReleaseCapture; if (ssLeft in Shift) then begin //-- Redimensionar inferior direito if (CheckDif(TWinControl(Sender).Width, X, 3) and CheckDif(TWinControl(Sender).Height, Y,3)) then TWinControl(Sender).perform(WM_SYSCOMMAND, $f008, 0) //-- Redimensionar inferior esquerdo else if (CheckDif(0, X, 3) and CheckDif(TWinControl(Sender).Height, Y, 3)) then TWinControl(Sender).perform(WM_SYSCOMMAND, $f007, 0) //-- Redimensionar superior esquerdo else if (CheckDif(0, X, 3) and CheckDif(0, Y, 3)) then TWinControl(Sender).perform(WM_SYSCOMMAND, $f004, 0) //-- Redimensionar superior direito else if (CheckDif(TWinControl(Sender).Width, X, 3) and CheckDif(0, Y, 3)) then TWinControl(Sender).perform(WM_SYSCOMMAND, $f005, 0) //-- Redimensionar pela base inferior else if CheckDif(TWinControl(Sender).Height, Y, 3) then TWinControl(Sender).perform(WM_SYSCOMMAND, $f006, 0) //-- Redimensionar pela base superior else if CheckDif(0, Y, 3) then TWinControl(Sender).perform(WM_SYSCOMMAND, $f003, 0) //-- Redimensionar pela lateral direita else if CheckDif(TWinControl(Sender).Width, X, 3) then TWinControl(Sender).perform(WM_SYSCOMMAND, $f002, 0) //-- Redimensionar pela lateral esquerda else if CheckDif(0, X, 3) then TWinControl(Sender).perform(WM_SYSCOMMAND, $f001,0) //-- Muda a posicao else TWinControl(Sender).Perform(WM_SYSCOMMAND, $f012, 0); //-- Atualizar o form TControl(Sender).Parent.Refresh; //Application.ProcessMessages; end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin Edit1.OnMouseMove := CtrlMouseMove; Button1.OnMouseMove := CtrlMouseMove; Label1.OnMouseMove := CtrlMouseMove; StaticText1.OnMouseMove := CtrlMouseMove; MaskEdit1.OnMouseMove := CtrlMouseMove; end;


Antecipadamente agradeço a todos.


Aloizio Castro

Aloizio Castro

Responder

Posts

27/01/2007

Aloizio Castro

up


Responder

Gostei + 0

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

Aceitar