Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.01.31;
Скачать: CL | DM;

Вниз

Дерево файлов на winapi   Найти похожие ветки 

 
Ort   (2008-11-27 10:05) [0]

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

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

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


 
Palladin ©   (2008-11-27 10:09) [1]

начал писать на winapi начни и msdn любить, там все прекрасно описано


 
clickmaker ©   (2008-11-27 11:26) [2]

а почему listview, а не treeview?


 
tesseract ©   (2008-11-27 12:20) [3]


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


Придеться его усиленно курить + понимать что есть рекурсия.


 
Ort   (2008-11-27 15:41) [4]


> а почему listview, а не treeview?


патамучто надо чтоб в итоге получилось что наподобии панельки фара\тоталкамандера...

мсдн читал не понял...понял только что надо описать структуру столбца, юзать LV_Column и функцию insertcolumn...но как хз :(


 
Ort   (2008-11-27 15:59) [5]

ну это я про столбцы имел ввиду...народ помогите хотяб с этим


 
clickmaker ©   (2008-11-27 16:10) [6]

> понял только что надо описать структуру столбца, юзать LV_Column
> и функцию insertcolumn

уже хорошо.
а что именно непонятно?


 
Eraser ©   (2008-11-27 16:36) [7]

> Ort   (27.11.08 10:05)
> вопшем пишу на чистом winapi сабж...столкнулся с проблемой...

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


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

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


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

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


 
clickmaker ©   (2008-11-27 17:54) [9]

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

var
 lvc: LV_COLUMN;

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


ListView_InsertColumn(ListViewHandle, Index, lvc);


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


> ListView_InsertColumn(ListViewHandle, Index, lvc);

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


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

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

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


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

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


 
Ort   (2008-11-27 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 20:25) [14]

> [8] Ort   (27.11.08 17:33)


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

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


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

Eraser

это как?


 
Eraser ©   (2008-11-27 23:06) [16]

> [15] Ort   (27.11.08 21:29)


> это как?

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

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

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


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


> 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);


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


 
clickmaker ©   (2008-11-28 11:01) [18]

> ListView_InsertColumn(Listview1, 1, lvc);

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


 
Ort   (2008-11-28 11:24) [19]


> clickmaker

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


 
clickmaker ©   (2008-11-28 11:32) [20]

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

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


 
Ort   (2008-11-28 11:43) [21]

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


> clickmaker

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

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


 
clickmaker ©   (2008-11-28 12:01) [22]

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 12:24) [23]

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


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


> 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:54) [25]


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

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


 
clickmaker ©   (2008-11-28 12:55) [26]

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

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


 
Ort   (2008-11-28 13:11) [27]

clickmaker

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



Страницы: 1 вся ветка

Текущий архив: 2010.01.31;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.012 c
15-1259598607
TIF
2009-11-30 19:30
2010.01.31
Серия вебинаров Embarcadero по Delphi 2010


2-1260354362
Danco
2009-12-09 13:26
2010.01.31
Компонент NMPOP3


15-1259184616
Юрий
2009-11-26 00:30
2010.01.31
С днем рождения ! 26 ноября 2009 четверг


1-1234891292
d@vinchi
2009-02-17 20:21
2010.01.31
Клиент-серверное приложе по протоколу SIP


15-1258467927
kyn66
2009-11-17 17:25
2010.01.31
О битовой математике