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

Ваш аккаунт

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

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

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

ListView, как изменить размер например второй колонки?

6.5K
25 апреля 2005 года
creater
27 / / 07.04.2005
У меня на панел лежит ListView.
При создании ListView колнкам заданы размеры.
Как подгонять размер, скажем второй колонки, если изменились размеры формы на которой лежит панель...?
1
25 апреля 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by creater
У меня на панел лежит ListView.
При создании ListView колнкам заданы размеры.
Как подгонять размер, скажем второй колонки, если изменились размеры формы на которой лежит панель...?


Обрабатывать событие OnResize. И при его обработке менять размер размер колонки. Например так:

 
Код:
void __fastcall TForm1::FormResize(TObject *Sender)
{
ListView1->Column[1]->Width = ListView1->Width/2;        
}

Кроме того у них есть свойтво типа автосайза.
6.5K
25 апреля 2005 года
creater
27 / / 07.04.2005
Цитата:
Originally posted by kot_
Обрабатывать событие OnResize. И при его обработке менять размер размер колонки. Например так:
 
Код:
void __fastcall TForm1::FormResize(TObject *Sender)
{
ListView1->Column[1]->Width = ListView1->Width/2;
}


Я попробовал прописать эту строчку и получил ошибку при запуске программы вида:
List index out of bounds(1)

ЗЫ: ЛистВью у меня содержит 5 колонок.

1
25 апреля 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by creater
Я попробовал прописать эту строчку и получил ошибку при запуске программы вида:
List index out of bounds(1)

ЗЫ: ЛистВью у меня содержит 5 колонок.


Хм... хоть 10, все работает.Или ты пишешь что то типа ListVeiw1->Column[5]...тогда ничего удивительного. Проверь что ты не пытаешься менять размер несуществующей колонки. Проверял на версии 6.0

6.5K
25 апреля 2005 года
creater
27 / / 07.04.2005
Цитата:
Originally posted by kot_
Хм... хоть 10, все работает.Или ты пишешь что то типа ListVeiw1->Column[5]...тогда ничего удивительного. Проверь что ты не пытаешься менять размер несуществующей колонки. Проверял на версии 6.0


Как можно проверить?
Я пробовал код именно:
ListView1->Column[1]->Width = ListView1->Width/2;
т.е. от 0 до 4 я должен был попасть...

1
25 апреля 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by creater
Как можно проверить?
Я пробовал код именно:
ListView1->Column[1]->Width = ListView1->Width/2;
т.е. от 0 до 4 я должен был попасть...


Проверить достаточно просто:

 
Код:
void __fastcall TForm1::FormResize(TObject *Sender)
{
ShowMessage(lv->Columns->Count);
lv->Column[1]->Width = lv->Width/2;        
}

например.
Но для начала стоит проверить режим отображения - может стоит vsIcon или типа него.
6.5K
25 апреля 2005 года
creater
27 / / 07.04.2005
Цитата:
Originally posted by kot_
Проверить достаточно просто:
 
Код:
void __fastcall TForm1::FormResize(TObject *Sender)
{
ShowMessage(lv->Columns->Count);
lv->Column[1]->Width = lv->Width/2;        
}

например.
Но для начала стоит проверить режим отображения - может стоит vsIcon или типа него.



У меня в настройках ListView включена опция CheckBoxes = true
и в первом(нулевом) столбце у меня чекбоксы стоят...
При использовании
ShowMessage(lv->Columns->Count);

при запуске программы сначала в ShowMessage отображается Columns = 0
затем появляется сообщение об ошибке:
List index out of bounds(1)

а затем 4 раза выдается ShowMessage в котором
Columns = 3

10
25 апреля 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by creater
при запуске программы сначала в ShowMessage отображается Columns = 0


Прикол. Есть подозрение, что событие вызывается в процессе загрузки формы, т. е. чтения DFM. Если конечно, ты программно не задаешь число колонок.

488
25 апреля 2005 года
Mоngооsе
465 / / 01.04.2005
Первый WM_SIZE происходит при создании формы. Тогда еще компоненты неинициализированы. Напиши
 
Код:
void __fastcall TForm1::FormResize(TObject *Sender)
{
  if(lv->Columns->Count)
    lv->Column[1]->Width = lv->Width/2;        
}
6.5K
25 апреля 2005 года
creater
27 / / 07.04.2005
Цитата:
Originally posted by Mоngооsе
Первый WM_SIZE происходит при создании формы. Тогда еще компоненты неинициализированы. Напиши
 
Код:
void __fastcall TForm1::FormResize(TObject *Sender)
{
  if(lv->Columns->Count)
    lv->Column[1]->Width = lv->Width/2;        
}



УРЯ!!!
Заработала... :-)))

Спасибо огромное :)

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