:: Visual Foxpro, Foxpro for DOS
Мульти выбор фалов
descent52_tmp
Автор

Сообщений: 214
Откуда: Саров
Дата регистрации: 20.11.2014
На 5 странице гугла нашел, допилил, может кому и понадобится )))
Диалоговое окно выбора файлов (нужен только Word на компе установленный )
Мне понадобилось выбирать файлы из меню, не из формы...
msoFileDialogOpen = 1
fso = CreateObject("Scripting.FileSystemObject")
objWord = CreateObject("Word.Application")
strInitialPath='c:\'
objWord.ChangeFileOpenDirectory(strInitialPath)
With objWord.FileDialog(msoFileDialogOpen)
.Title = "Выберите файлы для загрузки"
.AllowMultiSelect =.T.
.Filters.Clear
.Filters.Add( "Excel Files", "*.xls;*.xlsx")
.Filters.Add( "CSV Files", "*.csv")
If .Show = -1 Then
For Each File in .SelectedItems
objFile = fso.GetFile(File)
?objFile.Path
?objFile.Name
ENDFOR
Else
EndIf
ENDWITH
objWord.Quit



Исправлено 1 раз(а). Последнее : descent52_tmp, 08.11.17 13:18
Ratings: 0 negative/0 positive
Re: Мульти выбор фалов
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
В "Решения" закинуть надо. Думаю, полезная вещь, а на просторах форума затеряется.
Ratings: 0 negative/0 positive
Re: Мульти выбор фалов
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002

Нет, это просто рукалицо.
Диалог выбора файлов "через ворд"... А мессаджбокс, поди, через эксель надо будет показывать...
Chemberzhy
полезная вещь
Двойной рукалицо.

DO FORM home(2)+"solution\ole\commdlog.scx"
Примеру сто лет в обед, если что. И FFC классу соответствующему тоже.


------------------
WBR, Igor




Исправлено 1 раз(а). Последнее : Igor Korolyov, 08.11.17 18:53
Ratings: 0 negative/0 positive
Re: Мульти выбор фалов
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
А я не знал [sm016]
Ratings: 0 negative/0 positive
Re: Мульти выбор фалов
descent52_tmp
Автор

Сообщений: 214
Откуда: Саров
Дата регистрации: 20.11.2014
Igor Korolyov, ты не прав!)))
Почитай про траблы MSComDlg.CommonDialog в win7(64)!
Если не в курсе, то как бы поинтересуйся!
И потом, слышу где звон, да не знаю где он! Я чего в посте написал? Мне понадобилось выбирать файлы из меню, не из формы...
Из формы я и через ole сделаю за 5 сек. Так что ТРОЙНОЙ ТЕБЕ РУКАЛИЦО!
Ratings: 0 negative/0 positive
Re: Мульти выбор фалов
akvvohinc

Сообщений: 4203
Откуда: Москва
Дата регистрации: 11.11.2008
descent52_tmp
Мне понадобилось выбирать файлы из меню, не из формы...
Из формы я и через ole сделаю за 5 сек.

Я этим диалогом никогда не пользовался, поэтому не в курсе, что там за траблы, не знаю также, можно или нельзя создавать этот диалог через CreateObject(), но:

1) если что-то можно сделать за 5 сек. из формы, то
2) поскольку форму можно вызывать из меню даже быстрее, чем за 5 сек., то
3) что мешает сделать это менее, чем за 10 сек.?

Примерно по такой схеме (названия свойств и методов подсмотрел в той форме из Решений):
WITH CREATEOBJECT('myform')
.AddObject('mydialog1', 'mydialog', 'mscomdlg.commondialog.1')
.show()
ret = .mydialog1.filename
.release
ENDWITH
? ret
DEFINE CLASS myform as form
top = -1000
FUNCTION activate
thisform.mydialog1.showopen()
ENDFUNC
ENDDEFINE
DEFINE CLASS mydialog AS olecontrol
FUNCTION init
PARAMETERS p1
this.flags = 0x00080000 + 4 + 512 + 4096
ENDFUNC
ENDDEFINE

У меня не Win7(64) и диалог работает, видимо, так, как задумывали авторы.



Исправлено 1 раз(а). Последнее : akvvohinc, 09.11.17 03:38
Ratings: 0 negative/0 positive
Re: Мульти выбор фалов
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
akvvohinc
У меня не Win7(64)
А у меня на работе как раз оно.
Цитата:
и диалог работает, видимо, так, как задумывали авторы.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Мульти выбор фалов
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Igor Korolyov
Нет, это просто рукалицо.
Диалог выбора файлов "через ворд"... А мессаджбокс, поди, через эксель надо будет показывать...
Chemberzhy
полезная вещь
Двойной рукалицо.

