Загрузка GIF в RichView

krivetko-man

Местный
Регистрация
22 Ноя 2008
Сообщения
53
Реакции
62
Credits
56
procedure TForm2.sButton2Click(Sender: TObject);
var
g:TGIFImage;
p: TPicture;
begin
g:=TGIFImage.Create;
g.LoadFromFile(ExtractFilePath(ParamStr(0))+'jh.gif');
try
//rve.AddPictureEx('www',g,0,rvvaBaseline);
rve.InsertPicture('www',g,rvvaBaseline);
finally
g.Free;
end;
rve.Format;
end;

что делаю не правильно?
- //rve.AddPictureEx('www',g,0,rvvaBaseline); - тик ничего не происходит
- rve.InsertPicture('www',g,rvvaBaseline); - так намертво виснет
 

asm64d

Местный
Регистрация
14 Июн 2008
Сообщения
940
Реакции
9,672
Credits
0
У тебя TRichView v10.0?
Поддержка gif появилась только в нем.

П.С. V.I.R.U.S. - привет ;) ;) ;) Хороший новый ник!!!
 

krivetko-man

Местный
Регистрация
22 Ноя 2008
Сообщения
53
Реакции
62
Credits
56
да привет, тока никому не говори :)

у меня 10.4. Могу выложить.
 

asm64d

Местный
Регистрация
14 Июн 2008
Сообщения
940
Реакции
9,672
Credits
0
Давай, если не боишься лицензии потерять.
Ай, забыл что у них текущая 11, а 10.4 у меня уже было. Ладно, когда каждый день лопатиш горы компонентов то и ошибтся не сложно. сейчас поставлю, посмотрим что у них с гифами.
//============================
Пока ставил нашел в каментах
Для просмотра ссылки Войди или Зарегистрируйся (update)
Положи в Lib

Рабочий пример:
Код:
unit Unit2; 

interface 

uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, GIFImage, RVStyle, RVScroll, RichView, RVFuncs, ExtCtrls, RVEdit, CRVData, CRVFData, RVOfficeCnv, 
  StdCtrls,RVGifAnimate,RVItem, RVGifAnimate2007; 

type 
  TForm2 = class(TForm) 
    btn1: TButton; 
    OpenDialog1: TOpenDialog; 
    RichViewEdit1: TRichViewEdit; 
    RVStyle1: TRVStyle; 
    procedure FormCreate(Sender: TObject); 
    procedure btn1Click(Sender: TObject); 
    private 
    function CopyImageToTheImagesDir(ImageFileName: String; gr: TGraphic): String; 
  public 
    { Public declarations } 
  end; 

var 
  Form2: TForm2; 

implementation 

{$R *.dfm} 

procedure TForm2.FormCreate(Sender: TObject); 
begin 
   RichViewEdit1.AnimationMode := rvaniOnFormat; 
   RichViewEdit1.StartAnimation; 
end; 

function TForm2.CopyImageToTheImagesDir(ImageFileName: String; gr: TGraphic): String; 
var ImagesDir, NewImageFileName, ImageExt: String; 
    RandomValue: Integer; 
