Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2010.01.31;
Скачать: [xml.tar.bz2];

Вниз

Дерево файлов на 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2010.01.31;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.004 c
1-1235132567
dmitry1208197320
2009-02-20 15:22
2010.01.31
Поддержка темы XP компонентом TTreeView


2-1260337028
Леонид Артюхов
2009-12-09 08:37
2010.01.31
Как наложить одну картинку на другую?


15-1258815844
AlexDan
2009-11-21 18:04
2010.01.31
Переходить ли на W7..?


4-1227893533
Пётр
2008-11-28 20:32
2010.01.31
Перехват фокуса окна и его избежание


2-1256560287
Aleks
2009-10-26 15:31
2010.01.31
Выравнивание колонок ListView по содержимому





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский