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 30-04-2006
angelillo182 angelillo182 is offline
Miembro
 
Registrado: abr 2006
Ubicación: México
Posts: 13
Poder: 0
angelillo182 Va por buen camino
XML-RPC, SOAP o REST

David: ya lo hice y funcionó como esperaba. Nunca se me ocurrió darle formato con HTML, usé CSS y quedó mejor Gracias

Ahora mi nueva duda es acerca de XML-RPC. ¿Cómo puedo mandar un Request? En Flickr me dan la opción de mandar de tres maneras diferentes: XML-RPC, SOAP o REST. Leí acerca del tema y al parecer es más simple hacerlo con REST, aunque no sé acerca de esto y me gustaría que me orientaran sobre cual sería el indicado.
Quisiera saber cuales componentes necesito para enviar un Request (Una solicitud como cliente) y a dónde se van los datos de la respuesta que me mandan (Un XML en éste caso).
Los siguientes links van hacia la documentación de Flickr sobre esos formatos. Ya ustedes me orientarán. Muchas gracias!
Request FormatsResponse Formats
Actualización al 22 de Mayo: Ya hago Request, ya me responden. Ahora quisiera alguna recomendación sobre lo siguiente.
En el programa aparecen las fotos en el WebBrowser ¿Cómo puedo hacer para bloquear y/o calificar las que escoja? Algo como Click derecho - Bloquear
Eso lo he visto hecho en nuevas tecnologías de Web como AJAX, pero no se si usando algún componente de Delphi pueda funcionar mejor. También leí que con JavaScript se puede, tendría que aprenderlo también.
Al bloquear alguna imagen sus datos se guardarán en una base de datos, al igual que al calificarlas. ¿Puedo de alguna manera mandar como parámetros esos datos hacia una variable o componente de Delphi desde el WebBrowser?

Ojalá y capten la idea

Última edición por angelillo182 fecha: 23-05-2006 a las 06:56:37.
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
Cambio de repente

Bueno... sin mucho preámbulo. El profe nos cambió la jugada. Ya no quiere que despleguemos las imágenes en un WebBrowser, las quiere en un ListView.
Hay que abrir las imágenes y poder modificarlas en una interfaz casi clon de Explorer. Abrir, borrar, y que las imágenes se vayan guardando en una base de datos como caché.
Y todo eso con fecha límite de miércoles 31 de mayo.
Sí... 4 dias.
Ya estoy leyendo pero es demasiada información la que leo y poco lo que de verdad me sirve. Por favor ayúdenme.

Dudas mayores:
- ¿De que tipo de dato se hace el campo de una base de datos que guarda imágenes?
- Cómo puedo abrir varias imagenes desde URL's con ImageList y ListView?
osea.. con el XML logro hacer URL de imágenes... como las despliego en el TreeView?
- El manejador de base de datos de Delphi 7 (Database Desktop) me sirve también para guardar las imágenes o tengo que usar uno distinto?
- Las imágenes que me regresa Flickr son siempre JPG. Al parecer ImageList solo abre imágenes .bmp y .ico; ¿cómo puedo arreglar eso?

Estaré muy pendiente del tema, de antemano gracias.
Responder Con Cita
  #3  
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
Bueno, yo puedo quitarte algo de trabajo:


Código Delphi [-]
uses WinInet, JPEG;

function DownloadToStream(Url: string; Stream: TStream): Boolean;
var
  hNet: HINTERNET;
  hUrl: HINTERNET;
  Buffer: array[0..10240] of Char;
  BytesRead: DWORD;
begin
  Result := FALSE;
  hNet := InternetOpen('agent', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  if (hNet <> nil) then
  begin
    hUrl := InternetOpenUrl(hNet, PChar(Url), nil, 0,
      INTERNET_FLAG_RELOAD, 0);
    if (hUrl <> nil) then
    begin
      while (InternetReadFile(hUrl, @Buffer, sizeof(Buffer), BytesRead)) do
      begin
        if (BytesRead = 0) then
        begin
          Result := TRUE;
          break;
        end;
        Stream.WriteBuffer(Buffer,BytesRead);
      end;
      InternetCloseHandle(hUrl);
    end;
    InternetCloseHandle(hNet);
  end;
end;

function DownloadToBmp(Url: string; Bitmap: TBitmap): Boolean;
var
  Stream: TMemoryStream;
  Jpg: TJPEGImage;
begin
  Result:= FALSE;
  Stream:= TMemoryStream.Create;
  try
    try
      if DownloadToStream(Url, Stream) then
      begin
        Jpg:= TJPEGImage.Create;
        try
          Stream.Seek(0,soFromBeginning);
          Jpg.LoadFromStream(Stream);
          Bitmap.Assign(Jpg);
          Result:= TRUE;
        finally
          Jpg.Free;
        end;
      end;
    finally
      Stream.Free;
    end;
  except end;
end;

La funcion DownloadToBmp se encarga de descargar una imagen jpeg de internet y la convierte automaticamente a Bmp. Una vez que tienes el bmp ya sabras tu lo que tienes que hacer con el.

Ejemplo de como usar la funcion:
Código Delphi [-]
var
  Bitmap: TBitmap;
begin
  Bitmap:= TBitmap.Create;
  try
    if DownloadToBmp('http://www.clubdelphi.com/images/clubdelphi.jpg', Bitmap) then
    begin
      // Aqui usa el bitmap para lo que quieras, yo por ejemplo lo guardo
      Bitmap.SaveToFile('c:\prueba.bmp');
    end;
  finally
    Bitmap.Free;
  end;
end;
Responder Con Cita
  #4  
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
  #5  
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
  #6  
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
  #7  
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 09:23:56.


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