Главная страница
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.02 c
1-20956
qube
2002-09-26 10:48
2002.10.07
Чем принципиально отличается Collection от ObjectList?


4-21334
Dimik
2002-08-21 01:24
2002.10.07
Могу ли я отображать на рабочем столе другую папку?


3-20896
cherepovets
2002-09-15 12:28
2002.10.07
Как сделать


4-21313
keyer
2002-08-20 17:00
2002.10.07
AboutBox


1-20993
Демонов Е.В.
2002-09-26 17:40
2002.10.07
КАК иЗ Цветного bitmap-a сделать дизейболный Bitmap?