Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Анимация на форме во время выполнения GetInetFile, Анимации нет, когда качает файл из инета 
:(
    Опции темы
mkmv
Дата 3.6.2005, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 2.6.2005

Репутация: нет
Всего: нет



на форме компонент RxGifAnimator

Для GetInetFile использую код:

Код

function GetInetFile(const fileURL, FileName: String): boolean;
const BufferSize = 1024;
var hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
f: File;
sAppName: string;
begin
   Result:=False;
   sAppName := ExtractFileName(Application.ExeName);
   hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG,
         nil, nil, 0);
   try
      hURL := InternetOpenURL(hSession,
      PChar(fileURL),nil,0,0,0);
      try
         AssignFile(f, FileName);
         Rewrite(f,1);
         repeat
            InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
            BlockWrite(f, Buffer, BufferLen)
         until BufferLen = 0;
         CloseFile(f);
         Result:=True;
      finally
      InternetCloseHandle(hURL)
      end
   finally
   InternetCloseHandle(hSession)
   end
end;


при нажитии на кнопку начинаю RxGifAnimator1.Animate := True;

качает файл...приложение на это время как подвисает..естественно анимации никакой.+ни одну кнопку не нажать.

и еще вопрос - можно ли прекратить выполнение функции() при нажатии кнопки "Отмена"?
Как это все реализовать?
Потоками???

smile

Это сообщение отредактировал(а) mkmv - 3.6.2005, 09:00
PM MAIL   Вверх
mkmv
Дата 5.6.2005, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 2.6.2005

Репутация: нет
Всего: нет



Разобрался сам....как обычно!


Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, wininet, Animate, GIFCtrl;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    RxGIFAnimator1: TRxGIFAnimator;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type
  TMyThread = class(TThread)
  protected
    procedure Execute; override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function GetInetFile(const fileURL, FileName: String): boolean;
const BufferSize = 1024;    
var hSession, hURL: HInternet;    
Buffer: array[1..BufferSize] of Byte;    
BufferLen: DWORD;    
f: File;    
begin
   Result:=False;
   hSession := InternetOpen('Test', INTERNET_OPEN_TYPE_PRECONFIG,
         nil, nil, 0);    
   try    
      hURL := InternetOpenURL(hSession,    
      PChar(fileURL),nil,0,0,0);    
      try
         AssignFile(f, FileName);
         Rewrite(f,1);    
         repeat    
            InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);    
            BlockWrite(f, Buffer, BufferLen)    
         until BufferLen = 0;    
         CloseFile(f);    
         Result:=True;    
      finally    
      InternetCloseHandle(hURL)    
      end    
   finally    
   InternetCloseHandle(hSession)    
   end    
end;

procedure TForm1.Button1Click(Sender: TObject);
var    
  MyThread: TMyThread;
begin
  RxGifAnimator1.Animate := True;
  MyThread := TMyThread.Create(False);
end;

procedure TMyThread.Execute;
begin
  GetInetFile(Form1.Edit1.Text, Form1.Edit2.Text);
end;

end.


Вот так!!! smile

только вот как убить поток после того как функция GetInetFile вернула True и отключить анимацию???

Это сообщение отредактировал(а) mkmv - 5.6.2005, 09:39
PM MAIL   Вверх
Rrader
  Дата 5.6.2005, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 70
Всего: 191



Цитата

только вот как убить поток после того как функция GetInetFile вернула True

Код

procedure TMyThread.Execute;
begin
  If GetInetFile(Form1.Edit1.Text, Form1.Edit2.Text) Then Self.Terminate;
end;

smile
Цитата

и отключить анимацию???

Я не пользовался TRxGIFAnimator. А присваивание свойства Animate в False не помогает?
Код

procedure TMyThread.Execute;
begin
  If GetInetFile(Form1.Edit1.Text, Form1.Edit2.Text) Then
  Begin
    RxGifAnimator1.Animate := False;
    Self.Terminate;
  End;    
end;


Это сообщение отредактировал(а) Rrader - 5.6.2005, 10:24


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
mkmv
Дата 5.6.2005, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 2.6.2005

Репутация: нет
Всего: нет



меня интересовал только Self.Terminate; smile анимация это дело техники ;)

еще вопрос - как убить поток во время выполнения? т.е. он качает файл - нажимаю на кнопку отмена - перестает качать - поток останавливается (не приостанавливается)

Код который ниже не помогает: smile

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, wininet, Animate, GIFCtrl, ExtCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    RxGIFAnimator1: TRxGIFAnimator;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type
  TMyThread = class(TThread)
  protected
    procedure Execute; override;
  end;

var
  Form1: TForm1;
  MyThread: TMyThread;
  vkl:boolean;

implementation

{$R *.dfm}

function GetInetFile(const fileURL, FileName: String): boolean;
const BufferSize = 1024;
var hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
f: File;
begin
   Result:=False;
   hSession := InternetOpen('Test', INTERNET_OPEN_TYPE_PRECONFIG,
         nil, nil, 0);
   try
      hURL := InternetOpenURL(hSession,
      PChar(fileURL),nil,0,0,0);
      try
         AssignFile(f, FileName);
         Rewrite(f,1);
         repeat
            InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
            BlockWrite(f, Buffer, BufferLen)
         until BufferLen = 0;
         CloseFile(f);
         Result:=True;
      finally
      InternetCloseHandle(hURL)
      end
   finally
   InternetCloseHandle(hSession)
   end
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if  vkl = False then
   begin
      Button1.Caption := 'Îòìåíà';
      RxGifAnimator1.Animate := True;
      MyThread := TMyThread.Create(False);
      vkl := True;
      exit;
   end;
  if  vkl = True then
   begin
      Button1.Caption := 'Ñêà÷àòü';
      RxGifAnimator1.Animate := False;
      MyThread.Terminate;
  if MyThread.Terminated = true then
   begin
       Label4.Visible := True;
       DeleteFile(Edit2.Text);
   end;
      vkl := False;
      exit;
   end;
end;

procedure TMyThread.Execute;
begin
  if GetInetFile(Form1.Edit1.Text, Form1.Edit2.Text) = true then
    begin
     Form1.RxGifAnimator1.Animate := False;
     Form1.Label1.Visible := true;
     Self.Terminate;
    end;
end;


Это сообщение отредактировал(а) mkmv - 5.6.2005, 21:18
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0472 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.