Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Колонки в ListView, Как спрятать колонку 
:(
    Опции темы
ZBugz
Дата 27.12.2006, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



Всем привет. 
Имею Listview в режиме report и к примеру 4 колонки. А можно ли спрятать одну из колонок ?  smile А то что то я стандартного свойства не нашел  smile 
PM MAIL   Вверх
Snowy
Дата 27.12.2006, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Только последнюю.
PM MAIL   Вверх
ZBugz
Дата 27.12.2006, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



 smile 
А есть ли какой нить нормальный компонент, с стардатными свойствами и с этой функциями ? 
А то пробывал EasyListview, все хорошо, только все процедуры и функции свои, а мне не подходит это.
PM MAIL   Вверх
Mephisto
Дата 27.12.2006, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Код

ListView1.Columns.Delete(1);

PM   Вверх
ZBugz
Дата 27.12.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



Не удалить, а скрыть.
Просто мне потом данные оттуда взять нужно.
PM MAIL   Вверх
Mephisto
Дата 27.12.2006, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Цитата(ZBugz @  27.12.2006,  18:41 Найти цитируемый пост)
Просто мне потом данные оттуда взять нужно.

Понял. 

Я просто данные храню в отдельном классе. А у него есть метод RefreshList.
PM   Вверх
Snowy
Дата 27.12.2006, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Колонка визуальная.
Данные хнанятся в SubItems.
При удалении колонки данные остаются. Но порядок важен.
То есть те данные, которые дальше кол-ва колонок не отображаются.
PM MAIL   Вверх
ZBugz
Дата 28.12.2006, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



Т.е. к примеру у меня 10 столбцов, я гружу сразу все данные, в onShow делаю 
Код

ListView1.Columns.Delete(1);
ListView1.Columns.Delete(2);
ListView1.Columns.Delete(3);
ListView1.Columns.Delete(4);
и т.д.


А потом если я выделяю строчку и мне нужно получить данные с удаленных колонок, то я их получу ? Типа 
Код

Label1.caption:=Item.SubItems.Strings[0];


 smile

Добавлено @ 09:19 
Цитата(Mephisto @ 27.12.2006,  18:20)
Цитата(ZBugz @  27.12.2006,  18:41 Найти цитируемый пост)
Просто мне потом данные оттуда взять нужно.

Понял. 

Я просто данные храню в отдельном классе. А у него есть метод RefreshList.

А можно пример  smile 
PM MAIL   Вверх
Snowy
Дата 28.12.2006, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Я ж и говорю - данные в субитемсах остаются.
Пропадают только колонки с экрана.
А субитемсы - это стринглист. Можешь туда хоть "Мёртвые души" Гоголя запихать.
Просто отображаться будут только первые строчки - по кол-ву колонок, а остальное на экран не попадёт.
PM MAIL   Вверх
Elfebet
Дата 28.12.2006, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 2
Всего: 14



а я предлагаю такой вариант
Код

// create
  curDefault:=LoadCursor(0, IDC_ARROW);
  curResize:=LoadCursor(HInstance, MakeIntResource(32765));
  btnSiteRun.Cursor:=curResize;
  HeadHWND:=ListView_GetHeader(lv2.Handle);
  SetWindowLong(HeadHWND, GWL_USERDATA, SetWindowLong(HeadHWND, GWL_WNDPROC, LPARAM(@NewHeaderProc)));

// destroy
  DestroyCursor(curDefault);
  DestroyCursor(curResize);
  HeadHWND:=ListView_GetHeader(lv2.Handle);
  SetWindowLong(HeadHWND, GWL_WNDPROC, GetWindowLong(HeadHWND, GWL_USERDATA));

// window procedure Header
function NewHeaderProc(wnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):integer; stdcall;
var hti:THDHITTESTINFO;
    pt:TPoint;
begin
 if uMsg=WM_SETCURSOR then begin
   GetCursorPos(pt);
   ScreenToClient(wnd, pt);
   hti.Point:=pt;
   SendMessage(wnd, HDM_HITTEST, 0, cardinal(@hti));
   if (column1 and (hti.Flags=HHT_ONDIVIDER) and (hti.Item=1))
     or(bColumn2 and (hti.Flags=HHT_ONDIVIDER) and (hti.Item=2))
     or(bColumn3 and (hti.Flags=HHT_ONDIVIDER) and (hti.Item=3))
     or(bColumn4 and (hti.Flags=HHT_ONDIVIDER) and (hti.Item=4))
     or(bColumn5 and (hti.Flags=HHT_ONDIVIDER) and (hti.Item=5)) then
     SetCursor(frmMain.curResize)
   else SetCursor(frmMain.curDefault);
   Result:=1;
 end else
   Result:=CallWindowProc(Pointer(GetWindowLong(wnd,GWL_USERDATA)),wnd,uMsg,wParam,lParam);
end;

procedure TfrmMain.chkClick(Sender: TObject);
begin

  if((Sender as TCheckBox).Name='chk1') then
    bColumn1:=chk1.Checked
  else if((Sender as TCheckBox).Name='chk2') then
    bColumn2:=chk2.Checked
  else if((Sender as TCheckBox).Name='chk3') then
    bColumn3:=chk3.Checked
  else if((Sender as TCheckBox).Name='chk4') then
    bColumn4:=chk4.Checked
  else if((Sender as TCheckBox).Name='chk5') then
    bColumn5:=chk5.Checked;

  if (bColumn1) then begin
    lv2.Columns[1].MinWidth:=30;
    lv2.Columns[1].MaxWidth:=0;
    lv2.Columns[1].Width:=70;
  end else begin
    lv2.Columns[1].MinWidth:=0;
    lv2.Columns[1].MaxWidth:=1;
    lv2.Columns[1].Width:=0;
  end;
  if (bColumn2) then begin
    lv2.Columns[2].MinWidth:=30;
    lv2.Columns[2].MaxWidth:=0;
    lv2.Columns[2].Width:=70;
  end else begin
    lv2.Columns[2].MinWidth:=0;
    lv2.Columns[2].MaxWidth:=1;
    lv2.Columns[2].Width:=0;
  end;
  if (bColumn3) then begin
    lv2.Columns[3].MinWidth:=30;
    lv2.Columns[3].MaxWidth:=0;
    lv2.Columns[3].Width:=70;
  end else begin
    lv2.Columns[3].MinWidth:=0;
    lv2.Columns[3].MaxWidth:=1;
    lv2.Columns[3].Width:=0;
  end;
  if (bColumn4) then begin
    lv2.Columns[4].MinWidth:=30;
    lv2.Columns[4].MaxWidth:=0;
    lv2.Columns[4].Width:=70;
  end else begin
    lv2.Columns[4].MinWidth:=0;
    lv2.Columns[4].MaxWidth:=1;
    lv2.Columns[4].Width:=0;
  end;
  if (bColumn5) then begin
    lv2.Columns[5].MinWidth:=30;
    lv2.Columns[5].MaxWidth:=0;
    lv2.Columns[5].Width:=70;
  end else begin
    lv2.Columns[5].MinWidth:=0;
    lv2.Columns[5].MaxWidth:=1;
    lv2.Columns[5].Width:=0;
  end;
end;

и не забудь uses CommCtrl;



--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0537 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.