Можно ли программно управлять масштабом таблицы (отчета)?

1. vcv 89 06.02.09 12:06 Сейчас в теме
Вопрос собственно говоря в теме. Достают временами полуслепые тетки. А увеличить шрифт в меню "Сервис / Параметры / Интерфейс" не выход. Многие шрифты перестают влазить в ячейки, потому что фактический размер букв вырастает больше, чем 1С увеличивает ширину и высоту ячеек.
P.S. Хотелось бы решение без SendKeys, этот метод кажется несколько ненадежным.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Ёпрст 1064 06.02.09 12:10 Сейчас в теме
(1) Почему не надежный ?
Можешь вообще на форму кинуть настройку для шрифтов/размеров и в уже выведенной Таблице через область сменить шрифт и его размер...
3. vcv 89 06.02.09 12:21 Сейчас в теме
(2)
Почему не надежный ?

Потому что отчеты формируются не сразу, фокус ввода может быть на совсем другом приложении. А методы найти и переключиться на нужное окно не отличаются точностью. Искать по заголовку не получится, ни кто не гарантирует его уникальность. Определять PID процесса, искать окна связанные с ним? Ну... если может быть решение без этого, хотелось бы без этого.
Можешь вообще на форму кинуть настройку для шрифтов/размеров и в уже выведенной Таблице через область сменить шрифт и его размер...

Я опять упираюсь в проблему взаимосвязи размера шрифта и размера ячейки. Решать ее можно, но это готовить таблицы пересчета размеров для различных шрифтов, потом все масштабировать... Признаться кажется, что возни многовато, для мелкого желания сделать приятное теткам, с учетом распределенной базы куча разных терминал-серверов, есть и линукс.
Поэтому спасибо за предложенную идею, но пока ищется менее трудоемкое решение.
4. Ёпрст 1064 06.02.09 12:29 Сейчас в теме
(3) дык в самом отчете и пропиши через сендкей нажатие на Вид - Масштаб - 200% после формирования таблицы, для нужных юзверей.. :)
5. Ёпрст 1064 06.02.09 12:29 Сейчас в теме
+4 И это не тоже самое, что через Сервис-параметры...
6. Ёпрст 1064 06.02.09 12:30 Сейчас в теме
+5 Это то, что нужно слеповатым юзверям, и форматирование как надо.
7. Ёпрст 1064 06.02.09 12:33 Сейчас в теме
  Таб.Показать("");
  wshShell = createObject("WScript.Shell");
  

  wshShell.sendKeys("%");
  wshShell.sendKeys("{right 3}");
  wshShell.sendKeys("~");
  wshShell.sendKeys("{down 7}");
  wshShell.sendKeys("~");
  wshShell.sendKeys("{down 5}");
  wshShell.sendKeys("~");
     

  wshShell.sendKeys("%");
  wshShell.sendKeys("{down 7}");
  wshShell.sendKeys("~");
Показать
8. vcv 89 06.02.09 12:42 Сейчас в теме
(7) Гм. Ну если ты утверждаешь, что оно работает, попробую. Хотя мои когда-то бывшие эксперименты с sendKeys уперлись в то, что нажатия посылались не в окно 1С, а в текущее открытое окно. Или вообще непонятно куда. Когда сделал в одной конфиге при начале работы открытие нужного журнала с разворотом на полный экран, работало ненадежно. Если открывать 1С и ждать когда откроется, все было нормально. Если запустить по F11 из конфигуратора и, пока она там грууууузится, медитировать над конфигуратором, никакого разворота на полный экран не происходило.
9. Ёпрст 1064 06.02.09 13:17 Сейчас в теме
(8) последние 3 строчки - не надо, это для предварительного просмотра..
10. CheBurator 3125 07.02.09 04:21 Сейчас в теме
хм.. а положить на глобальную панель кнопку, при нажатии на которую запустится сторонний экзешник, который реализует ЭКРАННУЮ ЛУПУ - пусть тетки через нее смотрят.. прикольно! можно часть только увеличивать!!! нужную в данный момент для просмотра!!!
14. vcv 89 07.02.09 19:09 Сейчас в теме
(10) Шикарный вариант. Можно еще и для безопасности: компьютер за бронированным стеклом, наблюдение за экраном через бинокль и записью изображения (фискальной), управление лазерной указкой.... :-)

(12) Спасибо, наводка хороша. Вот только почему-то не работает нифига. Даже пример из доки по FormEx:
Сервис = СоздатьОбъект("Сервис");
Сервис.SendKeys("%");
Сервис.SendKeys("{LEFT}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{ENTER}");

Правда тут, возможно, Виста виновата, доберусь до сервера, проверю на 2003.

(13) Гм. Надо сильно обдумать. И понять, как бы его вставить так, что бы не сильно перепахивать все отчеты.
11. Abadonna 3962 07.02.09 08:47 Сейчас в теме
1. Полуслепых теток надо гнать с работы, тем более, что время сейчас такое ;)
2. Гарантировать нажатие кнопок только в нужном нам окне можно через ВК
Пример кода из MiracleV8
procedure TMiracleClass.CloseMessWnd;
begin
// проверили, что на переднем плане именно наше окно
if GetForegroundWindow = h1C then begin
// нажали комбинацию для закрытия окна сообщений
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event($5A, 0, 0, 0);
keybd_event($5A, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
end;
end;
где в свою очередь хэндл рабочего в данный момент окна однозначно определяет родной 1С-кий интерфейс:
function TMiracleClass.h1C: Integer;
var wnd: hwnd;
begin
ExtWndsSupport._AddRef;
ExtWndsSupport.GetAppMainFrame(wnd);
RESULT := wnd;
end;
12. Abadonna 3962 07.02.09 09:47 Сейчас в теме
Кстати, тот же Formex однозначно жиманёт кнопки только в нужном окне. А его последние версии даже не требуют регистрации в реестре, так что можно расценивать его как внешний отчет ;)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот