Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-06-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por barakuda Ver Mensaje
Corrígeme por favor si me equivoco, para conseguir esto, como TImagen no tiene una propiedad para almacenar texto, ¿debería sobrecargar la clase?.

No la tienen, como bien dices.
Si con un Integer te vale, los TImage y el resto de componentes poseen una propiedad genérica para estas cosas llamada Tag. Que los programadores solemos usar para estas cosas.


La otra opción, como bien dices, es ampliar la clase para añadir esa propiedad.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #2  
Antiguo 25-06-2018
barakuda barakuda is offline
Miembro
 
Registrado: mar 2010
Posts: 79
Poder: 15
barakuda Va por buen camino
Lightbulb

De nuevo gracias por la sugerencia y aclaración, no pensé en la propiedad Tag la cual se podría utilizar como una especie de puntero hacia a una lista.

Muchas gracias por tu ayuda.
Responder Con Cita
  #3  
Antiguo 26-06-2018
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 915
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Estimado barakuda, si me permite le propongo otra opción...

Este método lo he usado cuando requiero mostrar imagenes en algunas aplicaciones...

Consiste en utilizar un TListview y TImageList...

Código Delphi [-]
unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.ImgList,
  Vcl.ExtCtrls, Vcl.Imaging.pngimage;

type
{Tipo de datos que usted puede definir para incorporar mas detalles a cada imagen}
  PInfoImg=^TInfoImg;
  TInfoImg=Record
    Title:string;
    Description:string;
    FileName:string;
    Url:string;
  End;

  TForm2 = class(TForm)
    ImageList: TImageList;
    ListView: TListView;
    Label1: TLabel;
    AddImagen: TButton;
    DeleteImagen: TButton;
    lblTitle: TLabel;
    lblDescription: TLabel;
    lblFilename: TLabel;
    lblUrl: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure ListViewSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
    function CreateBitmap(Filename:string):TBitmap;
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

{Esta función crea un bitmap a partir de un nombre de archivo de imagen
}
function TForm2.CreateBitmap(Filename:string):TBitmap;
var
   picture:TPicture;
begin
     Try
        picture:=TPicture.Create;
        picture.LoadFromFile(Filename);

        Result := TBitmap.Create;
        Result.Assign(Picture.Graphic);

        picture.Free;
     except
        Result:=nil;
     End;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
     Listview.LargeImages:=ImageList;
     Listview.ViewStyle  :=vsIcon;
end;

procedure TForm2.AddImagenClick(Sender: TObject);
var
   FileName:string;
   imgInfo:PInfoImg;
begin
     if not PromptForFileName(Filename,'Png (*.png)|*.png|Bitmap (*.bmp)|*.bmp',
                                       '*.png','Agregar imagen','',false) then
        Exit;
     {Agrego la imagen a el ImageList...}
     ImageList.Add( CreateBitmap(FileName), nil);

     {Creo un puntero para almacenar mas información}
     imgInfo:=New(PInfoImg);
     imgInfo^.Title      :=Format('Imagen %d',[ListView.Items.Count]);
     imgInfo^.Description:=Format('Descripción Imagen %d',[ListView.Items.Count]);
     imgInfo^.FileName   :=Filename;
     imgInfo^.Url        :=Format('https://www.google.com?img=%s',[extractfilename(filename)]);

     with ListView.Items.Add do
     begin
          {Agrego un item y asigno el Title a Caption}
          Caption:=imgInfo^.Title;
          {En Data asigno el puntero con la informacion de la imagen}
          Data:=imgInfo;
          {Asigno el indice de la imagen}
          ImageIndex:=ImageList.Count-1;
     end;
end;

procedure TForm2.ListViewSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
begin
     {Cada vez que pincho un item del Listview recupero los datos desde Item.Data}
     lblTitle.Caption      :=PInfoImg(Item.Data)^.Title;
     lblDescription.Caption:=PInfoImg(Item.Data)^.Description;
     lblFilename.Caption   :=PInfoImg(Item.Data)^.FileName;
     lblUrl.Caption        :=PInfoImg(Item.Data)^.Url;
end;
end.

La imagen adjunta muestra el resultado...


Espero le ayude...
Saludos cordiales
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
Row vs onclick en StringGrid lacovera Varios 3 08-12-2009 17:27:45
TButton onClick bastian OOP 1 04-03-2009 17:18:32
OnClick en Imagen jevo19100 Internet 1 19-10-2006 20:46:12
Evento OnClick vtdeleon OOP 4 08-08-2005 23:40:18
Evento onClick jzk OOP 4 27-10-2004 18:46:02


La franja horaria es GMT +2. Ahora son las 08:17:19.


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