Вопрос
Нужно создать меню последних открытых файлов в программе.
Как это сделать?
Ответ
Создаешь, например, 5 пунктов меню. Скрытые, кэпшна нет, тег пустой. При загрузке читаешь последние открытые файлы из реестра/INI, если таковые есть — заполняешь меню: тег — полный путь к файлу, кэпшн — только имя файла, визибл = тру. При открытии очередного файла сдвигаешь все на один пункт вниз (самый «давнооткрытый» файл при этом «забывается). В первое меню добавляешь новый файл по той же схеме. Пишешь его в реестр/INI. При щелчке на меню (лучше делать массив с одним именем) делаешь что-то вроде:
Sub mnuMRU_Click (Index as Integer)
OpenFile mnuMRU(Index).Tag
End Sub
Savenger
В режиме дизайна создай элемент меню, имеющий Caption равный "-". Этот элемент будет представлять собой разделитель имен файлов (обычно список файлов отделяют таким разделителем). Если разделитель не нужен, поставь Visible=false. ОЧЕНЬ ВАЖНО!!!___ поставь Index=0.
Далее нет ничего сложного. Но много писанины.
lngCount — здесь хранишь количество элементов, сохраненных в реестре
mnuFileRecent — имя менюшки, которое ты создал в предыдущем шаге.
For i = 1 To lngCount
'Загрузим следующий элемент.
Load mnuFileRecent(i)
'Новосозданный элемент еще не видим. Исправим положение.
mnuFileRecent(i).Visible = True
'Загрузим путь из реестра
strText=GetSetting(…)
'Присвоим Caption
'Тут я попытался добавить в список только имя файлы.
mnuFileRecent(i).Caption = left(strtext,instrrev(strtext,"\"))
'В свойство Tag запишем полный путь.
mnuFileRecent.tag=strText
Next i
При клике на этом меню загружаешь файл mnuFileRecent(index).tag
Добавлять элемент можно простым циклом. Есди mnuFileRecent.ubound меньше макс. кол-ва файлов, сначала загрузи еще один элемент:
lngMaxCount — макс. кол-во файлов
if mnuFileRecent.ubound < lngMaxCount then
'Загрузим элемент меню, индекс которого на 1 больше кол-ва,
'элементов в списке.
load mnuFileRecent(mnuFileRecent.ubound+1)
'Теперь просто обращаемся к самому «высокому» элементу
mnuFileRecent(mnuFileRecent.ubound).visible=true
end if
for i = mnuFileRecent.ubound to 2
mnuFileRecent(i).caption=mnuFileRecent(i-1).caption
next i
mnuFileRecent(1).caption=strFileName
Кривокрисенко
Copyright 2000-2004 Сообщество Чайников
Контактная информация