Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 06.10.2007, 14:21   #1
Ваня1993
AnyKey`щик
 
Регистрация: 29.08.2007
Сообщений: 13
Написано 0 полезных сообщений
(для 0 пользователей)
Файловый Менеджер

Вот пример простого файлового менеджера. Подскажите как мне сделать чтбы для каждого файла была своя иконка(например для дисков своя, а для папок своя)
program PuntoExplorer;

uses fsafm;


var

// команды
cmdNext : command;
cmdBack : command;
cmdQuit : command;
clicked : command;

str : string; // буфер
files: array[1..200] of string; // имена файлов, коичество файлов = размер массива
filesID: array[1..200] of integer; // ID строк
nameT : string; // текущая папка

i, num : integer; // щечики
iID : integer;
nfile : string;







begin


cmdNext := CreateCommand('ок', CM_OK, 1);
cmdBack := CreateCommand('выход', CM_EXIT, 1);

nameT:= ''; // начальная папка

while (clicked <> cmdBack) do
begin
// очищаем команды
removeCommand(cmdNext);
removeCommand(cmdBack);
Repaint; // обновление экрана



if nameT = '' then // проверка на нахождение в корне
begin


str:=fsafm.list_roots(''); // чтение дисков
num:= fsafm.num_disk(nameT); // определяем кол-во дисков



end
else
begin


str:=fsafm.list_(nameT); // чтение папок
num:= fsafm.num_dir(nameT); // определяем кол-во папок

end;

files [1]:= '..'; // добавляем первой строкой, выполняет функцию вверх



if str <> '' then // проверка наличия файлов
begin



for i:=2 to num + 1 do // очистка меню
begin
files [i]:= ''
end;


for i:=2 to num + 1 do
begin


files [i]:= copy(str, 0, pos(str, '|') ); //заполнение массива именами
str:= copy(str, pos(str, '|') + 1 , length(str));

if pos(str, '|') = -1 then // проверка знака '|' в строке
begin
str:= '.';
break;
end;

end;
end;




// создаем меню



showMenu(nameT, CH_IMPLICIT);

for i:= 1 to num + 1 do
begin
if files[i] <> '' then
begin
filesID [i] := menuAppendStringImage(files[i], loadImage('/folder.png')); // создаем строки
end;
end;


// добавление команд
AddCommand(cmdNext);
AddCommand(cmdBack);
Repaint; // обновление экрана



repeat // ждем нажатия на команду
delay(100);
clicked:= getClickedCommand;
until clicked <> emptyCommand;

if clicked <> cmdBack then
begin

iID:= menuGetSelectedIndex + 1; // к ID выбранной строки прибавим 1, для удобства

if iID=1 then // если первая строка, переходим вверх
begin
if Length(nameT) <= 3 then // проверка на нахождение в корне
begin
nameT:='';
end
else
begin

for i:= 2 to length(nameT) do // команда вверх, вычисление предидущей папки
begin

if copy(nameT, length(nameT) - i, length(nameT) - i + 1 ) = '/' then
begin

nameT:= copy(nameT, 0, length(nameT) - i + 1 );
break;

end;
end;
end;
end
else
begin


if copy(files[iID], length(files[iID]) - 1, length(files[iID])) = '/' then nameT:= nameT + files[iID]; // если выбрана папка переходим в нее

if length(files[iID]) >= 4 then
begin
if copy(files[iID], length(files[iID]) - 4, length(files[iID])) = '.gif' then debug('gif'); // проверка выбранного файла по расширению
end;
end;






end;

end;
end.
(Offline)
 
Ответить с цитированием
Старый 06.10.2007, 17:44   #2
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Re: Файловый Менеджер

Я не совсем понял смысл вопроса
Когда ты получаешь список дисков, то ты знаешь, что иконка должна быть дисков, когда папок, то папок.
Точно также можно по расширениям файлов и им иконки выбирать.
Ведь ты используешь для этого разные функции.
(Offline)
 
Ответить с цитированием
Старый 06.10.2007, 23:45   #3
Ваня1993
AnyKey`щик
 
Регистрация: 29.08.2007
Сообщений: 13
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Файловый Менеджер

Для них одна и та же функция.
filesID [i] := menuAppendStringImage(files[i], loadImage('/folder.png')); // создаем строки
И на дисках, и на папках одна и та же иконка.
(Offline)
 
Ответить с цитированием
Старый 07.10.2007, 02:05   #4
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Re: Файловый Менеджер

str:=fsafm.list_roots(''); // чтение дисков

str:=fsafm.list_(nameT); // чтение папок

и вот еще:
if copy(files[iID], length(files[iID]) - 1, length(files[iID])) = '/' then nameT:= nameT + files[iID]; // если выбрана папка переходим в нее
если мы тут определяем, что это папка, то можем и иконку определить точно также.

Может я не прав? Не стоит перекладывать алгоритмические вопросы на других, поверьте полезнее и интереснее их решить самому
(Offline)
 
Ответить с цитированием
Старый 08.10.2007, 08:21   #5
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Re: Файловый Менеджер

Кстати, лучше реализовывать всё через графику, а не через формы. А то с формами слишком много проблем. Они на разных телефонах отображаются по-разному. Да и с командными кнопками слишком много проблем.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Менеджер ресурсов dimanche13 BlitzMax 1 12.12.2007 14:11
Менеджер памяти глючит elmortem 2D-программирование 8 16.09.2007 22:04
менеджер загрузки (процессы) impersonalis Болтовня 0 11.10.2006 16:09


Часовой пояс GMT +4, время: 02:49.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com