Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Компонетн


Автор: Artemon 25.10.2005, 18:51
Доброго времени суток, у меня такая проблема:

Создал компонент на типа ListBox, только текст может отображаться в несколько колонок и в первой колонке могут быть 2 иконки.

Так вот, при добавлении 17000 записей, мне приходится ждать 2 часа, в чем дело понять не могу.

Вопросы:

1) Если кто поймет в чем ошибка подскажите как исправить.
2) Чем можно заменить мой компонент?


Код


// Ф-ия компонента, которая добавляет запись в список
/********************************************************/
  void TEXT_LIST::Add_Item
                          (
                          const AnsiString Text,
                          unsigned int Column  ,
                          int Offset           ,
                          TClick LMouseClick   ,                          
                          void* Ptr                                        
                          )
{


  if(! Ctrl) return;

  if( Column >= array.size() ) return;

  TLabel* tmp = new TLabel(NULL);
  tmp->Parent = Ctrl;
  

  tmp->Hide();

  tmp->Transparent = true;
  tmp->ShowAccelChar = false;    
  tmp->Caption = Text;
  tmp->Left = Offset;
  tmp->VCLComObject = Ptr;

  tmp->OnMouseMove  = LMouseMove;
  tmp->OnMouseLeave = LMouseLeave;
  tmp->OnClick      = LMouseClick;


  if(array[Column].size())
    tmp->Top = array[Column].back()->Top + array[Column].back()->Height + OffsetBetv;
  else
    tmp->Top  = TOffset;

  array[Column].push_back(tmp);

  tmp->Show();
}



P.S.
Мой компонент находится в правом нижнем углу.


спасибо.

Автор: poland 27.10.2005, 11:28
Цитата(Artemon @ 25.10.2005, 18:51)

1) Если кто поймет в чем ошибка подскажите как исправить.
2) Чем можно заменить мой компонент?

1)Не фиг создавать сумасшедшее кол-во TLabel (TComponent->TObject). Builder без конца шарит по списку Components.
2)Заменить можно TDrawGrid

Автор: Artemon 27.10.2005, 13:48
TDrawGrid - в даннум случае не решение

Автор: _hunter 27.10.2005, 14:07
Цитата
TDrawGrid - в даннум случае не решение

почему это?

Автор: Artemon 28.10.2005, 15:03
Потому что мне нужно видеть задний фон(форма или панель, и.т.д), а Гирд его сразу закроет.

Автор: Dubinsky 1.11.2005, 15:39
а ты BeginUpdate() EndUpdate() пару при заполнении используешь ? или он у тебя после каждого дополнения перерисовывает список ?

Автор: Guest 2.11.2005, 10:54
Dubinsky, если бы ты код посмотрел, то увидел бы что все сразуже выводится без BeginUpdate

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)