begin 
  ImageFileName := AnsiLowerCase(ImageFileName); 
  ImagesDir := AnsiLowerCase(ExtractFilePath(Application.ExeName)+'Images\'); 
  if Pos(ImagesDir,ImageFileName)<>1 then begin 
    NewImageFileName := ImagesDir+ExtractFileName(ImageFileName); 
    if FileExists(NewImageFileName) then begin 
      ImageExt := ExtractFileExt(NewImageFileName); 
      NewImageFileName := Copy(NewImageFileName, 1, Length(NewImageFileName)-Length(ImageExt)); 
      RandomValue := Random(MaxInt); 
      while FileExists(NewImageFileName+IntToStr(RandomValue)+ImageExt) do 
        inc(RandomValue); 
      NewImageFileName := NewImageFileName+IntToStr(RandomValue)+ImageExt; 
    end; 
    if gr=nil then 
      CopyFile(PChar(ImageFileName), PChar(NewImageFileName), False) 
    else 
      gr.SaveToFile(NewImageFileName); 
    Result := NewImageFileName; 
    end 
  else 
    Result := ImageFileName; 
end; 
procedure TForm2.btn1Click(Sender: TObject); 
var pic: TPicture; 
    gr: TGraphic; 
    ImageName: String; 
begin 
  if OpenDialog1.Execute then begin 
    try 
      pic := TPicture.Create; 
      try 
        pic.LoadFromFile(OpenDialog1.FileName); 
        gr := RV_CreateGraphics(TGraphicClass(pic.Graphic.ClassType)); 
        gr.Assign(pic.Graphic); 
        // using relative path 
        ImageName := ExtractRelativePath(ExtractFilePath(Application.ExeName), 
        CopyImageToTheImagesDir(OpenDialog1.FileName, nil)); 
        RichViewEdit1.TopLevelEditor.BeginUndoGroup(rvutInsert); 
        RichViewEdit1.TopLevelEditor.SetUndoGroupMode(True); 
        try 
          if RichViewEdit1.InsertPicture('', gr, rvvaBaseline) then 
          RichViewEdit1.SetCurrentItemExtraStrProperty(rvespImageFileName, ImageName, True); 
        finally 
          RichViewEdit1.TopLevelEditor.SetUndoGroupMode(False); 
        end; 
      finally 
        pic.Free; 
      end; 
    except 
      Application.MessageBox('Image loading error', 'Error', 0); 
    end; 
  end; 
end; 
 initialization 
  RegisterClass(TGifImage); 
  TPicture.RegisterFileFormat('GIF', 'The best format', TGifImage); 
end.
Обожаю читать хелп, и тебе советую!!!!
 
Последнее редактирование модератором:

rsalgado

Местный
Регистрация
14 Окт 2008
Сообщения
5
Реакции
13
Credits
30
Ай, забыл что у них текущая 11, а 10.4 у меня уже было. Ладно, когда каждый день лопатиш горы компонентов то и ошибтся не сложно. сейчас поставлю, посмотрим что у них с гифами.
//============================
Пока ставил нашел в каментах
Для просмотра ссылки Войди или Зарегистрируйся (update)
Положи в Lib

Рабочий пример:
Код:
unit Unit2; 

interface 

uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, GIFImage, RVStyle, RVScroll, RichView, RVFuncs, ExtCtrls, RVEdit, CRVData, CRVFData, RVOfficeCnv, 
  StdCtrls,RVGifAnimate,RVItem, RVGifAnimate2007; 

type 
  TForm2 = class(TForm) 
    btn1: TButton; 
    OpenDialog1: TOpenDialog; 
    RichViewEdit1: TRichViewEdit; 
    RVStyle1: TRVStyle; 
    procedure FormCreate(Sender: TObject); 
    procedure btn1Click(Sender: TObject); 
    private 
    function CopyImageToTheImagesDir(ImageFileName: String; gr: TGraphic): String; 
  public 
    { Public declarations } 
  end; 

var 
  Form2: TForm2; 

implementation 

{$R *.dfm} 

procedure TForm2.FormCreate(Sender: TObject); 
begin 
   RichViewEdit1.AnimationMode := rvaniOnFormat; 
   RichViewEdit1.StartAnimation; 
end; 

function TForm2.CopyImageToTheImagesDir(ImageFileName: String; gr: TGraphic): String; 
var ImagesDir, NewImageFileName, ImageExt: String; 
    RandomValue: Integer; 
begin 
  ImageFileName := AnsiLowerCase(ImageFileName); 
  ImagesDir := AnsiLowerCase(ExtractFilePath(Application.ExeName)+'Images\'); 
  if Pos(ImagesDir,ImageFileName)<>1 then begin 
    NewImageFileName := ImagesDir+ExtractFileName(ImageFileName); 
    if FileExists(NewImageFileName) then begin 
      ImageExt := ExtractFileExt(NewImageFileName); 
      NewImageFileName := Copy(NewImageFileName, 1, Length(NewImageFileName)-Length(ImageExt)); 
      RandomValue := Random(MaxInt); 
      while FileExists(NewImageFileName+IntToStr(RandomValue)+ImageExt) do 
        inc(RandomValue); 
      NewImageFileName := NewImageFileName+IntToStr(RandomValue)+ImageExt; 
    end; 
    if gr=nil then 
      CopyFile(PChar(ImageFileName), PChar(NewImageFileName), False) 
    else 
      gr.SaveToFile(NewImageFileName); 
    Result := NewImageFileName; 
    end 
  else 
    Result := ImageFileName; 
end; 
procedure TForm2.btn1Click(Sender: TObject); 
var pic: TPicture; 
    gr: TGraphic; 
    ImageName: String; 
begin 
  if OpenDialog1.Execute then begin 
    try 
      pic := TPicture.Create; 
      try 
        pic.LoadFromFile(OpenDialog1.FileName); 
        gr := RV_CreateGraphics(TGraphicClass(pic.Graphic.ClassType)); 
        gr.Assign(pic.Graphic); 
        // using relative path 
        ImageName := ExtractRelativePath(ExtractFilePath(Application.ExeName), 
        CopyImageToTheImagesDir(OpenDialog1.FileName, nil)); 
        RichViewEdit1.TopLevelEditor.BeginUndoGroup(rvutInsert); 
        RichViewEdit1.TopLevelEditor.SetUndoGroupMode(True); 
        try 
          if RichViewEdit1.InsertPicture('', gr, rvvaBaseline) then 
          RichViewEdit1.SetCurrentItemExtraStrProperty(rvespImageFileName, ImageName, True); 
        finally 
          RichViewEdit1.TopLevelEditor.SetUndoGroupMode(False); 
        end; 
      finally 
        pic.Free; 
      end; 
    except 
      Application.MessageBox('Image loading error', 'Error', 0); 
    end; 
  end; 
end; 
 initialization 
  RegisterClass(TGifImage); 
  TPicture.RegisterFileFormat('GIF', 'The best format', TGifImage); 
end.
Обожаю читать хелп, и тебе советую!!!!

Юридические, заявив, что информация, спасибо.:):):)
 

nacxa

Местный
Регистрация
26 Окт 2008
Сообщения
13
Реакции
3
Credits
26
оффтоп:
для подобного есть спец.подраздел "Кодерский флейм"
отделяйте мух от котлет! plz
 

asm64d

Местный
Регистрация
14 Июн 2008
Сообщения
940
Реакции
9,672
Credits
0
оффтоп:
для подобного есть спец.подраздел "Кодерский флейм"
Кодерский флейм
Обсуждение, споры, и все темы не относящиеся к другим подразделам Коддинга.
Прикладное программирование
Решение проблем связанных с написанием программного обеспечения

У krivetko-man была проблема. Так что вроде по месту.
 

nacxa

Местный
Регистрация
26 Окт 2008
Сообщения
13
Реакции
3
Credits
26
извини уважаемый, но для меня общий раздел Прикладное программирование ассоциируется именно с такими темами как:
FAQ: How using ActiveX in Delphi part 1
Проблемы с установкой компонентов Delphi
омпилляция и установка DPK без Delphi в нее
и т.д.

а вот Кодерский флейм:
Скрипт определения ip-адреса
Тень формы на Delphi
Работа с сокетами чере WinAPI
и в частности имеено эта тема подпадает имеено под это раздел, Кодерский флейм