Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-02-2017
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool Como seleccionar multiples controles y moverlos

Hola a todos
Siguiendo con mi mapa de red, que ya esta funcionando bien, quisiera mejorarlo un poco.

Necesito ahora que se puedan seleccionar multiples TImages (nodos), ya sea presionando Ctrl o Shift, o arrastrando con el mouse un recuadro que seleccione a los que contenga en su interior, y poder mover todos los nodos seleccionados

Con este codigo, logor mover cada nodo con su etiqueta asociada, pero solo uno a la vez

Código Delphi [-]
//----- Para Seleccionar y Mover el Nodo -----
procedure TfrmPrincipal.ControlMouseDown( Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer );
begin
  CompCorX:=X;
  CompCorY:=Y;
  CompMoviendo:=True;
  TMovible(Sender).MouseCapture:=True;

  //--- Resaltar Nodo Seleccionado ---
  with shpSelect do
  begin
    Parent:=(Sender as TsImage).Parent;
    Visible:=True;
    Top:=TsImage(Sender).Top-1;
    Left:=TsImage(Sender).Left-1;
  end;
end;

procedure TfrmPrincipal.ControlMouseMove( Sender: TObject; Shift: TShiftState; X, Y: Integer );
begin
  if CompMoviendo then
  begin
    TImage(Sender).Left:=TImage(Sender).Left - (MouseDownSpot.x - x) - 24;
    TImage(Sender).Top:=TImage(Sender).Top - (MouseDownSpot.y - y) - 24;

    //--- Mover la etiqueta asociada ---
    lblDisp:=TLabel(FindComponent(TImage(Sender).Hint));
    lblDisp.Left:=TImage(Sender).Left+25 - Round(lblDisp.Width/2);
    lblDisp.Top:=TImage(Sender).Top + TImage(Sender).Height + 2;

    //--- Resaltar Nodo Seleccionado ---
    with shpSelect do
    begin
      SendToBack;
      Visible:=True;
      Top:=TsImage(Sender).Top-1;
      Left:=TsImage(Sender).Left-1;
    end;
  end;
end;

procedure TfrmPrincipal.ControlMouseUp( Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer );
begin
  if CompMoviendo then
  begin
    CompMoviendo:=False;
    TMovible(Sender).MouseCapture:=False;
  end;

  //----- Para guardar las nuevas coordenadas en la BD -----
  if (Sender is TImage) then imgSelect:=TImage(Sender);
  NombDisp:=Copy(imgSelect.Name, 4, Length(imgSelect.Name));
  with DataMod do
  begin
    if (Sender as TsImage).Parent = sbMapaRed then
      begin
        fdtRedes.Locate('IdRed', NombDisp, []);
        fdtRedResum.Locate('IdRed', NombDisp, []);
        fdtRedes.Edit;
          fdtRedesPosX.Value:=imgSelect.Left;
          fdtRedesPosY.Value:=imgSelect.Top;
        fdtRedes.Post;
      end;
    if (Sender as TsImage).Parent = sbMapaLAN then
      begin
        fdtDisposit.Locate('IdDisp', NombDisp, []);
        fdtDispInf.Locate('IdDisp', NombDisp, []);
        fdtDisposit.Edit;
          fdtDispositPosX.Value:=imgSelect.Left;
          fdtDispositPosY.Value:=imgSelect.Top;
        fdtDisposit.Post;
      end;
  end;
end;

Como modificaria el código para lograr lo que quiero ?
O que tengo que agregar ?
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Agregar múltiples Campo de una tabla a múltiples TEdit y TdbEdit novato_erick Varios 21 21-08-2011 01:18:58
como generar ventas multiples (seleccionar multiples items) userdelphi Varios 4 30-12-2010 02:52:21
Como seleccionar campos de una tabla sin saber cuantos van a seleccionar david duarte SQL 7 05-04-2010 21:15:43
Seleccionar multiples columnas en TDbGrid Leandro Ferrara OOP 1 01-11-2008 23:02:29
Seleccionar multiples objectos para modificacion mdomeyko OOP 3 10-01-2008 22:17:12


La franja horaria es GMT +2. Ahora son las 18:56:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi