Re: Экспорт в Excel | |
---|---|
Vedmak Автор Сообщений: 5973 Откуда: CiTY Дата регистрации: 30.10.2003 |
давно слежу ------------------ Говорить стоит лишь для тех, кто слушает. |
Re: Экспорт в Excel | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Лулгу? |
Re: Экспорт в Excel | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Обычно на это просто забивают. Чего можно ждать от системы писанной 30 лет назад, и уже лет 10 как снятой с поддержки? Для буфера обмена есть свой АПИ, через него можно узнать какие форматы данных в этом самом буфере имеются, и через него же можно поместить туда текст в правильной кодировке, а точнее в юникоде (а можно и не только текст - можно и rtf и картинки). Почитай МСДН для деталей, если очень уж интересно... Конечно же так делать не надо Гораздо правильнее просто через АПИ положить текст сразу в юникоде. Или во всех требуемых форматах, ANSI тоже иногда бывает востребован, а то как сама система "синтезирует" отсутствующие форматы по имеющимся - не всегда получается правильно. ------------------ WBR, Igor |
Re: Экспорт в Excel | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Нет, все гораздо проще (на примере Cut): 1) Перемещается системный Cut (совсем убрать нельзя, но, может, кто подскажет, как)
2) Ему на замену создается свой Cut в меню _MEDIT
3) Ему присваивается процедура из 4 строк, которая - сохранит текущую раскладку - выставит русскую - вызовет системный Cut - вернет сохраненную раскладку
Собственно процедура, выполняющаяся по выбору Cut:
Она же может быть использована для Copy. Функция KB - интерфейс к win32api-функции ActivateKeyboardLayout, которая устанавливает нужную раскладку (здесь параметр 'r' для русской), сохраняя значение предыдущей. Вот и всё, что, на мой взгляд, нужно сделать, чтобы пункты Cut и Copy всегда работали при русской раскладке. Исправлено 1 раз(а). Последнее : akvvohinc, 14.02.20 00:57 |
Re: Экспорт в Excel | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Поясни, пожалуйста. В некотором объекте (окне) Фокса я выделяю блок текста и нажимаю Ctrl-C. Перехожу во внешний текстовый редактор и вставляю его туда, при этом хочу, чтобы кириллица осталась кириллицей независимо от того, какая раскладка у меня была в Фоксе в момент нажатия Ctrl-C. Что, как и в какой момент я должен превратить в юникод? (если это важно - редактор (Multi-Edit), которым я пользуюсь как для Фокса, так и для прочих нужд, с юникодом не знаком) Исправлено 1 раз(а). Последнее : akvvohinc, 14.02.20 01:14 |
Re: Экспорт в Excel | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Функция SYS(1500, cSystemItemName, cMenuName) позволяет запускать пункты системного меню прямо из кнопок.
Кнопочное меню ничем не хуже BAR-меню. |
Re: Экспорт в Excel | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Это теория или можешь показать работающий пример? Мне кажется, я когда-то пробовал убирать системные пункты в свое меню, но что-то в таком виде не срасталось, и по SYS(1500, ) пункт в этом случае не отрабатывал. |
Re: Экспорт в Excel | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
() Я не смог получить полезные свойства от "меню", не хватило обьектности. Меню строил от наития, рытался, чтобы они были прислонены к фоме... Это всё не надо. Операторам (ждевченкам с улицы) это все равно, главное - удобство, и непромашка.
|
Re: Экспорт в Excel | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Попробуй при запуске убрать системное меню в стек: PUSH MENU _MSYSMENU SET SYSMENU TO а при выходе восстановить его: POP MENU _MSYSMENU SET SYSMENU TO DEFAULT |
Re: Экспорт в Excel | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
- Текст который ты хочешь поместить в буфер обмена, который будет записан в блок глобальной памяти, передаваемый в функцию SetClipboardData() - Тогда, когда ты хочешь его поместить в буфер обмена, примерно между вызовами OpenClipboard()/EmptyClipboard() и SetClipboardData() SetClipboardData может вызываться несколько раз с указанием различных "форматов" - в т.ч. CF_TEXT, CF_OEMTEXT и CF_UNICODETEXT - естественно для первых двух форматов текст надо не в юникод переводить, а оставлять в ANSI или переводить в OEM кодовую страницу (866 для русского языка). Как работает мульти-эдит я не в курсе, не в курсе даже вин-приложение это, или досовское "обычные" текстовые редакторы берут для вставки данные в формате CF_UNICODETEXT. ------------------ WBR, Igor |
Re: Экспорт в Excel | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Не понял саму идею - с какой целью убирать системное меню. Системное меню должно быть - ибо пользователи не простят. Ну, и последовательность восстанавливающих команд мне непонятна: Зачем восстанавливать меню из стека, чтобы тут же накрыть его меню по умолчанию? Тут либо первое, либо второе. А вообще я полагал, что речь идет о создании пользовательского меню одновременно с системным. То есть я проверял такой способ убрать/скрыть пункты системного меню - убрать их в пользовательское меню, которое пользователь не увидит, но добиться, чтобы SYS(1500) в таком варианте их вызвал, мне не удалось. |
Re: Экспорт в Excel | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Не дошло. Текст, который я хочу сохранить в буфер, я только что выделил на экране, и настала пора нажать Ctrl-C (или меню Copy). Что конкретно надо сделать в этот момент для реализации твоего плана? |
Re: Экспорт в Excel | |
---|---|
mеdstraх Сообщений: 275 Дата регистрации: 25.01.2020 |
Вы меня извините, что я влезаю не по делу.
Но я просто у человека, который в эту профессию заглядывает свысока раз в пятилетку. У ИК скиллы конечно, все дела, но вам самим то не стремно бежать к папочке "помоги, святой отец, я не знаю как"? Ладно бы нубы какие-то. Скажу про себя - если я что-то не могу решить, то это в категории нерешаемых, какие-то позывы (было такое) всегда разбивались о чужое незнание. |
Re: Экспорт в Excel | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Если это, как я полагаю, мне, то ответ прост.
Если я сталкиваюсь с чем-то новым, то вижу два способа решить проблему: 1) ничего не читать, никого не спрашивать, а копать самому пока, быть может, что-то и получится; 2) ну, а между читать/искать где-то самому или спросить у того, кто знает, принципиальной разницы не вижу - в любом случае тебе помог чужой совет или опыт, и разница лишь во времени решения проблемы. Варианты, когда ты что-то прочитал, а до остального дошел сам - это уже детали. Значит, твоя проблема просто была меньше, чем ты сначала полагал. Если под "решить" ты имеешь в виду действия по варианту 1), то тебе можно только позавидовать - отлично, когда твои проблемы не выходят за пределы твоих знаний. Если же при этом тебе приходится применять и вариант 2) в любой форме, то я бы не сказал, что эту проблему ты решил сам. |
Re: Экспорт в Excel | |
---|---|
mеdstraх Сообщений: 275 Дата регистрации: 25.01.2020 |
Ну мне слегка стыдно спрашивать у коллег в интернете, когда вся инфа рядом, только не поленись - найди и подними. Это звучит как "да мне лень чота там искать - пацаны, сделайте это за меня" Хотя честно признаюсь - пару лет назад мне пришлось просить помощи у коллег по поводу одного нетривиального алгоритма (спасибо Boba, я не забыл), но по итогам все равно запилил сам. |
Re: Экспорт в Excel | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Не всегда это "лень", просто интересов в жизни больше, чем времени на их удовлетворение - чем-то приходится жертвовать. Если проблемы по всем направлениям решать исключительно по варианту 1, то - да, возможно, удовлетворишь свое эго, но позже можешь пожалеть о потерянном времени из-за выбора не самого эффективного способа обучения. Да обычно никто и не просит "Сделайте это за меня!". - "Подскажите, направьте!.." Тому, кто уже знает, это обычно ничего не стоит (в плане потерянного времени). Во всяком случае, я, если кому-то помогаю, не думаю, что спрашивающий лентяй (даже в Help по Фоксу надо еще суметь сориентироваться). Ведь даже в самом элементарном, как тебе кажется, случае, всегда найдется кто-то, кто сталкивается с ним впервые. |
Re: Экспорт в Excel | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Тут главное, на мой взгляд, быть в ладу самому с собой - если тебе принципиально сделать все "без подсказки", то так и нужно стараться делать. У меня такого принципа нет, я не буду "страдать морально", если попрошу помощи у конкретного человека, а не анонимно в безликой всемирной паутине, поэтому могу этим пользоваться. Не буду также переживать, если кто-то из моих знакомых узнает, что я попросил "помощь зала" - сейчас, когда, можно сказать, "пенсия ломится", время дороже. Не думаю, что можно утверждать, что так лучше/правильнее, а так хуже - это индивидуально. Но я бы все же сравнивал эффективность. Исправлено 1 раз(а). Последнее : akvvohinc, 15.02.20 08:02 |
Re: Экспорт в Excel | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Больше половины из примера не нужно, но основные шаги для работы с буфером обмена там описаны, и перевести это в фокс можно без проблем. Как получить из просто текста текст в UNICODE, полагаю не нужно объяснять. docs.microsoft.com ------------------ WBR, Igor |
Re: Экспорт в Excel | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Спасибо большое! Попробую разобраться на досуге. Жаль, что используемый мною вариант в принципе делает то, что мне нужно - когда есть стимул, копается легче. |
Re: Экспорт в Excel | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Просто надо вовремя переходить на более современные и живые системы, где хотя бы поддерживается юникод нормально, в т.ч. и для работы с буфером обмена.
А для антиквариата - если работает костыль, то смысл переписывать на что-то более правильное невелик. Ну по крайней мере это вмешательство (переключение языка ввода для твоего же приложения) не разрушительно - в отличие от генерации экселевского отчёта, которая затирает буфер обмена (при том делает это где-то в середине процесса). ------------------ WBR, Igor |
© 2000-2024 Fox Club  |