Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-05-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Bien ahora que tenemos las imagenes en un bmp, solo nos falta ajustar su tamaño y agregarlo al TListView. Para ajustar las imagenes tenemos 3 "sabores" diferentes

Código Delphi [-]
// Estira la imagen hasta ajustarla a los valores de Ancho y Alto
procedure Estirar(Imagen: TGraphic; Ancho, Alto: Integer);
var
  Bitmap: TBitmap;
begin
  Bitmap:= TBitmap.Create;
  try
    Bitmap.Width:= Ancho;
    Bitmap.Height:= Alto;
    Bitmap.Canvas.StretchDraw(Bitmap.Canvas.ClipRect,Imagen);
    Imagen.Assign(Bitmap);
  finally
    Bitmap.Free;
  end;
end;

// Ajusta la imagen, manteniendo la proporcion entre ancho y alto,
// para que uno de los lados se ajuste al valor dado y recorta lo 
// que sobra (Este es mi preferido)
procedure Recortar(Imagen: TGraphic; Ancho, Alto: Integer);
var
  Bitmap: TBitmap;
begin
  Bitmap:= TBitmap.Create;
  try
    if  (Ancho/Imagen.Width) > (Alto/Imagen.Height) then
      Alto:= Trunc((Ancho*Imagen.Height)/Imagen.Width)
    else
      Ancho:= Trunc((Imagen.Width*Alto)/Imagen.Height);
    Bitmap.Width:= Ancho;
    Bitmap.Height:= Alto;
    Bitmap.Canvas.StretchDraw(Bitmap.Canvas.ClipRect,Imagen);
    Imagen.Assign(Bitmap);
  finally
    Bitmap.Free;
  end;
end;

// Ajusta la imagen, manteniendo la proporcion entre ancho y alto,
// para que uno de los lados se ajuste al valor dado y rellena lo que
// falta con el color dado
procedure Rellenar(Imagen: TGraphic; Ancho, Alto: Integer; Color: TColor);
var
  Bitmap: TBitmap;
  R: TRect;
begin
  Bitmap:= TBitmap.Create;
  try
    R:= Rect(0, 0, Ancho, Alto);
    if  (Ancho/Imagen.Width) < (Alto/Imagen.Height) then
      R.Bottom:= Trunc((Ancho*Imagen.Height)/Imagen.Width)
    else
      R.Right:= Trunc((Imagen.Width*Alto)/Imagen.Height);
    Bitmap.Canvas.Brush.Color:= Color;
    Bitmap.Width:= Ancho;
    Bitmap.Height:= Alto;
    Bitmap.Canvas.StretchDraw(R,Imagen);
    Imagen.Assign(Bitmap);
  finally
    Bitmap.Free;
  end;
end;

Ahora que tenemos la imagen con el tamaño adecuado, solo falta añadirlo al TListview. Podemos usar una funcion como esta:
Código Delphi [-]
procedure Agregar(Url: string; Caption: string; ListView: TListView);
var
  Bitmap: TBitmap;
  ImageList: TImageList;
  ListItem: TListItem;
begin
  with ListView do
  begin
    ImageList:= TImageList(LargeImages);
    if ImageList <> nil then
    begin
      Bitmap:= TBitmap.Create;
      try
        if DownloadToBmp(Url, Bitmap) then
        begin
          ListItem:= Items.Add;
          ListItem.Caption := Caption;
          // Aqui usar cualquiera de los metodos anteriores, el que mas te guste
          Recortar(Bitmap, ImageList.Width, ImageList.Height);
          ListItem.ImageIndex:= ImageList.Add(Bitmap,nil);
        end;
      finally
        Bitmap.Free;
      end;
    end;
  end;
end;


Por ultimo te dejo un ejemplito de todo trabajando.
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  ListView: TListView;
  ImageList: TImageList;
begin
  ListView := TListView.Create(Self);
  ImageList:= TImageList.Create(Self);
  ImageList.Height:= 100;
  ImageList.Width:= 100;
  ImageList.Masked:= FALSE;
  with ListView do
  begin
    Parent := Self;
    Align := alClient;
    LargeImages:= ImageList;
    for i:= 0 to 8 do
      Agregar('http://www.clubdelphi.com/images/clubdelphi.jpg', 'Foto ' + IntToStr(i), ListView);
  end;
end;
Responder Con Cita
  #2  
Antiguo 28-05-2006
angelillo182 angelillo182 is offline
Miembro
 
Registrado: abr 2006
Ubicación: México
Posts: 13
Poder: 0
angelillo182 Va por buen camino
Gracias, sigamos...

Gracias Seoane!
Ya estoy trabajando de nuevo desde cero, porque hasta la interfaz cambió. Estoy en proceso de implementar eso, voy a estar actualizando los avances.

Una duda: ¿Cómo puedo editar el texto que aparece cuando pones el cursor sobre un botón?

Algo así es lo que sale pero no recuerdo el nombre... ese cuadrito ke da información de lo que hace el botón. (Eso es para hacer una interfaz más limpia en mi proyecto)
Responder Con Cita
  #3  
Antiguo 02-06-2006
turminator turminator is offline
Miembro
 
Registrado: abr 2006
Ubicación: Barcelona, Spain
Posts: 91
Poder: 21
turminator Va por buen camino
Si te refieres al tipico globo de información, debes modificar la propiedad Hint de tu objeto.
Responder Con Cita
  #4  
Antiguo 14-06-2006
zurech zurech is offline
Miembro
 
Registrado: jul 2005
Posts: 61
Poder: 22
zurech Va por buen camino
seoane tio eres dios me has salvado con ese codigo.
Gracias
__________________
noticiasfrikis, mi web de chorradas
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Proyecto Nuevo - 1.4 MB Patricio Varios 5 16-12-2005 12:20:36
Evaluar un Proyecto Migpal Debates 2 24-11-2005 13:23:05
Incluir dcu en proyecto davezf Varios 3 27-07-2005 17:19:04
Proyecto MDI? danytorres Varios 2 29-10-2003 15:52:25
Imagenes del proyecto lafirma OOP 6 04-06-2003 03:20:52


La franja horaria es GMT +2. Ahora son las 12:07:34.


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