Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2012, 20:16   #1
Чиполлино
Пользователь
 
Регистрация: 23.06.2011
Сообщений: 31
По умолчанию Как использовать компоненты с формы в потоке?

Привет всем.

Голову ломаю весь день, нигде не нашёл информации...
Допустим у меня есть компонент idFTP, как его включить в дополнительный поток?

Код:
Procedure Potok.Execute;
begin
Main.idFTP1.Put(...
end;
Так не работает...
Чиполлино вне форума Ответить с цитированием
Старый 13.01.2012, 20:27   #2
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

визуальные компоненты нельзя юзать в потоках
Pamparam вне форума Ответить с цитированием
Старый 13.01.2012, 20:59   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Можно с использованием метода Synchronize
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.01.2012, 21:05   #4
Чиполлино
Пользователь
 
Регистрация: 23.06.2011
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Можно с использованием метода Synchronize
Приведите пример, пожалуйста.
Чиполлино вне форума Ответить с цитированием
Старый 13.01.2012, 21:24   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
procedure TThread1.MyProcedure;
begin
  TForm1.Label1.Caption:='Тря-ля-ля';
end;

procedure TThread1.Execute;
begin
  ...
  Synchronize(MyProcedure);
  ...
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.01.2012, 22:04   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

а я так делаю=)
Код:
procedure MsgToForm(aStr:string);
procedure MsgToFormSync;

var
  syncS:string;

procedure MsgToForm(aStr:string);
begin
syncS:=aStr;
Synchronize(MsgToFormSync);
end;
procedure MsgToFormSync;
begin
 Form1.Label1.Caption:=syncS;
syncS:='';
end;
Человек_Борща вне форума Ответить с цитированием
Старый 13.01.2012, 22:13   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Только сейчас обратил внимание, что не по теме отвечаем. Пост #2 с толку сбил. Речь то идет о idFTP1, а он к визуальным компонентам никакого отношения не имеет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.01.2012, 06:41   #8
Чиполлино
Пользователь
 
Регистрация: 23.06.2011
Сообщений: 31
По умолчанию

Подскажите как такое сделать с idFTP.
Чиполлино вне форума Ответить с цитированием
Старый 14.01.2012, 09:21   #9
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Создавайте idFTP программно, например так:
Код:
MyFTP:=TidFTP.Create(nil);
with MyFTP do
begin
//установка свойств соединения, работа с сервером
//закрытие соединения
end;
FreeAndNil(MyFTP);
P.S. С Indy не работал, но общая схема должна быть такой.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 14.01.2012, 11:18   #10
Чиполлино
Пользователь
 
Регистрация: 23.06.2011
Сообщений: 31
По умолчанию

Пробовал вот так:

Код:
Procedure Potok.Execute;
var
idFTP1: TIdFTP;
begin
idFTP1:=TIdFTP.Create(nil);
idFTP1.Password:= '---';
idFTP1.Username:= '---';
idFTP1.Host:= '--';
idFTP1.Put(...);
idFTP1.Free;
end;
Безуспешно.
Чиполлино вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как использовать массив с первой формы, на второй? ivan.tiran Общие вопросы Delphi 4 14.12.2011 20:31
Создание формы в потоке Pamparam Общие вопросы Delphi 19 01.12.2011 06:12
Можно ли использовать TBitMap в потоке? TwiX Мультимедиа в Delphi 10 29.09.2010 21:20
Как использовать две формы в одном приложении SeRhy Общие вопросы Delphi 6 23.01.2008 21:42
можно ли использовать визуальные компоненты, если у приложения нет формы? Holly1444 Общие вопросы Delphi 8 19.11.2006 16:21