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

Respuesta
 
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
  #2  
Antiguo 22-02-2017
bitbow bitbow is offline
Miembro
 
Registrado: jul 2006
Posts: 366
Poder: 18
bitbow Va camino a la fama
Existe un componente de Neftali (no estoy seguro), el codigo de ejemplo se encuentra en el ftp del foro, es para mover componentes en runtima, no se si ese te sirva.

Saludos.
__________________
¡Ni como ayudarte Niño!!
bitbow
Responder Con Cita
  #3  
Antiguo 23-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
Cita:
Empezado por bitbow Ver Mensaje
Existe un componente de Neftali (no estoy seguro), el codigo de ejemplo se encuentra en el ftp del foro, es para mover componentes en runtima, no se si ese te sirva.

Saludos.
Pues lo conozo, y lo probe, pero solo sirve para mover uno solo, no me permite la seleccion multiple
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #4  
Antiguo 23-02-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Me pafrece que lo que andas buscando son los Cindy Components, en particular el TcyResizer:

Cita:
TcyResizer: move and resize components at run-time like delphi 2009 does
LineComment Saludos
Responder Con Cita
  #5  
Antiguo 23-02-2017
bitbow bitbow is offline
Miembro
 
Registrado: jul 2006
Posts: 366
Poder: 18
bitbow Va camino a la fama
Tiene razon Roman, ademas que en el Pack de demo vienen dos referentes al componentes.
__________________
¡Ni como ayudarte Niño!!
bitbow
Responder Con Cita
  #6  
Antiguo 24-02-2017
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Cita:
Empezado por roman Ver Mensaje
Me pafrece que lo que andas buscando son los Cindy Components, en particular el TcyResizer:

LineComment Saludos
+1 por "TcyResizer" en alguno de mis proyectos con muy buenos resultados. Sin desmerecer los componentes de Neftalí, por supuesto.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 24-02-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
La verdad es que debí acreditarte No recordaba cuáles eran los componentes, así que fuí a ese alguno de tus proyectos y miré la lista de componentes usados. Por cierto, que ese alguno de tus proyectos es espectacular. Digo, para quien no lo sepa

LineComment Saludos
Responder Con Cita
  #8  
Antiguo 24-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
Cita:
Empezado por roman Ver Mensaje
Me pafrece que lo que andas buscando son los Cindy Components, en particular el TcyResizer:

LineComment Saludos

Instale los Cindy Components, pero la verdad que no lo entiendo bien, en la descarga no vino con ejemplos para guiarme y saber como usar el TcyResizer

Una pregunta: Tambien me permitirá hacer selecciones multiples de TImages ?
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes

Última edición por JoAnCa fecha: 24-02-2017 a las 19:09:11.
Responder Con Cita
  #9  
Antiguo 24-02-2017
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Los ejemplos de los Cindy Components se descargan por separado aquí (mira en la carpeta "Demo"). Verás que hay al menos un par de ellos que usan el componente "cyResizer".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #10  
Antiguo 24-02-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Tal como dice dec, los demos viene aparte. La idea básica es muy sencilla:
  1. Escoges un contenedor donde colocar los controles que desees redimensionar y/o mover. Puede ser todo el formulario o, por ejemplo, un panel.

  2. Colocas un componente cyResizer.

  3. Activas el "modo de edición" del contenedor del paso 1:

    Código Delphi [-]
    cyResizer1.Activate(Panel1);
  4. Los componentes dentro de dicho contenedor son los que podras redimensionar y/o mover.

  5. Sales del "modo de edición" con

    Código Delphi [-]
    cyResizer1.Deactivate();

LineComment Saludos
Responder Con Cita
Respuesta



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 05:19:00.


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