| 
| 
 | Вопрос # 2 460/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!На форме есть компонент Panel. Изначально его параметры Height:=25,Top:=0. На Panel есть кнопка высотой 25. Надо плавно (т.ё. с шагом и паузой) увеличить Panel.Height до определённого размера, при этом кнопка всё время должна оставаться внизу Panel. Код программы внизу. Проблема в том, что кнопка при расширении Panel кнопка исчезает, а появляется только после выполнении процедуры. Как это исправить?
 Приложение:Переключить в обычный режим Hmin=25;dh=10;Hmax=550;Bh=25;// îòêðûâàåì
ïàíåëü      x:=Hmin+dh;      repeat        FormF.PanelG.Height:=x;        FormF.BitBtnG.Top:=x-Bh;        sleep(1);        x:=x+dh;      until x>=Hmax;      sleep(1);      FormF.PanelG.Height:=Hmax-Bh;      FormF.PanelG.Height:=Hmax;
|  |   Вопрос задал: SKoch92 (статус: Посетитель)Вопрос отправлен: 26 февраля 2009, 17:29
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Ученый Здравствуйте, SKoch92! Предложу свое решение....Кидаем на форму Timer и в обработчеке для него пишем  такой код:
 
 procedure TForm1.Timer1Timer(Sender: TObject);
var
shag:integer;
begin
shag:=20;
panel1.Height:= panel1.Height+shag;
button1.Top:= button1.Top+shag;
  if panel1.Height>160 then timer1.Enabled:=false;
   end;Будет пошаговое движение, причем кнопка будет постоянно снизу.... 
 
 
 P.S. Удачи)))
 
|  | Ответ отправил: Ученый (статус: 8-ой класс)Время отправки: 26 февраля 2009, 17:44
 Оценка за ответ: 5
 Комментарий к оценке: Но можно ли это сделать без Timer? |  
 Мини-форум вопросаВсего сообщений: 7; последнее сообщение — 1 марта 2009, 13:35; участников в обсуждении: 4. 
|   | Мережников Андрей (статус: Абитуриент), 26 февраля 2009, 18:38 [#1]:для того, чтобы кнопка была постоянно внизу совсем необязательно высчитывать ее положение. Достаточно для кнопки поставить свойство Anchors: top=false, bottom=true |  
|   | SKoch92 (статус: Посетитель), 28 февраля 2009, 23:55 [#2]:Можно ли заставить нормально работать компоненты формы во время выполнения процедур.(К примеру если во время больших вычислений в Image рисовать полоски(как полоса загрузки), то полоски нарисуются только после всех вычислений) |  
|   | Ученый (статус: 8-ой класс), 1 марта 2009, 09:39 [#3]:SKoch92  зачем вам рисовать полосу загрузки????? есть же готовый компонент ProgressBar... Или вы не ищете легких путей ?   |  
|   | Вадим К (статус: Академик), 1 марта 2009, 10:12 [#4]:to SKoch92 Можно использовать костыль с Application.ProcessMessage;, но  правильно и красиво - использовать потоки (те, что thread)
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | SKoch92 (статус: Посетитель), 1 марта 2009, 12:26 [#5]:Как создать поток, который отвечал бы за обновление формы(т.е. в процедуре изменяется положение компонентов и т.п., и при этом все изменения сразу же отображались в форме)? |  
|   | Вадим К (статус: Академик), 1 марта 2009, 12:34 [#6]:Это не совсем хорошо, с потоков менять положение компонентов, хотя и возможно. Почему не делаете через таймер?
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | SKoch92 (статус: Посетитель), 1 марта 2009, 13:35 [#7]:Сделал через Timer. Спасибо. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |