![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| кварк |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 2.8.2002 Репутация: нет Всего: нет |
*--- Главная форма:
TForm1 = class(TForm) b1: TButton; ag: TStringGrid; procedure b1Click(Sender: TObject); end; *--- Нажатие на кнопку: procedure TForm1.b1Click(Sender: TObject); begin b1.Enabled := false; with WorkThread.Create(true) do try sag := ag; Resume; WaitFor finally Suspend; Free; b1.Enabled := true end; end; *--- Поток: WorkThread = class(TThread) private LogStr : string; protected procedure Execute; override; procedure AddLogStr; public sag : TStringGrid; end; procedure WorkThread.Execute; var i : integer; begin for i := 1 to 10 do begin LogStr := IntToStr(i);; Synchronize(AddLogStr); Sleep(10); end; end; procedure WorkThread.AddLogStr; begin sag.Cells[0, sag.RowCount-1] := LogStr sag.RowCount := sag.RowCount + 1; end; *--- Собственно, вопрос: Что здесь не так? Это не работает. Причем довольно странно: числа в Grid появляются, а потом вылетает exception "отказано в доступе". Помогите, пожалуйста, разобраться. |
|||
|
||||
| кварк |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 2.8.2002 Репутация: нет Всего: нет |
Ну про отказ в доступе я и затупил!!! Дело в следующем: вызывается Suspend уже отработавшего потока.
Осталась фигня: форма во время выполнения потока подвисает. Буду думать, как от этого избавиться. О! Похоже придумал! |
|||
|
||||
| кварк |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 2.8.2002 Репутация: нет Всего: нет |
Ну все! теперь пример работает как зверь! Даже при перетаскивании/изменении размеров формы числа добавляются! (А, собственно, почему бы и нет).
В общем, извините - какой-то разговор сам с собой получился. Зато задача решена. |
|||
|
||||
| Алекс С. |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 30.8.2002 Репутация: нет Всего: нет |
А как сделал перерисовку окна, если не секрет?
|
|||
|
||||
| кварк |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 2.8.2002 Репутация: нет Всего: нет |
Не секрет. Там просто ничего делать не надо
Могу этот свой демо-проект кинуть на мыло. Только там узкое место - закрытие формы в процессе работы потока. Но что-нибудь придумаю. |
|||
|
||||
| Алекс С. |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 30.8.2002 Репутация: нет Всего: нет |
Будь так добр! |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |