Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ListBox

2.1K
28 февраля 2003 года
browser
12 / / 17.11.2002
Вопрос такой


Мне нужно добавить в листбокс 100 000 элементов
Если просто добавлять - прога подвисает.

как добавлять по одному элементу?
451
01 марта 2003 года
Gerret
51 / / 20.05.2000
Цитата:
Originally posted by browser
Вопрос такой


Мне нужно добавить в листбокс 100 000 элементов
Если просто добавлять - прога подвисает.

как добавлять по одному элементу?



По моему у ListBox'a есть ограничение на кол-во элементов, но я не помню скока :-)

А по одному добавлять:

 
Код:
for(int i = 0; i < 10000; i++)
  ListBox1->Items->Add("Your string");



2.1K
01 марта 2003 года
browser
12 / / 17.11.2002
Все разобрался, нет ограничения там никакого нету хоть миллион добавь, а чтобы преложение не томозило нужно добавление вынести в отдельный поток выглядеть будет так :

#include <windows.h>
#include <process.h>

long Kolvo;

unsigned _stdcall ThreadFunc(void * arg)
{
for (int i=0;i<Kolvo;i++)
Form1->ListBox1->Items->Add(IntToStr(i));
_endthreadex( 0 );

return 0;
};


//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Kolvo=StrToInt(Edit1->Text);
Form1->ListBox1->Items->Clear();
HANDLE hThreads[1];
unsigned uThreadIDs[1];
char * InitStr1[2] = {"First thread running!","11111"};
hThreads[0] = (HANDLE)_beginthreadex( NULL, 0, &ThreadFunc, InitStr1, 0,&uThreadIDs[0]);
CloseHandle( hThreads[0]);

}

только в этом случае надо оградить себя от создания второго такого же потока пока не выполнился этот т.е. здесь нельзя будет два раза нажать на кнопку.
Вот и все.
371
01 марта 2003 года
Non_prog
193 / / 20.03.2000
Цитата:
Originally posted by browser
Мне нужно добавить в листбокс 100 000 элементов
Если просто добавлять - прога подвисает.
как добавлять по одному элементу?


Для добавление большого количества элементов в ЛистБокс у него есть какой то set метод не помню, где указываешь макс размер.
А чтоб не подвисало в тело цикла вставь
Application->ProcessMessage кажется так или
Sleep(0);

2.0K
01 марта 2003 года
segev
67 / / 19.01.2003
browser
Цитата:

Вопрос такой

Мне нужно добавить в листбокс 100 000 элементов
Если просто добавлять - прога подвисает.
как добавлять по одному элементу?



MSDN:
Specify this style (LBS_NODATA) then the count of items in the list box will exceed one thousand.


Цитата:

Все разобрался, нет ограничения там никакого нету хоть миллион добавь.


MSDN Again:
Windows 95/98: ... list box cannot contain more then 32767 items...

2.1K
01 марта 2003 года
browser
12 / / 17.11.2002
MSDN Again:
Windows 95/98: ... list box cannot contain more then 32767 items... [/QUOTE]


хех странно я спокойно добавил 100.000 элементов...
371
01 марта 2003 года
Non_prog
193 / / 20.03.2000
Цитата:
Originally posted by browser
хех странно я спокойно добавил 100.000 элементов...

Так наверное у тебя установленна RxLib.
:)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог