Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Enviar un TImageList por socket (https://www.clubdelphi.com/foros/showthread.php?t=81532)

Comandant 22-11-2012 18:08:06

Enviar un TImageList por socket
 
Hola a todos les hago una pregunta, he visto que el componente TImageList puede albergar varias imágenes siéndome de utilidad para enviar todo de una sola vez por medio de sockets. Entonces quería saber como hago para grabar el stream en la TImageList destino?. Es esta la mejor forma?

Comandant 22-11-2012 18:51:06

Para ser mas precisos. El código para enviar stream por socket esta en el foro ahora bien como hago para obtener el stream de la ImageList1 y escribirlo o cargarlo en la ImageList2. Gracias

Neftali [Germán.Estévez] 22-11-2012 19:29:42

Un TImageList es un TComponentt.

Se supone que puedes guardar un componente en un Stream y en disco usando un código similar a este:

Código Delphi [-]
var
  ms : TMemoryStream;
begin
  ms := TMemoryStream.Create;
  try
    ms.WriteComponent(ImageList1) ;
    ms.Position := 0;

    ms.SaveToFile('c:\stream');
  finally
    ms.Free;
  end;

De forma similar tienes los métodos análogos para recuperarlo de disco y volver a "volcarlo" a un componente.

Haz alguna prueba a ver qué tal.
La técnica es similar a la que se explica aquí para clonar un form.

nlsgarcia 22-11-2012 22:12:40

Comandant.

Cita:

Empezado por Comandant (Mensaje 450187)
como hago para obtener el stream de la ImageList1 y escribirlo o cargarlo en la ImageList2

Revisa este link:
Cita:

Save (and Load) all the Images from a TImageList to a Single File : http://delphi.about.com/od/delphitip...ecomponent.htm
Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, StdCtrls, Buttons, ToolWin, ComCtrls;

type
  TForm1 = class(TForm)
    ImageList1: TImageList;
    Button1: TButton;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
   ImageList2 : TImageList;
begin
   ImageList2 := TImageList.Create(nil);
   try
      WriteComponentResFile('ImageList.dat', ImageList1);
      ReadComponentResFile('ImageList.dat', ImageList2);
   except
      ImageList2.Free;
      MessageDlg('Error al Procesar el Archivo ImageList.Dat', mtinformation, [mbok], 0);
      exit;
   end;
   Toolbar1.Images := ImageList2;
   Toolbar1.Buttons[0].ImageIndex := 0;
   Toolbar1.Buttons[1].ImageIndex := 1;
   Toolbar1.Buttons[2].ImageIndex := 2;
end;

end.
El código anterior copia todas las imágenes de un TImageList a otro TImageList y asigna estas a un TToolbar.

Espero sea útil :)

Nelson.


La franja horaria es GMT +2. Ahora son las 08:33:36.

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