Inicio > Componentes > Componente TSelectOnRuntime

Componente TSelectOnRuntime

Share Button

(versión 1.5)

Permite seleccionar componentes visuales (en Runtime) que haya en un form de forma visual como se hace con las imágenes en los programas de diseño o con los controles en el IDE de Delphi.
Además se pueden mover y redimensionar los controles seleccionados. Basta con soltar el control en el formulario, asignarle el control que se desea seleccionar/mover/redimensionar y activarlo.

Imagen del componente

Imagen del ejemplo

Download Descargar componente

Share Button
Categories: Componentes Tags: ,
  1. lunes, 2 de marzo de 2009 a las 01:46 | #1
  2. Neftalí
    miércoles, 4 de marzo de 2009 a las 22:27 | #2

    Cierto. al subirlo debió quedar “a medias”.
    Ya está subida la nueva versión correcta.

    Gracias por el aviso.

    ________
    Neftalí

  3. martes, 10 de marzo de 2009 a las 21:04 | #3

    Ey Neftali, estas hecho un tiro con el blog, muy útiles componentes y muy buenos artículos, felicitaciones y muchas gracias :).

  4. Neftalí
    jueves, 12 de marzo de 2009 a las 19:15 | #4

    Gracias Jhonny.
    Espero que ahora las actualizaciones puedan ser más habituales.

    Yo sigo atento al tuyo a ver esas sopresas que nos prometes. ;-DD
    Un saludo.

  5. Tonich
    martes, 2 de marzo de 2010 a las 14:46 | #5

    Not correctly working on RAD Studio 2010

    and pease fix this:

    [DCC Warning] CSelectOnRunTime.pas(304): W1036 Variable ‘parentRight’ might not have been initialized
    [DCC Warning] CSelectOnRunTime.pas(310): W1036 Variable ‘parentBootom’ might not have been initialized
    [DCC Hint] CSelectOnRunTime.pas(259): H2164 Variable ‘frmPoint’ is declared but never used in ‘TSelectOnRunTime.ControlMouseMove’
    [DCC Hint] CSelectOnRunTime.pas(673): H2164 Variable ‘i’ is declared but never used in ‘TSelectOnRunTime.SetActive’
    [DCC Warning] CSelectOnRunTime.pas(748): W1036 Variable ‘repos’ might not have been initialized
    [DCC Warning] CSelectOnRunTime.pas(749): W1036 Variable ‘wc’ might not have been initialized

    I’m fix it that:

    procedure TSelectOnRunTime.ControlMouseMove(Sender: TObject;
    Shift: TShiftState; X, Y: Integer);
    const
    minWidth = 20;
    minHeight = 20;
    var
    newPos: TPoint;
    frmPoint : TPoint;
    _CanMove, _CanMoveOutParent:Boolean;
    newLeft, newTop, newRight, newBottom:Integer;
    parentRight, parentBootom:Integer;
    begin
    parentRight:=0; //first fix
    parentBootom:=0; //Second fix

    (and do it for “repos:=0” and “wc:=nil”)

    and I kill “frmPoint” and “i” variables where I’m see Hints

    but Also not correctly working if i do this SelectOnRunTime1.SelectControl=nil;

  6. Neftalí
    martes, 2 de marzo de 2010 a las 17:24 | #6

    Thanks for your comments.
    have corrected the warnings and upload the new version, with some changes that i have pendents.

    Regards.

  7. Iwan
    miércoles, 31 de marzo de 2010 a las 03:37 | #7

    Your component not work in Delphi 2007.
    when open Demo1.Dpr error Creating form Access Violation.

    do you have new version for delphi 2007 and 2010?

    thanks.

  8. lunes, 24 de mayo de 2010 a las 00:55 | #8

    Muy bueno tu componente, pero desearia portarlo al Lazarus, ya que tengo un proyecto que necesita ser creada por Lazarus.

  9. Neftalí
    viernes, 28 de mayo de 2010 a las 07:11 | #9

    @Cristopher

    Hola Cristopher.
    Puedes probar a realizarlo. Tienes todo el código fuente necesario. Yo en eso no puedo ayudarte, ya que no he trabajado con lazarus hasta ahora.
    Si consigues que funcione avísame por favor.

    Gracias.

  10. Cristopher
    viernes, 30 de julio de 2010 a las 00:02 | #10

    El componente TSelectOnRuntime fue ya convertido a Lazarus tuve una guerra con la unidad Contnrs.pas, pero mi proyecto me necesitaba guardar los cambios al dialogo hechos por el componente y converti tu TSaveComps, aunque una tiene como comentada una funcion que cuando un fichero existe es renombrado con la extension .bak.

    Pronto este codigo estara disponible te lo notificare cuando suba los ficheros.

  11. Neftalí
    viernes, 30 de julio de 2010 a las 09:10 | #11

    Muchas gracias Cristopher por el comentario, y enhorabuena por la traducción.

    Un saludo.

  12. Cristopher
    miércoles, 18 de agosto de 2010 a las 01:27 | #12

    Asi una pequeña duda: en mi proyecto utilizando los componentes ya portados. es posible usar TSaveComps y TSelectOnRuntime en un TFrame ya que deseo darle estilo al diseñador como InstallShield 2008.

  13. Neftalí
    jueves, 19 de agosto de 2010 a las 18:09 | #13

    @Cristopher
    Hola Cristofer. Son componentes no visuales, ambos; No acabo de entender a qué te refieres con usarlos en un TFrame.

  14. Cristopher
    miércoles, 3 de noviembre de 2010 a las 21:27 | #14

    Hola, hace tiempo que no hablamos. Tu componente es muy bueno ya está portado a Lazarus (Incluyendo a TSaveComps). Y puedo usarlos en un formulario MDI hijo y los componentes que se seleccionen del formulario padre.

    Estoy creando un instalador multiplataforma en Lazarus y Java y el que me da más conflicto es el diseñador de formularios interno del IDE no deseo hacerlo al diseño Delphi sino algo así o en MODO MDI

    Ejemplo:
    http://www.ethalone.com/CUI.gif
    http://www.ethalone.com/Comparison/IS_DE.jpg

  15. Neftalí
    jueves, 4 de noviembre de 2010 a las 11:03 | #15

    @Cristopher
    Hola Cristopher.
    Me alegra oir eso. Cuando los tengas disponibles para descarga o cuando tengas un enlace, pásamelo y lo publicaré en mi blog.

    Un saludo.

  16. Raphael
    jueves, 2 de diciembre de 2010 a las 19:43 | #16

    Hi,

    I’m trying to change the color of the marks (markColor) but I’m not able to do this. Can you help me? I’ve took a look in your code, I’ve changed some things but it didn’t work. I don’t know why, it receive the value of the color but the marks of the component doesn’t change the color.
    I’m using the Delphi 2010.

    Thank you so much.

  17. Neftalí
    viernes, 3 de diciembre de 2010 a las 11:32 | #17

    @Raphael
    Hello Raphael.
    I hace test the property MarkColor and it works fine. Now i have uploaded a new version of the component; Test with this version.
    In addition I have tested the component with new versions of Delphi (inCluded XE) and it work correctly.

    Regards.

  18. Raphael
    viernes, 3 de diciembre de 2010 a las 13:06 | #18

    Hi,

    First of all, thank you so much to answer to me so fast. Second of all, I tried the new version but it didn’t work and show me more problems with image. But, Fortunatally I found where the problem was happening.

    TSelectOnRunTime.CreateNodes() – It just changed the colors after I put this code:
    Parent := TWinControl(Self._Owner);

    In this new version you took away the Repaint from there and put the BringToFront; in the PositionNodes(…).

    Working with images, these replaces don’t work fine. Now, I’m trying to this with a list of components.

    Thank you so much.
    Best Regards

  19. Neftalí
    viernes, 3 de diciembre de 2010 a las 13:16 | #19

    @Raphael
    Hello Raphael.

    Can you send me a small sample (project) that has this problems, to test and correct the problems.

    Thanks.
    Regards.

  20. Raphael
    viernes, 3 de diciembre de 2010 a las 13:18 | #20

    Hi,
    First of all, thank you so much to answer to me so fast and I’m able to change de color. Second of all, I tried the new version but it shows me more problems with image. But, fortunatally I think I found where the problem was happening.
    In this new version you took away the Repaint from there and put the BringToFront; in the PositionNodes(…).
    Working with images, these replaces don’t work fine. Now, I’m trying to this with a list of components.
    Thank you so much.
    Best Regards

  21. Raphael
    viernes, 10 de diciembre de 2010 a las 15:16 | #21

    Hi, sorry for the long time to write to you again. Yes I can send it to you but I don’t know how. Can you tell me your email?

    Another thing, I’m studying how to use your class to implement the move and resize to more than one component. Today I’m doing an object for each component, because of this, I’m able to select more than one but when I try to move/resize I can do this just one at a time. Do you have some tip for me?

    Thank you again!
    Regards

  22. Neftalí
    viernes, 10 de diciembre de 2010 a las 19:05 | #22

    @Raphael

    You can contact me on german_ral[@]hotmail[DOT]com

    Thanks.

  23. Raphael
    martes, 14 de diciembre de 2010 a las 12:07 | #23

    Sorry for the long time again, I just have sent the email to you.

    Regards

  24. Raphael
    martes, 14 de diciembre de 2010 a las 12:32 | #24

    I forgot to say to you. Your class is with memory leak. In the example I already found some thing, but It still have.

    See you

  25. Cristopher
    jueves, 23 de diciembre de 2010 a las 17:57 | #25

    No se puede usar en un TPanel?

  26. Neftalí
    viernes, 24 de diciembre de 2010 a las 10:37 | #26

    @Raphael
    Thank you Raphael.

    Regards

  27. Neftalí
    viernes, 24 de diciembre de 2010 a las 10:38 | #27

    @Cristopher
    Hola Cristopher.
    No entiendo tu pregunta. Los paneles también se pueden seleccionar. ¿Tienes algun problema?

    Un saludo.

  28. Cristopher
    jueves, 30 de diciembre de 2010 a las 20:37 | #28

    No. si el tpanel se puede usar como si fuera un formulario

  29. Neftalí
    viernes, 31 de diciembre de 2010 a las 00:53 | #29

    @Cristopher
    Hola Cristopher.
    No entiendo. Lo más aproximado a un formulario que no es un formulario, es un Frame.

    Un saludo.

  30. Cristopher
    lunes, 3 de enero de 2011 a las 22:47 | #30

    Asi, en lugar de usar el formulario como campo de diseño se usa un TPanel.

  31. Neftalí
    miércoles, 5 de enero de 2011 a las 13:21 | #31

    @Cristopher
    No debería haber problema en hacerlo así. En ese caso basta con que los componentes pertenezcan al TPanel en lugar de al formulario. dee sa forma sólo podrán moverse y posicionarse en el Panel.

  32. leandro
    viernes, 28 de enero de 2011 a las 14:39 | #32

    hola, se puede instalar en delphi 2010?
    como lo hago?

  33. Neftalí
    viernes, 28 de enero de 2011 a las 18:40 | #33

    @leandro
    Hola Leandro.
    Sí se puede; Basta con utilizar el DPK que hay en el directorio Package.

    Un saludo.

  34. Lepe
    martes, 15 de enero de 2013 a las 10:56 | #34

    Muchas gracias Neftali por estos componentes, funcionan de diez.

    He visto que mientras arrastras un control, no se actualiza el form de detrás (el padre), donde se puede apreciar mejor, es en la aplicación FormDesigner que has realizado, porque no se actualiza los puntitos del grid que se pintan para que creas que estas en tiempo de diseño.

    La solución es bien simple, añadir un nuevo evento que se lanza mientras se mueve un control:

    [code]
    published

    property OnCanResize:TCanResizeControlEvent read FOnCanResize write FOnCanResize;
    //Lepes: Permite realizar tareas mientras se mueve el control en pantalla
    // por ejemplo, actualizar el form de detrás
    property OnMovingControl: TNotifyEvent read FOnMovingControl write FOnMovingControl;
    [/code]

    y ya en la implementación del método ControlMouseMove (al final del todo):
    [code]
    if Assigned ( FOnMovingControl ) then FOnMovingControl( TControl( Sender ) ) ;
    [/code]

    Saludos y muchas gracias

  35. Neftalí
    martes, 15 de enero de 2013 a las 11:11 | #35

    @Lepe

    Gracias Lepe.
    En cuanto tengo un momento lo actualizo.

    Un saludo.

  36. Braulio
    sábado, 11 de mayo de 2013 a las 02:09 | #36

    Hola con esta componente se pueden hacer multiples selecciones y moverlas a la vez?

    Gracias

  37. Neftalí
    sábado, 11 de mayo de 2013 a las 07:53 | #37

    @Braulio
    Hola Braulio.

    No. Es un componente sencillo, aunque puedes probar a modificar el código fuente.
    Un saludo.

  38. angel
    domingo, 20 de octubre de 2013 a las 15:54 | #38

    y donde se puede descargar la version para lazarus?

    la ando buscando que la lei en los comentarios y no la encuentro.

    Gracias.

  39. Miguel Angel
    lunes, 3 de marzo de 2014 a las 08:43 | #39

    Buenas noches Neftali

    Has tenido la oportunidad de probar el TSelectOnRuntime en Delphi XE5?
    Los nodos que se dibujan alrededor del control para simular su selección, se muestran incompletos, diferentes a como se ven en los demos que tienes.

    Saludos

  40. Neftalí
    lunes, 3 de marzo de 2014 a las 09:25 | #40

    Hola Miguel.
    No he podido compilar el componente en XE5 todavía, así que no he podido comprobar el funcionamiento.
    Tienes el código disponible.
    ¿Sabes más o menos dónde se encuentra el problema?

  41. Victor
    domingo, 15 de noviembre de 2015 a las 17:39 | #41

    Hola Neftali:
    En primer lugar darte las gracias por tu componente, lo estoy usando y la verdad es que ha sido sencillo de instalar de usar y de comprender. Pero me ha salido una duda, que no se si es posible sobre este componente o conoces algún otro sobre el que puedas conocer.

    Estoy utilizando el componente sobre TImage y perfecto para moverlo y cambiar el tamaño, pero también me gustaría saber si podemos rotar la imagen. ¿se te ocurre una solución o ves la posibilidad?

  42. Neftalí
    lunes, 16 de noviembre de 2015 a las 11:08 | #42

    @Victor
    Hola Víctor.
    Gracias por los comentarios.
    La verdad es que no conozco ningún componente gratuíto que haga lo que comentas. No al menos los que están enfocados como este a simular el comportamiento en el IDE.
    Tienes el código fuente del componente y está comentado. También puedes intentar modificarlo, aunque no me parece trivial.

    Un saludo.

  43. Yosley
    viernes, 17 de febrero de 2017 a las 19:41 | #43

    Este componente funciona en Berlin ?

  44. domingo, 19 de febrero de 2017 a las 14:44 | #44

    @Yosley
    No lo he probado, pero debería funcionar tal y como está o con mínimos cambios.

  1. viernes, 3 de diciembre de 2010 a las 11:26 | #1
What is 28 + 3 ?
Please leave these two fields as-is:
IMPORTANTE! Para continuar, debes contestar la pregunta anterior (para evitar SPAM) :-)