Fórum descobrir objeto selecionado em tempo de execução #407717

16/09/2011

0

tenho um formulário com alguns shapes esses shapes são selecionáveis em tempo de execução, o usuário pode arrastar, redimensionar qualquer um deles tudo em tempo de execução, mas eu preciso saber qual shape o usuário selecionou, como fazer isso em tempo de execução ?
Joao Moreira

Joao Moreira

Responder

Posts

17/09/2011

Marcio Santos

Embora não consiga visualizar o que digitou em seu post, imagino que possa resolver seu problema, se é que entendi, construindo um loop que faça uma varredura nos componentes de um formulário. Há, inclusive, a opção de testar apenas determinadas classes. Veja:

function TForm1.ObtemNomeDoComponenteFocado: String;
var
i : integer;
begin
for i := 0 to ComponentCount - 1 do
begin
try
if ( Components[i] as twincontrol ).Focused then
begin
result := components[i].Name;
exit;
end;
except
on e : exception do
begin
end
end;
end;
end;
Responder

Gostei + 0

20/09/2011

Gustavo Bretas

E ae João Arthur, tudo certo?

Cara, postei o seguinte no fórum da Active Delphi, não te deu certo?

É, o Shape não é TWinControl daí não seta a variável ActiveControl!

Mas você pode criar uma variável no projeto do tipo Shape, e no evento MouseEnter vc seta ela!

Por exemplo:

var 
  ActiveShape : TShape; 

procedure TfrmPrincipal.ShapeMouseEnter(Sender: TObject); 
begin 
  if ActiveShape  TShape(Sender) then 
  begin 
  ActiveShape := TShape(Sender); 
  end 
end;
Responder

Gostei + 0

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

Aceitar