Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Еще вопрос, у меня долго прорисовывается форма [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]

Лучше исправить алгоритм с прорисовкой формы.... иначе получится лажа с тасканием над ней других форм...


Наверх

Титульная страница Поиск, карта сайта Написать письмо