Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
 Аватар для AlexP11223
141 / 110 / 30
Регистрация: 20.04.2011
Сообщений: 582

Как сделать ProgressBar при запуске программы

07.10.2011, 16:42. Показов 4021. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При первом запуске программы грузится информация из интернета и это занимает некоторое время (все происходит на мейн форме). Как сделать в это время прогресс бар? Только используя другую форму как главную?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.10.2011, 16:42
Ответы с готовыми решениями:

как сделать авторизацию при запуске программы(администратор,пользователь
суть проблемы такова есть программа в ней функция редактирования бд, эта функция запускается кликнув по кнопке button1 например как бы...

Как сделать, чтобы при запуске программы кнопка автоматически нажималась?
есть программа (обсалютно любая на которой одна кнопка стоит и все) как сделать чтобы при запуске этой программы эта кнопка автоматически...

Как сделать, чтобы при запуске программы сначала показывалась Form2
Всем привет! Думаю Вам не затруднит ответить на такой вопрос... Имеются 2 формы (Form1 и Form2) , у обоих разный интерфейс и т.д... ...

10
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
07.10.2011, 16:57
т.е. программа виснет при скачке файлов с интернета? тогда поток решит все проблемы

ну если обязательно то можно и в форму 2 напихать все это

я делал программу скачивает она довольно много из интернета, программой управлять нельзя было - зависшая была, я все вставил в поток, пока там информация скачивалась, я спокойно делал дальше что нужно в программе
1
 Аватар для AlexP11223
141 / 110 / 30
Регистрация: 20.04.2011
Сообщений: 582
07.10.2011, 17:03  [ТС]
а можно пример работы с потоком?)
На основе информации скачанной из интернета (всего 2 хтмл страницы и несколько мелких файлов, но может и сек 10-15 скачиваться) много чего создается в программе и без этого смысла в ее работе немного, хотя тоже вариант. Пока все тупо в FormCreate.

Если со второй формой, то как потом закрывать все это? В OnCloseQuery прописывать закрытие обоих?
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
07.10.2011, 18:12
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP, ComCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    ProgressBar1: TProgressBar;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
  TDownloadThread = class(TThread)
  private
    Value: Integer; // Для прогрессбара показатель
    Count: Integer; // кол-во ссылок
  protected
    procedure Execute; override;
    procedure DownLoad;
  end;
var
  Form1: TForm1;
  Loader: TDownloadThread;
  A: Array of String; // контейнер ссылок для скачивания
implementation
 
{$R *.dfm}
 
procedure TDownloadThread.Execute;
begin
  Synchronize(DownLoad);
 
end;
 
procedure TDownloadThread.DownLoad;
var Down: TIdHTTP;
    i: Integer;
    Str: TStringList;
begin
  Str := TStringList.Create;
  Down := TIdHTTP.Create(nil);
  for i := 0 to Count-1 do
    begin
      Str.Text := Down.Get(A[i]);
      Value := i;
      Str.SaveToFile(IntToStr(i)+'.txt');
      Form1.ProgressBar1.Position := Loader.Value;
    end;
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Loader := TDownloadThread.Create(True);
  Loader.Count := 5;
  ProgressBar1.Max := Loader.Count-1;
  SetLength(A, Loader.Count);
  // заполняем массив ссылками на которые перйти нужно будет
  A[0] := 'http://www.google.ru/';
  A[1] := 'http://www.google.ru/';
  A[2] := 'http://www.google.ru/';
  A[3] := 'http://www.google.ru/';
  A[4] := 'http://www.google.ru/';
  Loader.FreeOnTerminate := True;
  Loader.Resume;
end;
 
end.
я вот на подобии что-то делал

Добавлено через 1 минуту
программа просто скачивает 5 раз сайт гугля и сохраняет в 5 разных файлах, показывает прогресс, каждого скачанного файла при чем программа ни на секунду не виснет
0
 Аватар для AlexP11223
141 / 110 / 30
Регистрация: 20.04.2011
Сообщений: 582
07.10.2011, 18:25  [ТС]
Что-то не делает ничего программа после нажатия кнопки. И даже дебаггер не хочет идти в процедуру нажатия этой кнопки (если run to cursor в ней, то после нажатия ничего не происходит).
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
07.10.2011, 18:28
а ты когда кинул кнопку на форму, сделал ей событие онклик?
0
 Аватар для AlexP11223
141 / 110 / 30
Регистрация: 20.04.2011
Сообщений: 582
07.10.2011, 18:32  [ТС]
Нет Теперь работает)
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
07.10.2011, 18:34
я не рабочее не выкладываю, вернее выкладываю если сам спрашиваю
0
 Аватар для AlexP11223
141 / 110 / 30
Регистрация: 20.04.2011
Сообщений: 582
07.10.2011, 18:45  [ТС]
Только что-то я не понял в чем смысл потока: все равно виснет программа пока он выполняется (поставил 555 загрузок)
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
07.10.2011, 18:47
что-то у тебя не так значит, у меня работает по этому же принципу программа, скачивает минут 5 информацию, и все работает как нужно, смотри что не так
0
 Аватар для AlexP11223
141 / 110 / 30
Регистрация: 20.04.2011
Сообщений: 582
07.10.2011, 20:16  [ТС]
Кинул кнопку, прогрессбар и ричедит, евент клика для кнопки, поменял a[i] на a[0] и на ya.ru, а то гугл забанил видимо и выдавать ошибку начал. Больше ничего не делал, только переименовал кнопку и прогрессбар. Запускал и из Дельфи, и из .ехе.

Добавлено через 1 час 9 минут
Я тут таки прочитал про потоки. Может так должно быть? У тебя же всё в Synchronize было:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TDownloadThread.Execute;
var Down: TIdHTTP;  i: Integer;
    Str: TStringList;
begin
  Str := TStringList.Create;
  Down := TIdHTTP.Create(nil);
  for i := 0 to Count-1 do
    begin
     Str.Text := Down.Get(A[0]);
     Value := i;
     Str.SaveToFile(IntToStr(i)+'.txt');
     Synchronize(DownLoad);
    end;
 
end;
 
procedure TDownloadThread.DownLoad;
begin
     Form1.pb1.Position := Loader.Value;
end;
так все норм)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.10.2011, 20:16
Помогаю со студенческими работами здесь

Как сделать, чтобы при запуске программы кнопка автоматически нажималась?
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,...

Как сделать что бы сразу открывалась страница при запуске программы в WebBrowser
Как сделать что бы сразу открывалась страница при запуске программы в WebBrowser1 Что бы не нажимать кнопок и т.д, а сразу при запуске...

Как сделать что бы дочерние формы в MDI application delphi сразу не открывались при запуске программы
Здравствуйте, как сделать что бы дочерние формы в MDI application delphi сразу не открывались при запуске программы, а открывались после...

Delphi XE7 Как сделать Форму головной, чтобы она при запуске программы высвечивалась сначало?
У меня есть 2 формы, но мне нужно, когда я запускаю программу, чо бы запускалась не 1, а вторая... Как это сделать?

Как сделать, чтобы при запуске программы включалось видео
Я сделал программу в которой при запуске включается видео, как мне сделать что бы видео включалось(автоматически) на чужом компе, проблема...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru