Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 09.03.2009, 05:30   #1
Abhorrer
 
Аватар для Abhorrer
 
Регистрация: 02.03.2009
Сообщений: 7
Сообщение Динамическое создание "суб-меню" из файлов в заданном каталоге

Поискал по форуму... не нашёл то что нужно... и в гугле искал... тоже... Похожее было, но не то... Может быть и есть, но я не нашёл...

Собственно проблема) Во многих программах есть меню "Вид", в нём есть среди остальных пунктов пункт "Языки" - при наведении на него открывается суб-меню в котором содержытся список языков (всех файлов с расширением *.lng в каталоге "программа\languages")

Подскажите пожалуйста как это сделать?)

Сразу прошу прощенья, если это уже где-то обсуждалось
Abhorrer вне форума
Старый 09.03.2009, 05:48   #2
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

http://programmersforum.ru/showthrea...2+%EC%E5%ED%FE

плохо искал... вот тут есть про создание меню...

а если тебе нужно сделать список файлов то просто через findfirst ищи все файлы в папке и по расширению файла добавляй в меню те которые нужно
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума
Старый 10.03.2009, 13:58   #3
Abhorrer
 
Аватар для Abhorrer
 
Регистрация: 02.03.2009
Сообщений: 7
По умолчанию

Спасибо, я всё просмотрел там... Кое как, с помощью одного человека вот что вышло:
Код:
type
......................
  TForm1 = class(TForm)
  mm_Skins: TMenuItem;
  SkinManager: TsSkinManager;
  procedure asdfg(Sender: TObject);
......................
var
  Form1: TForm1;
  SearchRec:TSearchRec;
......................
procedure TMoviesKeeper.asdfg(Sender: TObject);
begin
  movieskeeper.SkinManager.SkinName:=SearchRec.Name;
end;
......................
procedure TForm1.FormCreate(Sender: TObject);
  var i:TMenuItem;
begin
   skinmanager.SkinDirectory:='Skins/';

   If FindFirst('Skins/*.asz', faAnyFile, SearchRec)=0 then
      repeat
        i:=TMenuItem.Create(MainMenu);
        i.Caption:=Copy(SearchRec.name, 1, Length(SearchRec.name) - Length(ExtractFileExt(SearchRec.name)));
        i.OnClick:=asdfg;
        mm_skins.Add(i);
      until FindNext(SearchRec) <> 0;
   FindClose(SearchRec);
end;
Проблема в процедуре, которая срабатывает при OnClick.... В общем эта процедура ничего не делает xD
Как доделать её, чтобы при клике всё таки скин менялся?)
Abhorrer вне форума
Старый 10.03.2009, 14:06   #4
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Вот тут :
Код:
procedure TMoviesKeeper.asdfg(Sender: TObject);
begin
  movieskeeper.SkinManager.SkinName:=SearchRec.Name;
end;
... немного по-другому : procedure TForm1.asdfg(Sender: TObject);
"Заряженному танку в дуло не смотрят" @Dekmer in WoT

Последний раз редактировалось Kotofff; 10.03.2009 в 14:09.
Kotofff вне форума
Старый 10.03.2009, 14:31   #5
Abhorrer
 
Аватар для Abhorrer
 
Регистрация: 02.03.2009
Сообщений: 7
По умолчанию

Да) Просто у меня форма так называется... переделывал код под Form1... а про этот кусок видимо забыл)

Последний раз редактировалось mihali4; 10.03.2009 в 14:52.
Abhorrer вне форума
Старый 14.03.2009, 21:47   #6
Abhorrer
 
Аватар для Abhorrer
 
Регистрация: 02.03.2009
Сообщений: 7
По умолчанию

В общем мне помогли и вышло вот так:
Код:
type
  TMainForm = class(TForm)
    MainMenu: TMainMenu;
    mm_View: TMenuItem;
    SkinManager: TsSkinManager;
    SkinProvider: TsSkinProvider;
    procedure FormCreate(Sender: TObject);
    procedure MyMenuClick(Sender: TObject);

var
  MainForm: TMainForm;

implementation

{$R *.dfm}


procedure TMainForm.MyMenuClick(Sender: TObject);
begin
  SkinManager.SkinName:=(sender as tmenuitem).Caption;
end;
......................
procedure TMainForm.FormCreate(Sender: TObject);
var
  newItem: TMenuItem;
  tmp: string;
  SearchRec: TSearchRec;
begin
  mm_View.AutoHotkeys:=maManual;
  if FindFirst('Skins/*.asz', faAnyFile, SearchRec) = 0 then
     repeat
       newItem:=TMenuItem.Create(mm_View);
       tmp:=extractfilename(SearchRec.name);
       newItem.Caption:=copy(tmp, 1, length(tmp) - length(extractfileext(tmp)));
       newItem.OnClick:=MyMenuClick;
       mm_View.Items[0].Add(newItem)
     until FindNext(SearchRec) <> 0;
   FindClose(SearchRec)
end;
Так всё работает) Тему можно закрыть
Abhorrer вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
настроить при открытии Excel 2003 в окошке "Тип файлов" вывод пункта "Все файлы (*.*)" по умолчанию? Unior Microsoft Office Excel 2 01.03.2009 02:42
Отсутствует вкладка "Выполнить" в меню пуск Ronni10 Windows 11 13.02.2008 22:06