DO FORM home(2)+"solution\ole\commdlog.scx"
Примеру сто лет в обед, если что. И FFC классу соответствующему тоже.

И фоксовские функции еще есть, и winapi, и ole работает.
Все это так, но думается, что скопипастить к себе решение от ТС вы все-же не забыли.
Ratings: 0 negative/0 positive
Re: Мульти выбор фалов
descent52_tmp
Автор

Сообщений: 214
Откуда: Саров
Дата регистрации: 20.11.2014
akvvohinc, а зачем мне форма?! Например, через пункт меню мне надо выбрать около 10 однотипных файлов Excel и быстренько загрузить их к себе в 'нору'.
Зачем мне форму городить ещё какую то, зачем?

akvvohinc
не знаю также, можно или нельзя создавать этот диалог через CreateObject()
слукавили ))) видимо, всё же, в курсе про CreateObject() на компе win7(64), где кроме офиса 2007, мозилы и программы в виде
'лисички' ничего другого и нет. Не прокатит CreateObject()! И тогда да, надо будет городить форму, на нее ole и прочие педали..
И тогда даааа, диалог будет, наверное!
Ratings: 0 negative/0 positive
Re: Мульти выбор фалов
Pliskin

Сообщений: 2959
Откуда: Новосибирск
Дата регистрации: 19.11.2003
Есть WinAPI: GetOpenFileName function
Ratings: 0 negative/0 positive
Re: Мульти выбор фалов
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
descent52_tmp
Igor Korolyov, ты не прав!)))
Аргументируй это для начала. Я привёл пример который работает. И в Win7x64, и в Win8 и в WinXP - при том входит в поставку фокса. Если кто-то не в состоянии его запустить - ну это лишь говорит об уровне его знаний.

descent52_tmp
Почитай про траблы MSComDlg.CommonDialog в win7(64)!
Когда кто-то чего-то не умеет, или не знает, то лучшее что он может сделать, это спросить у тех кто умеет и знает, и, соответственно научиться.
Худшим что он может сделать, это объявить всех вокруг идиотами.

НЕТ никаких проблем. Есть лишь непонимание у отдельных людей. Да, в этом конкретном примере требуется у пользователя разворачивать активикс - т.е. копировать ему соответствующий ocx файл, регистрировать его. Точно так же как, к примеру, для использования дерева, или DateTimePicker.
По ссылке вообще речь изначально шла про другой компонент. Ну и да, уровень знаний отвечающих, не понимающих как связаны между собой ocx библиотека и Visual Stidio (или IDE фокса) просто удручает...

Но есть и ещё один пример там же:
DO FORM home(2)+"Solution\Ffc\Getfilex.scx"
Он использует класс "_comdlg" из библиотеки "\ffc\_system.vcx" - а этот класс в свою очередь работает на чистом АПИ и никаких OCX не требует. Да, он использует "устаревшие" АПИ функции - зато они работают и на WinXP, в отличие от более "современных". Естественно, на всех Win7/8/10 как 32 так и 64 разрядных он тоже работает.

descent52_tmp
И потом, слышу где звон, да не знаю где он! Я чего в посте написал? Мне понадобилось выбирать файлы из меню, не из формы...
Код для работы что одного что второго диалога "без формы" должен уметь написать любой уважающий себя программист - иначе ему стоит переквалифицироваться в управдомы или там бутылки пустые идти собирать.

Не умеешь использовать класс без формы? Так спроси, мы научим и покажем.
К примеру для второго класса (без ocx).
LOCAL loFileDialog, ln1
loFileDialog = NEWOBJECT("_comdlg", HOME(1) + "\ffc\_system.vcx")
loFileDialog.AddFilter("Excel files (*.xls)", "*.xls;*.xlsx")
loFileDialog.lAllowMultiselect = .T.
loFileDialog.ShowDialog()
IF m.loFileDialog.nFileCount =0
? "Nothing was selected"
ELSE
? "From folder:", m.loFileDialog.cFilePath
FOR ln1 = 1 TO m.loFileDialog.nFileCount
? loFileDialog.aFileNames[m.ln1]
ENDFOR
ENDIF

descent52_tmp
Так что ТРОЙНОЙ ТЕБЕ РУКАЛИЦО!
Воинствующее невежество так забавно...


