Crear componentes en un TScrollBox (runtime)
Se trata de un ejemplo sencillo que puede servir a quien esté comenzando con la creación de componentes en runtime y asignación de eventos. En este caso se trata de un visualizador de imágenes, que crea componentes TImage dentro de un TScrollBox, a modo de miniaturas, para luego visualizar esas imágenes en un control TImage a tamaño mayor.
Se utiliza también una TObjectList para almacenbar los objetos (componentes TImage y TPanel) que se van creando en ejecución para posteriormente poder acceder a ellos. Para crear los componentes se utiliza un código com este:
var im:TImage; i:Integer; pnl:TPanel; begin // Para cada imagen for i := 0 to (imList.Count - 1) do begin // Crear el control imagen im := TImage.Create(nil); // Asignar propiedades im.Parent := ScrollBox1; im.Height := ScrollBox1.Height; im.Width := im.Height; im.Top := 0; im.Left := ((im.Width + 15{panel} + 4) * i); im.Transparent := true; im.Align := alLeft; im.Stretch := True; im.Proportional := True; // Cargar im.Picture.LoadFromFile(imList[i]); // vebto OnClick im.OnClick := ClickImage; // Añadirla a la lista de objetos oList.Add(im); // Separados pnl := TPanel.Create(nil); pnl.Parent := ScrollBox1; pnl.Left := im.Left + 5; pnl.Width := 15; pnl.Height := im.Height; pnl.Align := alLeft; pnl.Color := clBlack; // Aadirlo a la lista de objetos oList.Add(pnl); end; |
Se puede descargar el código completo del ejemplo desde aquí .
Actualizo el contenido en DropBox.
Este ejemplo ha surgido a partir de este hilo en el ClubDelphi.
Otros ejempos útiles sobre el mismo tema, relacionados con este pueden ser «Crear, mover y redimensionar controles en Runtime (IDE)» o «Crear/destruir comp. en Runtime y moverlas con el ratón«.
Un saludo.
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
Qué buena pinta tiene el programa, es un auténtico tutorial práctico para quien busque temas como este de la creación de componentes en runtime.
¿existe alguna funcion del tipo zoom?, muy bueno tu aporte
@Darkblue
Hola Darkblue. En el componente no, ya que está más enfocado a las miniaturas que a la propia imagen, pero seguro que puedes encontrar en Internet código que puedas aplicar a a imagen (componente TImage) para simularlo.
Un saludo.
Hola Neftalí, gracias por tu aporte, como se haría para que las miniaturas estuvieran al lado izquierdo o derecho y las mostrara verticalmente. Gracias.
Hola Mauricio.
En el código que tienes en la parte superior basta con que cambies la alineación de los controles y que calcules la posición de los componentes «img» para que aparezcan en vertical.
Un saludo.