Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопросы по Win CE [Lazarus, KOL, Windows CE]


Страницы:   1 2

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 и т.д.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо