|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#166
|
||||
|
||||
Цитата:
|
#167
|
||||
|
||||
используй правильные контекст устройства и дестриптор окна - проверено, работает.
Пишу программы за еду. __________________ |
#168
|
||||
|
||||
В этом же сообщении WM_ERASEBKGND, вместо WM_PAINT попробовал заливать фон - все норм.
|
#169
|
||||
|
||||
В WM_PAINT используй ps.hdc
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#170
|
||||
|
||||
Код:
WM_PAINT: begin GetClientRect(Wnd, aRect); FillRect(PS.hdc, aRect, COLOR_BTNFACE); end; --------------------- Сделал так: Код:
WM_PAINT: begin GetClientRect(Wnd, aRect); DC := BeginPaint(Wnd, PS); FillRect(PS.hdc, aRect, COLOR_BTNFACE); EndPaint(Wnd, PS); end; Последний раз редактировалось sariman, 18.12.2012 в 19:24. |
#171
|
||||
|
||||
Код:
ID_FULLPATH..ID_HIDEPATH: CheckMenuRadioItem(Menu, ID_FULLPATH, ID_HIDEPATH, LOWORD(wParam), MF_BYCOMMAND); |
#172
|
||||
|
||||
Твоя беда в том, что не желаешь пользоваться справкой. Многие вопросы сразу бы отпали.
1. Этого достаточно Код:
WM_PAINT: begin BeginPaint(Wnd, PS); FillRect(PS.hdc, PS.rcPaint, GetSysColorBrush(COLOR_BTNFACE)); EndPaint(Wnd, PS); end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
sariman (18.12.2012)
|
#173
|
||||
|
||||
Справку я смотрю, правда не всегда там все бывает понятно.
Цитата:
|
#174
|
||||
|
||||
Можешь после этой строки добавить
Код:
case wParam of ID_FULLPATH : ; // действие ID_ONLYNAME : ; // действие ID_HIDEPATH : ; // действие end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
sariman (18.12.2012)
|
#175
|
||||
|
||||
Спасибо, подскажите почему не работает процедура которая форматирует имена файлов плейлиста? Может я что-то не так делаю?:
Код:
procedure UpdatePlayListNames; var I: Integer; FullPath, OnlyName, HidePath: string; begin for I := 0 to LV_Count(PlayList) - 1 do begin FullPath := LV_GetItemText(PlayList, I, 1); OnlyName := ChangeFileExt(ExtractFileName(LV_GetItemText(PlayList, I, 1)), ''); HidePath := ExtractFileName(LV_GetItemText(PlayList, I, 1)); case ViewType of 1: LV_SetItemText(PlayList, I, 1, FullPath); 2: LV_SetItemText(PlayList, I, 1, OnlyName); 3: LV_SetItemText(PlayList, I, 1, HidePath) end end end; |
#176
|
||||
|
||||
Вот теперь представь логику работы данной процедуры. Получил OnlyName и присвоил ListView. Как в следующий раз получить из короткого имени FullPath и как запустить на проигрывание не зная путь? ListView должен только отображать разные варианты имени файла, а хранится всё должно в другом месте, к примеру, в записи.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#177
|
||||
|
||||
Я это прекрасно понимаю, у меня будет StringList с полными путями к файлам, просто не понимаю почему не работает.
|
#178
|
||||
|
||||
Здесь явных ошибок нет (не считая кривости алгоритма), смотри дальше.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#179
|
||||
|
||||
Чем кривоват этот алгоритм?
|
#180
|
||||
|
||||
Смотри сам: в каждом цикле 3 раза идёт чтение строки из ListView, 3 раза преобразование этой строки.
Код:
procedure UpdatePlayListNames; var I : Integer; St : String; begin for I := 0 to LV_Count(PlayList) - 1 do begin St := LV_GetItemText(PlayList, I, 1); case ViewType of 1: LV_SetItemText(PlayList, I, 1, St); 2: LV_SetItemText(PlayList, I, 1, ChangeFileExt(ExtractFileName(St), '')); 3: LV_SetItemText(PlayList, I, 1, ExtractFileName(St)); end; end; end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
sariman (19.12.2012)
|