|
#1
|
|||
|
|||
Кнопка старт/стоп
Собственно хочется сделать следующее:
1. При нажатии на кнопку изменялась на ней надпись и действие (единственный нормальный вариант, который нашел - это изменение caption'а и изменение метода. 2. 3 секунды она должна быть не доступна (делается через поток, но проблема в том, что не знаю как узнать какая кнопка нажата и поэтому код получается большим) Таких кнопок на форме не одна, а несколько. И тут же задам еще вопрос: как включать и выключать процедуру? Нужно к примеру следующее Код:
Procedure Start (start: boolean); Код:
Start(true); |
#2
|
||||
|
||||
Не понял, зачем поток. 3 секунды можно задать таймером. Можно даже WinAPI'шным.
Нажатая кнопка в виде объекта передается в параметре Sender метода onClick при нажатии на кнопку. jmp $ ; Happy End! The Cake Is A Lie. |
#3
|
||||
|
||||
1. Это и есть стандартный способ.
2. Через таймер проще. Опоздал. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#4
|
|||
|
|||
Если в том же потоке кидаешь процедуру Sleep, то форма зависает, что не есть хорошо. Можно тогда пример с таймером и как получить инфу в параметре Sender?
|
#5
|
||||
|
||||
В Sender передается объект, вызвавший событие.
Код:
procedure TForm1.ButtonOnClick(Sender: TObject); begin (Sender as TButton).Caption := '123'; ... end; Таймер есть стандартный компонент Delphi, в котором задается интервал срабатывания и функция срабатывания. Самое простое решение - сделать для каждой кнопки свой таймер. При нажатии на каждую кнопку запускаем ее личный таймер на 3 секунды и ждем. Решение поинтереснее - добавлять кнопки в очередь на срабатывание, а в поле Interval таймера задавать время до ближайшего включения какой-либо кнопки. По событию таймера доставать из очереди один элемент и работать с ним. jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
lcd1232 (29.02.2012)
|
#6
|
|||
|
|||
Интересно. Надо будет посмотреть. Добавлю еще вопрос, дабы не создавать еще 1 тему:
Как написать текст в объекте ComboBox если style:=csDropDownList? Нужно именно то поле, которое уже сразу выбрано при запуске программы. |
#7
|
||||
|
||||
Никакой текст при этом не пишется, TEdit коим является это поле находится в ReadOnly, нужно выбрать ItemIndex из соответствующего списка ранне загруженного в TComboBox.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#8
|
|||
|
|||
К сожалению на последний вопрос я так и не получил ответа, а именно:
Цитата:
|
#9
|
||||
|
||||
Наверное потому что невнимательно читаешь.
Цитата:
Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |