Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.05;
Скачать: CL | DM;

Вниз

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

 
Извращенец   (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;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.008 c
1-13622
c0pYc@t
2002-07-25 09:37
2002.08.05
как поменять иконку программы в run time


4-13861
z1
2002-05-27 17:04
2002.08.05
рабочий стол обновить


1-13624
Толстый
2002-07-25 10:55
2002.08.05
Выход из Windows


14-13768
hedgehog
2002-07-09 01:39
2002.08.05
FireWall написание


1-13605
vich
2002-07-23 03:35
2002.08.05
Как сравнить дату и время с системной?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский