![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#166
|
||||
|
||||
|
Цитата:
|
|
#167
|
||||
|
||||
|
используй правильные контекст устройства и дестриптор окна - проверено, работает.
|
|
#168
|
||||
|
||||
|
В этом же сообщении WM_ERASEBKGND, вместо WM_PAINT попробовал заливать фон - все норм.
|
|
#169
|
||||
|
||||
|
В WM_PAINT используй ps.hdc
|
|
#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; |
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
sariman (18.12.2012)
| ||
|
#173
|
||||
|
||||
|
Справку я смотрю, правда не всегда там все бывает понятно.
Цитата:
|
|
#174
|
||||
|
||||
|
Можешь после этой строки добавить
Код:
case wParam of
ID_FULLPATH : ; // действие
ID_ONLYNAME : ; // действие
ID_HIDEPATH : ; // действие
end; |
| Этот пользователь сказал Спасибо 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 должен только отображать разные варианты имени файла, а хранится всё должно в другом месте, к примеру, в записи.
|
|
#177
|
||||
|
||||
|
Я это прекрасно понимаю, у меня будет StringList с полными путями к файлам, просто не понимаю почему не работает.
|
|
#178
|
||||
|
||||
|
Здесь явных ошибок нет (не считая кривости алгоритма), смотри дальше.
|
|
#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; |
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
sariman (19.12.2012)
| ||