Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.05;
Скачать: [xml.tar.bz2];

Вниз

флаг, показывающий положение кнопки мыши ?   Найти похожие ветки 

 
Извращенец   (2002-07-14 20:04) [0]

Доброго времени суток! вот проблема:
в процедуре-обработчике событий ЩтMouseDown у меня нужен такой цикл:
repeat
writeln("Ответьте на вопрос, плиз");
until кнопка мыши поднята;

есть ли такой флаг, показывающий положение кнопки мыши (нажата/опущена)


 
Anatoly Podgoretsky   (2002-07-14 20:16) [1]

Так у тебя онсоль или гуи


 
Извращенец   (2002-07-14 20:57) [2]

???


 
Извращенец   (2002-07-14 22:40) [3]


> Anatoly Podgoretsky © (14.07.02 20:16)
> Так у тебя онсоль или гуи
^^^^^^ ^^^

не понял, это как?


 
Anatoly Podgoretsky   (2002-07-14 22:48) [4]

OnMouseDown подразумевает GUI приложение, обработчик какого нибудь оконного элемента, но в нем не работает writeln, который выводит только на консоль
Если GUI то делай вывод в мемо, но правда зачем тогда нужно завязываться не нажатие кнопки мышки?


 
Builder   (2002-07-15 01:33) [5]

Совет(IMHO):
Измени задачу - юзверу отвечать на такое по моему будет не приятно


 
Извращенец   (2002-07-15 20:12) [6]

writeln - это я так, для примера, что там что-то есть, паскалевская привычка.
r epeat
x:=x+2;
y:=y+2;
Sprite.Draw(x,y,1,3,true);
until кнопка_мыши_не_отпущена;

не надо все в прямом смысле..


 
Юрий Зотов   (2002-07-15 21:59) [7]

Перефразируя Ваш же код:
...
until возникло_событие_OnMouseUp;

Вы ведь OnMouseDown ловите вполне успешно, верно? А почему тогда проблемы с отловом OnMouseUp? Оно точно такое же.

// =========================

var
Flag: boolean;

procedure ... OnMouseDown(...);
begin
Flag := True;
while Flag do
begin
...
end
end;

procedure ... OnMouseUp(...);
begin
Flag := False // И после завершения текущего витка цикл прервется.
end;


 
Song   (2002-07-15 23:09) [8]

Тем не менее извратиться как заказал автор вопроса всё таки можно через GetAsyncKeyState()


 
Извращенец   (2002-07-23 19:07) [9]

а извратиться надо

> Юрий Зотов

не будет пахать, так как Flag измениться должен в самом цикле, а так как он меняется в другой процедуре, то происходит зацикливание, до той процедуры не доходит и эха её надобности.
Я такое проделывал. Цикл повторяется, пока флаг не меняется, а он меняется в другой процедуре, но для проверки цикл в жизни не прервется.

> Song

проверю


 
TTCustomDelphiMaster   (2002-07-23 21:26) [10]

Извращенец © (23.07.02 19:07)
Там же написано

> procedure ... OnMouseDown(...);
> begin
> Flag := True;
> while Flag do
> begin
> .. .
> end
> end;

Если сделать Print Screen, а затем полученное изображение увеличить с помощью PhotoShop в 500 раз, то вместо жирной точки можно разглядеть Application.ProcessMessages;-)


 
Юрий Зотов   (2002-07-23 23:10) [11]

> Извращенец © (23.07.02 19:07)

> не будет пахать,...

А Вы пробовали?

Тут не нужно рассуждать, проще взять - и проверить. И удивиться тому, что, как ни странно, но работает. А странного ничего нет, если подумать над тем, как работают СОБЫТИЙНЫЕ программы.

Естественно, переменная Flag НЕ должна быть локальной. И, естественно, в цикле должна быть строка Application.ProcessMessages - о чем и напомнил TTCustomDelphiMaster.

Батенька, это, извините, азы. Спорить тут просто не о чем.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.08.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
1-13596
iGUra
2002-07-24 15:46
2002.08.05
Генератор Случайных последовательностей


6-13740
lynx
2002-05-21 14:10
2002.08.05
Сетевое окружение


7-13825
pwlusa
2002-05-20 09:22
2002.08.05
Как запустить приложение?


7-13840
MrTod
2002-05-20 08:04
2002.08.05
Как вывести текст поверх запущенного приложения?


1-13682
IlyaGer
2002-07-23 19:59
2002.08.05
Как сделать Панель инструментов типа Outlook





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский