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

Вниз

Проблема с TUpDown   Найти похожие ветки 

 
Babay_S   (2002-09-27 11:29) [0]

Доброго времени суток уважаемые!
Помогогите, я просто горю.
Проблема:
Использую стандартный компонент TUpDown (кнопочки верх вниз). На событие Changing пишу вот такой код.

procedure TForm1.UpDown1Changing(Sender: TObject;
var AllowChange: Boolean);
Var i:Integer;
begin
// вот здеся имитируем кучу всяких вычислений
for i:=0 to 1000 do begin
label1.caption:=inttostr(Random(10000));
application.ProcessMessages;
end;
end;
После отработки программа перестает реагировать на мышку.
Вернее щелчок в любом месте приводит к нажатию одной из кнопок TUpDown в зависимости от того где находится мышка выше или ниже. Причем программу даже закрыть нельзя!
Если убрать application.ProcessMessages то все работает нормально. но мне надо что бы программа не висла пока происходят вычисления!!
Засунуть вычисления в отдельный поток неимеется возможности :=((#
Кто нибудь знает как с этим бороться? все мои попытки оказались тщетными.

Сторонние компоненты не предлогать!!!


 
Smithson ©   (2002-09-27 11:33) [1]

Все очень просто -
OnChanging occurs both when the user clicks the arrow buttons of the up-down control and when an attempt is made to change the value of Position programmatically. To determine which button the user clicked, use the OnChangingEx event or the OnClick event, both of which follow the OnChanging event.

Другими словами, OnChanging происходит ВО-ВРЕМЯ изменения (между нажатием и отпусканием мыши). Надо ловить OnClick


 
Babay_S   (2002-09-27 11:55) [2]

При onClick таже беда. :=((#
Пропадает это только когда при щелканье Position достигает задонного min/max.
Попробуйте мой код что я предложил на пустом приложении вы увидите глюк воочию.
Вусьма занимательно.
Кстати на RxSpinEdit так же.....


 
Smithson ©   (2002-09-27 12:05) [3]

Ты будешь смеятся - твоя ошибка не воспроизводится.
Delphi 5.5, WinXP, PIV-1800.
но некий глюк есть - порой при щелчке на кнопке значение меняется не на один шаг, а на два.


 
TTCustomDelphiMaster ©   (2002-09-27 12:19) [4]

Выполняйте вычисления в onMouseUp
или сделайте так

const
WM_CALC = WM_USER + 1;

type
TForm1 = class(TForm)
...
procedure WMCalc(var Msg: TMessage); message WM_CALC;
...

procedure TForm1.WMCalc(var Msg: TMessage);
Var i:Integer;
begin
for i:=0 to 10000 do begin
label1.caption:=inttostr(Random(10000));
application.ProcessMessages;
end;
end;

procedure TForm1.UpDown1Changing(Sender: TObject;
var AllowChange: Boolean);
begin
PostMessage(Handle, WM_CALC, 0, 0);
end;



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

Текущий архив: 2002.10.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
1-21035
1g0r
2002-09-24 17:51
2002.10.07
Введение новой оконной процедуры (непонятка)


1-21066
Ago
2002-09-27 16:34
2002.10.07
Где найти иконки для дизайна?


14-21275
Andrey
2002-09-10 17:20
2002.10.07
Идея по использованию UDF


1-21079
Игорь Бублик
2002-09-24 22:09
2002.10.07
---|Ветка была без названия|---


3-20924
DDDD
2002-09-17 15:59
2002.10.07
Перекресные запросы в Delphi