![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Еще вопрос, у меня долго прорисовывается форма [D7, XP]
smartleds © (2008-12-16 21:23:00)пока это процесс идет нужно сообщить пользователю, чтобы он не нерничал типа" обожди пару минут все будет ОК" .
При помощи какой компоненты это лучше сделать?
Германн (2008-12-17 01:38:00) [1]
> {RASkov} © (17.12.08 01:31) [9]
Угу.
Мне бы их "якобы" проблемы.
{RASkov} (2008-12-17 01:31:00) [2]> [8] Германн © (17.12.08 01:21)
> Чем только ...
...не страдают? :)
Германн (2008-12-17 01:21:00) [3]Чем только ...
{RASkov} (2008-12-17 01:06:00) [4]
> sniknik © (16.12.08 22:51) [6]
> небольшая это на сколько?
ну быстрее чуть-чуть по сравнению с кодом из [0] :) может даже и не чуть-чуть) ....может даже раза в 2
Ну да, а с этим
ScrollBox1.DisableAlign;
....
ScrollBox1.EnableAlign;
Еще быстрее примерно на столько же....
Я это все "на глаз" сравнивал :)
sniknik (2008-12-16 22:51:00) [5]> массив трэк баров до 500 штук
не так уж и много... для компа, вот для человека труднее...
> Вот примерно так + небольшая оптимизация, дающая небольшой прирост в скорости создания:
небольшая это на сколько?
реальное ускорение это не дать паренту перестраиваться/перерисовываться на каждом добавлении объекта. т.е. в этом случае до цикла ставим
ScrollBox1.DisableAlign;
for i:= Low(ArrOfTrackBar) to High(ArrOfTrackBar) do begin
...
end;
после
ScrollBox1.EnableAlign;
и перестраиваем сами, т.е. один раз на все.
ScrollBox1.Realign;
должно ускориться.
smartleds (2008-12-16 22:50:00) [6]Ясно спасибо БОЛЬШОЕ , с окошком предупреждением, я так понял идея не очень хорошая.
Это управление светом по DMX512 протоколу, там 512 каналов и нужно у каждого канала независимо от других менять интенсивность света.
При помощи TrackBar-ов я это и делаю.
{RASkov} (2008-12-16 22:08:00) [7]> [2] smartleds (16.12.08 21:34)
Ну это не прорисовка, а создание....
Вот примерно так + небольшая оптимизация, дающая небольшой прирост в скорости создания:
with TForm.Create(nil) do try
Position:=poScreenCenter;
FormStyle:=fsStayOnTop;
Width:=300;
Height:=100;
Show;
for i:= Low(ArrOfTrackBar) to High(ArrOfTrackBar) do begin
ArrOfTrackBar[i]:=TTrackBar.Create(self);
ArrOfTrackBar[i].Orientation:=trVertical;
ArrOfTrackBar[i].min:=0;
ArrOfTrackBar[i].max:=255;
ArrOfTrackBar[i].Position:=128;
ArrOfTrackBar[i].SetBounds(45*i, 10, 40, 150);
ArrOfTrackBar[i].Tag := i;
ArrOfTrackBar[i].OnChange := form1.TrackBarChange;
ArrOfTrackBar[i].Parent:=ScrollBox1; //сначало настраиваем свойства, и только потом отрисовываем, назначив парента...
Caption:=Format('Создано трэкбаров %d из %d', [i, High(ArrOfTrackBar)]); //тут тоже можно High заменить на константу для скорости
//Application.ProcessMessages; // по желанию.... т.н. по нужде)
end;
finally
free;
end;
Так же на показываюмую форму можно поместить прогрессбар.... для наглядности....)
Ну и у меня тот же вопрос, что в [3] :)
Правильный$Вася (2008-12-16 22:02:00) [8]
> массив трэк баров до 500 штук
мамма мия!
и шо ты с ними делаешь?!
smartleds (2008-12-16 21:34:00) [9]У меня рисуется массив трэк баров до 500 штук и пока он рисуется хотелось бы вывести какое нибудь окошко с предупреждением.
ArrOfTrackBar[i]:=TTrackBar.Create(self);
ArrOfTrackBar[i].Parent:=ScrollBox1;
ArrOfTrackBar[i].Orientation:=trVertical;
ArrOfTrackBar[i].min:=0;
ArrOfTrackBar[i].max:=255;
ArrOfTrackBar[i].Position:=128;
ArrOfTrackBar[i].Width:=40;
ArrOfTrackBar[i].Height:=150;
ArrOfTrackBar[i].Left:=X2;
ArrOfTrackBar[i].Top:=Y2;
ArrOfTrackBar[i].Tag := i;
ArrOfTrackBar[i].OnChange := form1.TrackBarChange;
{RASkov} (2008-12-16 21:26:00) [10]Лучше исправить алгоритм с прорисовкой формы.... иначе получится лажа с тасканием над ней других форм...