![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопросы по Win CE [Lazarus, KOL, Windows CE]
AnarchyMob © (2008-10-09 02:22:00)Просмотрел всю конференцию, ответов так и не нашел, вопросов накопилось немало вот главные из них:
1) Поиск файлов
Создаю OpenDialog для КПК воспользовался API функциями FindFirstFile & FindNextFile & FindClose, атрибуты поиска поставил FILE_FIND_DERICTORY (может немного ошибся, но это не суть важно) т.е. поиск папок, но в результате в ListView попадает все, и папки и обычные файлы и скрытые, короче все подряд, фильтр ставил '\*.*' и '\' в любом случае выводиться все, подскажите пожалуйста что делать.
2)Контекстное меню
Как в Win CE используя KOL реализовать контекстное меню, или какое возникает событие при долгом тапе. Спасибо.
3)OwnerDraw
Подскажите как вывести в контекст кнопки (и подобных компонентов) битмап, если можно дайте код, и как изменить цвета в ListView т.е. цвет фона цвет шрифта цвет выделения и.т.д.. Заранее благодарен.
P.S.
БОЛЬШОЕ СПАСИБО модераторам которые УДАЛИЛИ три моих вопроса, кстати очень актуальных, которые важны не только мне, но и другим программистам пишущих программы под Win CE.
AnarchyMob (2008-10-09 16:25:00) [21]Пробовал через PDirList вообще ничего не находит, видимо не до коца еще портирован, а по поводу FILE_ATTRIBUTE_DIRECTORY то я не пойму почему не работает ведь в VCL функции (уже точно не помню) FindRirst & FindNext с параметром FILE_ATTRIBUTE_DIRECTORY работает корректно. Я пробовал компилировать вышеприведенный текст для Win32 та-же история, отображаються все файлы. Что делать?
mdw (2008-10-09 15:04:00) [22]А с чего вы взяли, что
FindData.dwFileAttributes:=FILE_ATTRIBUTE_DIRECTORY;обеспечит вам нахождение только папок? Читайте первоисточники.
Также можно использовать TDirlist. Есть также готовые компоненты для отображения файловой системы, это так, к слову.
AnarchyMob (2008-10-09 13:19:00) [23]За ответы ОГРОМНОЕ СПАСИБОнаконец-то я смогу нормально разрабатывать свою программму, вот так надо отвечать на вопросы, а не флудить по пустякам.
Насчет поиска, извините, я что-то сейчас и сам непойму, вот мой код:
program Temp;
{$mode delphi}{$H+}
uses
Windows, KOL;
var
Form1, LView, Button1: PControl;
Ilist: PImageList;
//===================================================
Procedure FindFile;
var
FindHandle: THandle;
FindData : TWin32FindData;
b : boolean;
s : kolstring;
begin
FindData.dwFileAttributes:=FILE_ATTRIBUTE_DIRECTORY;
FindHandle:=FindFirstFile('\*.*', FindData);
if FindHandle<>INVALID_HANDLE_VALUE then
begin
b:=true;
while b do
begin
s:=FindData.cFileName;
if (s<>'..') and (s<>'.') then
LView.LVAdd(s, 0, [lvisFocus], 0, 0, 0);
b:=FindNextFile(FindHandle, FindData);
end;
end;
FindClose(FindHandle);
end;
procedure RunApp;
begin
Form1:=NewForm(Applet, 'Temp');
LBox:=NewListView(Form1, lvsDetail, [lvoRowSelect], nil, nil, nil);
Button1:=NewButton(Form1, 'Files');
LView.Width:=236;
Button1.Top:=220;
LView.LVColAdd('Folders', taLeft, LBox.Width-18);
//============================================
Button1.OnClick:=TOnEvent(MakeMethod(nil, @FindFile));
Run(Form1);
end;
begin
Applet:=NewApplet('Temp');
RunApp;
end.
В результате в ListView выводятся все файлы из корня КПК, а по идее должны только папки.
Еще раз СПАСИБО !!!
mdw (2008-10-09 10:59:00) [24]
> 1) Поиск файлов
Честно говоря не понял вопроса.
mdw (2008-10-09 10:58:00) [25]
> 2)Контекстное менюКак в Win CE используя KOL реализовать
> контекстное меню, или какое возникает событие при долгом
> тапе. Спасибо.
MyControl.SetAutoPopupMenu(MyPopupMenu);
> 3)OwnerDrawПодскажите как вывести в контекст кнопки (и подобных
> компонентов) битмап, если можно дайте код,
Вот работающий код
...
btnShellFolderUp: TKOLBitBtn;
...
btnShellFolderUp.OnBitBtnDraw:= btnShellFolderUpBitBtnDraw;
...
function TOpenDialogForm.btnShellFolderUpBitBtnDraw(Sender: PControl; BtnState: Integer): Boolean;
var P, W, H: Integer;
DC: HDC;
begin
Result:= True;
DC:= Sender.Canvas.Handle;
W:= Sender.Width;
H:= Sender.Height;
case BtnState of
2: begin
P:= CreatePen(PS_SOLID, Round(ControlScale), Color2RGB(clBtnText));
SelectObject(DC, P);
Rectangle(DC, 2+Trunc(ControlScale/2), scbFolders.Top+Trunc(ControlScale/2), W-Trunc(ControlScale/2), scbFolders.Top + scbFolders.Height-Trunc(ControlScale/2));
DeleteObject(P);
end;
else FillRectColor(DC, Sender.ClientRect, Sender.Color);
end;
ImageListAny.DrawingStyle:= [dsTransparent];
ImageListAny.Draw(0, Sender.Canvas.Handle, (W - ImageListAny.ImgWidth) div 2+1, (H - ImageListAny.ImgHeight) div 2);
end;
> и как изменить цвета в ListView т.е. цвет фона цвет шрифта
> цвет выделения и.т.д.. Заранее благодарен.
Да так же, как и в Win32: OnLVCustomDraw и т.д.