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

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

Дерево файлов на winapi [D7, WinXP]


Страницы:   1 2

Ort ©   (2008-11-27 10:05:00) 

вопшем пишу на чистом winapi сабж...столкнулся с проблемой...

1 - Как добавить столбцы в listview
2 - Как добавить итемы в listview

Сильно не ругайте я савсем нуб, с winapi буквально неделю знаком


Ort   (2008-11-28 13:11:00) [1]

clickmaker

переделал с массивом...все работает спасибо огромное, что потратил свое время на такого нуба как я...сейчас буду разбиратся с добавлением итемов наверняка вопросы еше возникнут по ходу пьессы %)


clickmaker   (2008-11-28 12:55:00) [2]

> все норм создалось

константа потому что
но не рекомендую строковые константы разбрасывать по коду. Лучше выносить в отдельный массив или в ресурсы. И менять легче и локализовать, если что


Ort   (2008-11-28 12:54:00) [3]


> это текст заголовка или всей колонки

чорт какуюто фигню спррасил))) имел ввиду обязательно ее описывать?


Ort   (2008-11-28 12:49:00) [4]


> pszText - собственно текст. Должен ссылаться на переменную-
> строку в куче (не локальную). Например pszText := PChar(Headers[i]),
>  где Headers - array of string.


это текст заголовка или всей колонки...просто я не описывал ее никак и все норм создалось

ListView1 := CreateWindowEx(
   WS_EX_CLIENTEDGE,
   WC_LISTVIEW,
   nil,
   WS_CHILD or WS_VISIBLE or LVS_REPORT or LVS_SINGLESEL,
   5, 40, 460, 465, wnd, 0, hInstance, nil);
   Font := GetStockObject( ANSI_FIXED_FONT );
   SendMessage(ListView1,WM_SETFONT, Font, 0);

   lvc.mask := (LVCF_WIDTH or LVCF_TEXT or LVCF_SUBITEM);
   lvc.cx := 225;
   lvc.fmt := LVCFMT_LEFT;
   lvc.iSubItem := 0;
   lvc.pszText :=('File Name');

   ListView_InsertColumn(Listview1, 0, lvc);
   lvc.pszText :=('Size');
   ListView_InsertColumn(Listview1, 1, lvc);


Ort   (2008-11-28 12:24:00) [5]

Оки..пасиб еше раз!


clickmaker   (2008-11-28 12:01:00) [6]

mask - здесь перечисляешь через or, что ты хочешь указать для колонки. Обычно используют LVCF_TEXT - текст заголовка, LVCF_FMT - для выравнивания в основном, LVCF_SUBITEM - грубо говоря, индекс колонки.
fmt - если указал LVCF_FMT, то здесь можно выравнять текст
cx - ширина в пикселах, если указал LVCF_WIDTH
pszText - собственно текст. Должен ссылаться на переменную-строку в куче (не локальную). Например pszText := PChar(Headers[i]), где Headers - array of string.
cchTextMax - длина текста
iSubItem - индекс. Обычно соответствует индексу колонки
iImage - индекс в имиджлисте, если таковой прицеплен к заголовку
iOrder - порядок колонки. Может отличаться от индекса, если юзер перетащил колонку

Это был мой первый и последний перевод MSDN. Дальше сам думай


Ort   (2008-11-28 11:43:00) [7]

уряя калонка саздалась)))


> clickmaker

Пасиб огромное!! ты оч крут!

мсдн читал я там мало что понимаю синтаксис мне непонятен...если не сложно можешь сдесь обеснить :[


clickmaker   (2008-11-28 11:32:00) [8]

и еще
со стилем LVS_ICON колонки смысла не имеют. Нужен LVS_REPORT

а что с заполнением не понятно? MSDN или Win32 reference читал?


Ort   (2008-11-28 11:24:00) [9]


> clickmaker

в точку...вот как иих заполнять я не нашел :[


clickmaker   (2008-11-28 11:01:00) [10]

> ListView_InsertColumn(Listview1, 1, lvc);

неплохо бы еще поля lvc заполнить
да и индексы начинаются с 0, а не с 1


Ort   (2008-11-28 10:45:00) [11]


> Ort   (27.11.08 19:46) [13]
> не добавилосб описал в варе переменую...вобшем вот кусок
> кода создаю лист вью и патом вызваю инсерколумн    ListView1
> := CreateWindowEx(    WS_EX_CLIENTEDGE,    WC_LISTVIEW,
>    nil,    WS_CHILD or WS_VISIBLE or LVS_ICON or LVS_SINGLESEL,
>     5, 40, 465, 465, wnd, 0, hInstance, nil);    Font :=
> GetStockObject( ANSI_FIXED_FONT );    SendMessage(ListView1,
> WM_SETFONT, Font, 0);    ListView_InsertColumn(Listview1,
>  1, lvc);


мне пока это нужно


Eraser   (2008-11-27 23:06:00) [12]

> [15] Ort   (27.11.08 21:29)


> это как?

очень просто.
вопрос:

> Как добавить итемы в listview

ответ: начинаешь смотреть реализацию добавления, начиная с метода TListItems.Add... путем перехода по нескольким "ссылкам" (клик мышью по идентификатору, удерживая нажатый ctrl) приходим к тому, что вызывается API функция SendMessage(hWnd, LVM_INSERTITEM, 0, Longint(@pItem).
и т.д.


Ort   (2008-11-27 21:29:00) [13]

Eraser

это как?


Eraser   (2008-11-27 20:25:00) [14]

> [8] Ort   (27.11.08 17:33)


> по заданию низя...только winapi

ok, но кто мешает посмотреть, как нужный функционал реализован в VCL? все ж с исходниками поставляется. т.о. все задание сводится к копированию кода из VCL )


Ort   (2008-11-27 19:46:00) [15]

не добавилосб
описал в варе переменую...
вобшем вот кусок кода создаю лист вью и патом вызваю инсерколумн

   ListView1 := CreateWindowEx(
   WS_EX_CLIENTEDGE,
   WC_LISTVIEW,
   nil,
   WS_CHILD or WS_VISIBLE or LVS_ICON or LVS_SINGLESEL,
   5, 40, 465, 465, wnd, 0, hInstance, nil);
   Font := GetStockObject( ANSI_FIXED_FONT );
   SendMessage(ListView1,WM_SETFONT, Font, 0);

   ListView_InsertColumn(Listview1, 1, lvc);


Ort   (2008-11-27 19:40:00) [16]

точкой вроде :[ сорри шас папробую


clickmaker   (2008-11-27 18:41:00) [17]

> эээ...это оч похожа на метод

а хоть попробовал? похоже... Не в курсе, каким символом методы от объекта отделяются?


Ort   (2008-11-27 18:37:00) [18]


> ListView_InsertColumn(ListViewHandle, Index, lvc);

эээ...это оч похожа на метод обьекта листвью, винапи не знает обьктов у меня листвью типа hwnd


clickmaker   (2008-11-27 17:54:00) [19]

> как и где описать структуру

var
 lvc: LV_COLUMN;

> как использовать инсерколумн


ListView_InsertColumn(ListViewHandle, Index, lvc);


Ort   (2008-11-27 17:33:00) [20]

как и где описать структуру и собствена как использовать инсерколумн


> в чем причина выбора "чистого winapi", чем TListView плох?

по заданию низя...только winapi


Страницы:   1 2

Наверх

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