------------------
WBR, Igor
Ratings: 1 negative/3 positive
Re: Мульти выбор фалов
descent52_tmp
Автор

Сообщений: 214
Откуда: Саров
Дата регистрации: 20.11.2014
Igor Korolyov
Я привёл пример который работает. И в Win7x64, и в Win8 и в WinXP - при том входит в поставку фокса. Если кто-то не в состоянии его запустить - ну это лишь говорит об уровне его знаний.
...
Ну и да, уровень знаний отвечающих, не понимающих как связаны между собой ocx библиотека и Visual Stidio (или IDE фокса) просто удручает...
...
Код для работы что одного что второго диалога "без формы" должен уметь написать любой уважающий себя программист - иначе ему стоит переквалифицироваться в управдомы или там бутылки пустые идти собирать.
....
Воинствующее невежество так забавно...
давай уже прекратим рука-лицо, ладно? Вон уже до пустых бутылок дошли...
и я честно скажу, не доходили руки до _system.vcx , как то без этого обходился.
И потом, Игорь, ты сторожила, вместо того чтобы 'рука-лицо', ткнул бы сперва в пример, а потом бы уж про бутылки и управдомы и рука-лицо писал.
Давай аккуратнее что ли... а ругаться последнее дело!
Ratings: 0 negative/0 positive
Re: Мульти выбор фалов
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
descent52_tmp
и я честно скажу, не доходили руки до _system.vcx , как то без этого обходился.

Если в реальности использовать с Winapi подобные классы, то число таких .vcx-библиотек будет десятки - на каждые одну-две функции по классу, задолбаешься.



Исправлено 1 раз(а). Последнее : lulgu, 09.11.17 16:53
Ratings: 0 negative/0 positive
Re: Мульти выбор фалов
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
А ты почитай тему с самого начала, и заметь, когда появились слова про управдома, а когда первый пример

То что делать диалог выбора файлов "через ворд" это абсолютная дикость, лично мне совершенно очевидно. Ладно бы в качестве редактора форматированного текста его на форму засунул, или там его проверкой орфографии воспользовался, но диалог выбора файла... Это "решение" может вызывать только одну реакцию.

А потом ещё и гнилые отмазки пошли, с соответствующим продолжением.

P.S. И самое главное - я не пользовался этим классом (я вообще не использую FFC классы - они чересчур много ненужной дряни тянут в проект - если он не через "мастер приложений" делается, то эта лишняя шняга совершенно не нужна). И даже не знал как он реализован (сейчас только увидел что в сольюшенах 2 примера есть - один для активикса, а второй таки для апи-обёртки) - но отчего то не стал искать на "5-й странице поиска гугла" НАСТОЛЬКО, кхм-м-м, "оригинальное" решение. Скорее уж "по незнанию" стал бы свой велосипед с АПИ-функцией сооружать.
В общем это (убогость и красоту конкретных программных решений) нужно уметь просто чувствовать...


------------------
WBR, Igor




Исправлено 1 раз(а). Последнее : Igor Korolyov, 09.11.17 18:56
Ratings: 0 negative/0 positive
Re: Мульти выбор фалов
dimuhametov

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
Подтверждаю косяки при работе с MSComDlg.CommonDialog. Примерно у каждого 2-го моего клиента идет ошибка С005 при открытии подобного диалога. Единственное где нет проблем это Win10. Что кается диалога MSWORD, то после использования примера от descent52_tmp , диалог у меня уходит за главное окно VFP (Win10x64). ALT TAB выручает.


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive
Re: Мульти выбор фалов
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
был у меня аналогичный случай
нада было настроить бекап на скуле. я туды не лез потому как не админ.
так вот ждали мы админа ДВА месяца
потом он гордо объявил что настроил
залез я на сервак и о чудо - в списке установленным прог оказался хенди бекап размером с 50 мегабайт
и это вместо/ради написания пары строк
такие дела


------------------
Мойте ноги, моя ноги вы моете и руки




Исправлено 1 раз(а). Последнее : Foxtrot, 10.11.17 07:06
Ratings: 0 negative/0 positive
Re: Мульти выбор фалов
descent52_tmp
Автор

Сообщений: 214
Откуда: Саров
Дата регистрации: 20.11.2014
Игорь, ещё раз, давай всё же аккуратнее с прилагательными, особенно про гнилые...
Это тебя не красит ни разу, будь выше этого...

