![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#51 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
![]()
Вот еще что-то сотворил, но могу найти ошибку - код не работает.
type TMyClass = class function t(lpThreadParameter : Pointer; Control : TControl): Integer; stdcall; // здесь выдает компилятор ошибку - "[Pascal Error] Unit1.pas(29): E2065 Unsatisfied forward or external declaration: 'TMyClass.t'" что делать? как исправить? end; var Form1: TForm1; IsMin: boolean; var1 : TMyClass; implementation {$R *.dfm} function t(lpThreadParameter : Pointer; Control : TControl): Integer; stdcall; var rd : Integer; begin if IsMin then rd := 2 else rd := -2; while (Control.Width + rd > 50) and }(Control.Height + rd > 2) and (Control.Width + rd < 600) and (Control.Height + rd < 600) do begin Control.Height := Control.Height + rd; Control.Width := ElPanel1.Width + rd; Sleep(10); end; IsMin := not IsMin; end; procedure TForm1.Button1Click(Sender: TObject); var ti : Cardinal; i : Integer; begin i := var1.t(lpThreadParameter, Panel1); CreateThread(nil, 0, @i, nil, CREATE_NEW, ti); end; Помогите исправить код, пожалуйста! Спасибо всем. |
![]() |
![]() |
![]() |
#52 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
![]()
Почему любят простые вещи усложнять.
Вот так хоть какой обьект свернёт/развернёт(надо знак только поменять): Код:
Последний раз редактировалось Alter; 16.04.2008 в 18:40. |
![]() |
![]() |
![]() |
#53 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]() Код:
Пример выше предназначен для того, чтобы закрыть вопрос о внедрении потока в класс. Лично я не думаю, что потоки и даже волокна в данном случае - оптимальный вариант. Всё это вполне можно решить простым таймером. Код:
Последний раз редактировалось B_N; 16.04.2008 в 19:32. |
![]() |
![]() |
![]() |
#54 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
![]()
Спасибо всем.
Один последний вопрос: есмли прервать во время выполнения эту функцию, то компилятор выдает ошибку. Как можно перехватить прерывание и правильно записать код , чтобы правильно прервать выполнение функции (что добавить): var Form1 : TForm1; IsMin : Boolean; function t(lpThreadParameter : Pointer): Integer; stdcall; implementation function t(lpThreadParameter : Pointer): Integer; stdcall; var rd: integer; begin if IsMin then rd := 2 else rd := -2; with Form1 do while (Panel1.Width + rd > 50) and (Panel1.Height + rd > 50) and (Panel1.Width + rd < 570) and (Panel1.Height + rd < 306) do begin Panel1.Height := Panel1.Height + rd; Panel1.Width := Panel1.Width + rd; Sleep(10); end; IsMin := not IsMin; Result := 0; end; Спасибо! |
![]() |
![]() |
![]() |
#55 | |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]() Цитата:
Какую ошибку? Компялитор не имеет отношения к ошибкам времени выполнения. Что Вы понимаете под "перехватом прерывания"? Обычно под этим понимается абсолютно другое действие. |
|
![]() |
![]() |
![]() |
#56 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
![]()
В смысле если до полного сворачивания нажать обратно?
Поигрались и хватит, советую отложить потоки в сторону и использовать таймер, как уже сказали использование потоков тут не оправдано. Код усложняется, кол-во вопросов (от вас) и ошибок (программы) увеличивается. Интервал таймера 10 соответствует функции Sleep(10). С таймером передача любых параметров в функцию не вызовет никаких проблем. Код:
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
![]() |
![]() |
![]() |
#57 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
![]()
Я имел в виду если при сворачивании или разворачивании формы просто закрыть форму (до момента окончания действия), то компилятор выдает ошибку неправильного чтения какого-то адреса. извините, но мне хотелось бы для себя понять и эту причину перед тем как поставить точку в данном исследовании решения поставленной задачи. спасибо всем за ответы и помощь.
|
![]() |
![]() |
![]() |
#58 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#59 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
![]()
Спасибо, все вопросы решены. огромное спасибо всем за помощь, поддержку и терпение.
|
![]() |
![]() |
![]() |
#60 |
Регистрация: 28.05.2010
Сообщений: 9
|
![]()
Я вместо Panel1 использовал GroupBox1.
Но у меня всё работает. Изначально параметр Visible поставь в False. Для пущего лоска я ещё свойство Aling поставил в alLeft. GroupBox1 растянулся вдоль левого борта. Код:
Код:
А если тебе надо чтобы с правого борта вылазила, то замени AW_HOR_POSITIVE на AW_HOR_NEGATIVE - Справа налево. В комбинации с AW_CENTER или AW_HIDE не использовать. Вот ещё несколько направлений: AW_VER_POSITIVE - Сверху вниз.В комбинации с AW_CENTER или AW_BLEND не использовать. AW_VER_NEGATIVE - Снизу вверх. Вот посмотри вложение там всё работает. А благодаря Caption у GroupBox'ов ты всегда будешь видеть назначение у панэльки!!! Фу вроде всё! ![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Дано четырехзначное число, заданное в символьном виде, например, '1954'. Напечатать его текстом, например | gred | Помощь студентам | 13 | 31.03.2008 22:24 |
Внедрить контрол в FlexGrid | beryllium | Общие вопросы .NET | 0 | 21.02.2008 01:09 |
Плавно выпадающее меню для Mozilla Firefox | мЕхаил =) | JavaScript, Ajax | 6 | 22.12.2007 23:46 |
Как создать программу-панель (как панель Msoffice), чтобы была поверх всех окон | Romanbl4 | Общие вопросы Delphi | 6 | 27.06.2007 17:23 |
Как плавно поменять цвет формы | гера | Помощь студентам | 1 | 20.04.2007 15:35 |