Главная страница
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.018 c
3-20887
Андрусь
2002-09-16 12:08
2002.10.07
Хитрый DataSet


3-20878
_dron_
2002-09-16 12:31
2002.10.07
Подскажите, как восстановить строки таблицы, удаленные по DELETE


1-21132
zzet
2002-09-25 21:23
2002.10.07
Как в строковую переменную вставить символ ?


14-21271
BCPP_Builder_Dev
2002-09-09 14:43
2002.10.07
А где скачать EhLib 2.4 который не evaluation???


4-21309
MJH
2002-08-19 06:31
2002.10.07
Static