Еще раз про свою задачу:
Мне надо через подпункт меню, например Загрузка данных из Excel, чтобы пользователь сам мог выбрать в чёрт пойми в какой директории, в сети, на диске,
около 40 файлов Excel (есть файлы и по 30Мб), однотипных по структуре, но различных по содержимому, затем программа их обработает и закачает
куда надо! Пользователи на своих ПК не администраторы, как админ зайти на их ПК я не могу и чего то там зарегистрировать тоже не могу.
То есть, изначально есть уже Эксель, Word тоже прилагается. Могу попробовать свой изначальный пример и для Экселя переделать.
Данные закачены, расчёт по ним выполнены, отчёты получены, все довольны.
Изначально, я пробовал пример отсюда
У меня на компе пример работает и через Create и через ручное добавление ActiveX Microsoft Common Dialog Control , у пользователей через Create не работает.
Различные махинации успехом не увенчались. Много чего перепробовал, но всё как то не то, ну не нравится!

Стал искать другие варианты, чтобы без педалей, как например из твоего же примера открытие папки с указанным файлом и выделением его.

o=CreateObject("Shell.Application")
o.Open('d:\test\')
Wait "" TIMEOUT 0.2
For each w in o.Windows
If w.LocationName=ALLTRIM('test')
w.Document.SelectItem('111.txt',16+8+1)
w.visible=.t.
Exit
EndIf
NEXT
Красиво? Красиво!

Вот так и дошел до 5 страницы гугла! И пример выложил, чтобы если кому вдруг понадобится, то , быть может, гугл даст ссылку
на сайт фокспро на эту страницу и человек решит свою проблему

Да, использовать для этого word, может и дикость...
Но не хочется этот прицеп из ocx-ов и vcx-ов и ещё не пойми чего! Зачем, потому что здесь так принято?

Раз у меня загрузка Excel-файлов, то через него и выберем файлы
msoFileDialogOpen = 1
fso = CreateObject("Scripting.FileSystemObject")
objExcel = CreateObject("Excel.Application")
strInitialPath="f:\"
With objExcel.FileDialog(msoFileDialogOpen)
.Title = "Выберите файлы"
.AllowMultiSelect =.T.
.Filters.Clear
.Filters.Add( "Excel Files", "*.xls;*.xlsx")
.Filters.Add( "CSV Files", "*.csv")
If .Show = -1 Then
For Each File in .SelectedItems
objFile = fso.GetFile(File)
?objFile.Path
?objFile.Name
ENDFOR
Else
EndIf
ENDWITH
objExcel.Quit

Ну и вот последний 'двухколёсный лэндровер'. Качаем, на диске С распаковываем и запускаем prg.

[attachment 28533 Test_OpenFiles.rar]

У кого есть рабочий ПК c Win10, отпишитесь как прошел полёт



Исправлено 4 раз(а). Последнее : descent52_tmp, 10.11.17 14:50
Ratings: 0 negative/0 positive
Re: Мульти выбор фалов
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Каждый сам себе злой буратино. Смысла тратить ещё время не вижу. Кому надо, тот всё найдёт и сделает - вся необходимая информация в теме приведена. Раз уж на 5 странице гугла есть такой, с позволения сказать "пример", ну значит мне ещё долго не остаться без работы
Делай выбор файлов да хоть бы и через варкрафт, это ж не мои проблемы.

P.S. Когда-то я не очень понимал, зачем опытный человек делится своими знаниями, при том совершенно безвозмездно. Он же по сути создаёт самому себе "конкурентов" - но чем дальше, тем больше вижу что ничего подобного. Скорее он пытается уменьшить количество д***ма с которым ему, возможно, предстоит столкнуться по работе Но труд сей по большей части Сизифов...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Мульти выбор фалов
descent52_tmp
Автор

Сообщений: 214
Откуда: Саров
Дата регистрации: 20.11.2014
Нуууу, уже лучше, уже без прилагательных, молодцом!
Ты мне вот скажи - без 'рукалицо' никак было? Вроде бы взрослый мужик, а буратинами кидаешься, гнилью, швондерами, бутылками...
Это нормой уже стало что ли? мдаааа, дела...
Ratings: 0 negative/0 positive
Re: Мульти выбор фалов
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
предположу, что его как и мну маненько покоробило нипадецки
жаль, что не ворда под рукой, уделил бы тебе времени поболя


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/1 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 27 (Гостей: 27)

© 2000-2024 Fox Club 
Яндекс.Метрика