powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Баг и мешанина с хоткеями
33 сообщений из 33, показаны все 2 страниц
Баг и мешанина с хоткеями
    #38698709
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема тянется довольно давно, вплоть до версии 2014.4.4.1 точно. В окнах просмотра полей таблиц периодически перестают действовать хоткеи удаления. Баг воспроизводится прямо сразу при открытии свойств таблицы. При этом если вызвать контекстное меню на гриде полей и закрыть его, никакого действия не выполняя, хоткей "оживает". Если поле этого перейти на другую вкладку и вернуться, хоткей снова умирает.

Что касается мешанины - одни и те же действия над разными объектами завязаны на разные хоткеи.
Объекты базы удаляются по Ctrl+Del
Поля таблиц - по Shift+Del
Ключи и индексы - по Del
Записи - по Ctrl+Del, причем это вообще, кажется, заслуга DBGrid-а, а не самого IBE, поскольку данная возможность нигде в интерфейсе не обозначена.

А в сборном гриде с объектами БД (домены, генераторы и т.п.) тоже много загадок:
- В контекстном меню нет пунктов "удалить/создать" (кроме списка исключений - есть удаление, но там пункт в самом низу, тогда как в меню для полей таблиц - наверху)
- В списке доменов контекстного меню нет вообще
- В списке исключений удаление по Ctrl-Del, а в списке генераторов - по Shift+Del

Кстати, индексы из формы свойств таблицы удаляются вообще без подтверждения.

В общем, было бы отлично всё привести к единообразию
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #38699364
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Баг попробую поправить, а шорткаты трогать не буду.
Кого мешанина нервирует - тот идет в Tools | Localize IBExpert и меняет неугодные шорткаты на свои.
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #38699524
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Окей, сейчас попробую, а насчет меню что думаешь? Вроде бы несложно исправляется, зато пользы от единообразия много
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #38699598
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм, счастья не получилось.
Во-первых, при вызове через Tools | Localize IBExpert хоткеи редактировать нельзя - нет соответствующего edit
Во-вторых, открыв эту форму через системное меню дочерней формы, я не увидел большинства команд, показанных на первом шаге, например, Drop domain, drop table и т.д.
В-третьих, edit хоткея обычный Del ни с каким модификатором ввести не дает, сбрасывая хоткей на "Нет". Удалось ввести только Num Del. Однако после этого данный хоткей вообще не работает. Думал вручную подправить на Del, но так и не нашел, где IBE хранит измененные хоткеи
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #38699858
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

Ну, значит, не судьба. Не знаю, почему там Ctrl+Del не вводится и разбираться сейчас не буду.
Шорткаты хранятся в IBExpert.lng, в профиле пользователя, в виде целого числа.
Баг поправил.
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #38700079
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению, проблема в косорукости MS . Простого решения никто пока не нашел.
А в каком формате этот lng?
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #38700269
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalА в каком формате этот lng?

В своем собственном.
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #38700658
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну что ж, ясно. Менять не желаем, средства настройки нефункциональны, о формате настроек не расскажем. По крайней мере, баг исправлен, и на том спасибо
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #38701158
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

Послушай, чтобы выяснить, как хранятся данные в lng-файле, достаточно заглянуть в него и потратить несколько минут на осмысление увиденного.
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #38701934
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

Ну что строки хранятся в виде "Длина:Строка" - это понятно. В начале файла - что-то вроде индекса, да? А вот сами хоткеи я что-то там так и не разглядел ;(

P.S. Это мне вчера ночью нечего делать было ;)
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #38702029
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterНу что строки хранятся в виде "Длина:Строка" - это понятно. В начале файла - что-то вроде индекса, да? А вот сами хоткеи я что-то там так и не разглядел ;(


Непосредственно перед двумя байтами длины строки идут два байта (WORD) шортката.
В начале файла - заголовок и индекс.
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #38702108
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

Ага, спасибо. Будет вам редактор хоткеев врокости ;)
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #38702245
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterАга, спасибо. Будет вам редактор хоткеев врокости ;)

А смысл? Проще ibec_ функцию сделать, которая будет модифицировать хоткей по ID.
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #38702299
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

Ну вообще-то я сторону IBEC/плагина и думал. Хотя мне это нужно как прошлогодний снег ;)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Баг и мешанина с хоткеями
    #40002288
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не прошло и десяти лет, как я снова наткнулся на эту бесячесть. В программе в этом плане ничего не поменялось :(
После многочасового сношания выяснилось, что теперь %AppData%\Roaming\HK-Software\IBExpert\IBExpert.lng хоть и сохраняет изменения, сделанные в интерфейсе, но не читает их, а действительно используемые шорткаты хранятся в файле IBExpert.scm. Кроме того, теперь шорткат хранится в двух байтах: если настроить действие Dr&op Database на Ctrl-1, то в файле IBExpert.lng увидим

00 00 31 40 0E 00 Dr&op Database

00 00 - это непонятно что
31 40 - "1" и $40, то есть ssCtrl, в старшем полубайте
0E 00 - длина строки, 14

Ну и в IBExpert.scm меняется соответственно.
Отсюда порядок действий.
1. Через системное меню всех дочерних окон, где требуется изменить шорткаты (у каждого окна свой набор) (вверху-слева, нажать иконку IBE - Localize / change shortcuts) вызвать диалог локализации, выставить его у нужных действий на простое сочетание, тот же Ctrl-1. Я менял в 4 местах: сборные списки доменов (Drop domain), генераторов и иключений (Delete) и полей таблицы (Drop field). В остальных местах работает Del, а в дереве объектов - Ctrl-Del.
2. Выйти из IBE
3. Открыть %AppData%\Roaming\HK-Software\IBExpert\IBExpert.scm в hex редакторе
4. Найти все вхождения "1@" / "$31 $40" (это Ctrl-1) и заменить их на нужное сочетание. Я сделал "2E 00", это Del без модификаторов, для единообразия с уже имеющимися клавишами (в списках ключей и индексов).
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #40002290
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получившийся scm файл
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #40002385
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

Ты чего сказать-то хотел??
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #40002431
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert
Ты чего сказать-то хотел??

1. Поделиться актуальным рабочим рецептом ручного редактирования шорткатов
2. Похвастаться, какой я умный, что разобрался в шайтан-системе
3. Еще раз намекнуть, что проблема таки есть, причем совершенно элементарно решаемая на уровне программы
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #40002766
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal

1. Поделиться актуальным рабочим рецептом ручного редактирования шорткатов


Зачем их hex-редактором редактировать, если их можно редактировать в форме локализации?
А еще есть ibec_ibe_SetLngShortcut.

Fr0sT-Brutal

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


Что за проблема? Ты в этой теме их как минимум три озвучил, и они друг с другом никак не связаны.
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #40003242
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert

Зачем их hex-редактором редактировать, если их можно редактировать в форме локализации?

Можно, да нельзя. Все сочетания с Del просто сбрасывают шорткат (4й пост в теме)
IBExpert
А еще есть ibec_ibe_SetLngShortcut.

Вот это погляжу. Честно искал ее в списке, т.к. в тот раз шла речь, но было сложно догадаться, что ее надо смотреть в разделе DB functions :)
IBExpert

Что за проблема? Ты в этой теме их как минимум три озвучил, и они друг с другом никак не связаны.

Проблема в разношерстности шорткатов. Были б однотипными, лезть в унутрь и не пришлось бы
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #40003469
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то не выходит чаша с функцией. Только один раз как-то сработала, потом никак.

Функция работает только в следующем виде:
1 - запускаем скрипт
Код: sql
1.
2.
3.
4.
5.
6.
execute ibeblock
as
begin
  Res = ibec_ibe_SetLngShortcut(1019, 'Shift+Alt+D');
  ibec_ShowMessage(res);
end;


2 - вызываем форму Localize
3 - закрываем форму Localize

Тогда шорткат появляется. Но в любом случае изменения не сохраняются, т.е. это только если в After start писать
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #40003505
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
Но в любом случае изменения не сохраняются, т.е. это только если в After start писать


Так и задумано. Это меняет шорткат только в текущей сессии, и оно должно быть в after start.
А зачем тебе сохранять изменения?

Fr0sT-Brutal

2 - вызываем форму Localize
3 - закрываем форму Localize


Ну все правильно, при закрытии этой формы происходит обновление локализованных строк и шорткатов во всех остальных открытых формах эксперта. Просто дернуть ibec_ibe_SetLngShortcut в SQL-редакторе для этого недостаточно.
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #40003526
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert
Так и задумано. Это меняет шорткат только в текущей сессии, и оно должно быть в after start.
А зачем тебе сохранять изменения?

Я бы скорее задал вопрос, зачем менять шорткат только в текущей сессии.
IBExpert

Ну все правильно, при закрытии этой формы происходит обновление локализованных строк и шорткатов во всех остальных открытых формах эксперта. Просто дернуть ibec_ibe_SetLngShortcut в SQL-редакторе для этого недостаточно.

Ну, в таком виде, кмк, смысл от функции практически нулевой... По крайней мере, разумного сценария ее применения мне в голову не приходит
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #40003543
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal

Я бы скорее задал вопрос, зачем менять шорткат только в текущей сессии.


Ты дурака включил что-ли? Перед началам каждой сессии выполняется скрипт after start и блок событий after start.
Прописал один раз и забыл.
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #40003566
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert
Ты дурака включил что-ли? Перед началам каждой сессии выполняется скрипт after start и блок событий after start.
Прописал один раз и забыл.

Это я понял. Непонятно, зачем в приципе менять шорткаты только в текущей сессии. Разве что для мультиюзерности, но изменения и так сохраняются в профиле
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #40003578
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
Непонятно, зачем в приципе менять шорткаты только в текущей сессии.


Потому что это просто, и решает твою проблему, например. И живут эти скрипты/блоки в user database, а не в каком-то scm-файле, про который даже я забываю.
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #40003613
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert
Потому что это просто, и решает твою проблему, например. И живут эти скрипты/блоки в user database, а не в каком-то scm-файле, про который даже я забываю.

Ну а кто ж заставлял делать эти странные scm файлы ))) жили б настройки в виде текста в базе, проблем было б намного меньше. Ну да ладно. Мне не в лом сделать стартовый скрипт. Тем более что он, судя по всему, запускается до применения шорткатов, и в итоге меняет их как и ожидалось.
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #40003629
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё работает, метод хоть и странный, но задачу выполняет, я доволен вполне.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
-- Стартовый скрипт для настройки
execute ibeblock
as
begin
  -- ## Меняем шорткаты для некоторых действий удаления на единообразные (Delete) ##
  -- 1652 Drop/delete domain
  -- 1809 Delete (generators)
  -- 1628 Delete (exceptions)
  -- 1710 Drop/delete field
  ShortCutCodesStr = '1652;1809;1628;1710';
  ShortCutCodes = ibec_Explode(';', ShortCutCodesStr);
  for i = 0 to ibec_High(ShortCutCodes) do
  begin
    Res = ibec_ibe_SetLngShortcut(ibec_Cast(ShortCutCodes[i], __typeInteger), 'Del');
    if (Res = 0) then
    begin
      ibec_ShowMessage('ibec_ibe_SetLngShortcut вернула ошибку');
      Break;
    end;
  end;

end;
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #40003787
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal

Ну а кто ж заставлял делать эти странные scm файлы ))) жили б настройки в виде текста в базе, проблем было б намного меньше.


Прикинь, это делалось еще тогда, когда никакой "базы" и в помине не было. Как бы не двадцать лет назад...
Тебя тогда рядом не оказалось, поэтому наставить на путь истинный было просто некому.
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #40003789
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
Всё работает, метод хоть и странный


Гы. Четыре последовательных вызова ibec_ibe_SetLngShortcut безо всяких извращений - слишком просто для настоящего джедая?
И эти люди запрещают нам ковыряться в носу...
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #40003834
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert
Прикинь, это делалось еще тогда, когда никакой "базы" и в помине не было. Как бы не двадцать лет назад...
Тебя тогда рядом не оказалось, поэтому наставить на путь истинный было просто некому.

Ну чего ты в бутылку лезешь? Если бы все оправдывали легаси исключительно тем, что было раньше, все до сих пор бы жили в пещерах.
IBExpert
Гы. Четыре последовательных вызова ibec_ibe_SetLngShortcut безо всяких извращений - слишком просто для настоящего джедая?
И эти люди запрещают нам ковыряться в носу...

Не люблю дублирования. И я бы рад сделать через массив интов, но возможности его объявить я не нашел
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #40003868
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
Если бы все оправдывали легаси исключительно тем, что было раньше, все до сих пор бы жили в пещерах.


Оно работает? Работает. То, что кого-то такая реализация не очень устраивает, еще нифига не повод все переделывать. И все не так просто, как тебе оттуда кажется.

Fr0sT-Brutal

Не люблю дублирования. И я бы рад сделать через массив интов, но возможности его объявить я не нашел


Да делай как хочешь, мне все равно. Только не рассказывай мне, как надо было делать 20 лет назад. Я задним умом тоже офигенно крепок.

А массив создать очень просто:
Код: plsql
1.
ShortCutCodes = ibec_Array(1652, 1809, 1628, 1710);
...
Рейтинг: 0 / 0
Баг и мешанина с хоткеями
    #40003883
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert
Оно работает? Работает. То, что кого-то такая реализация не очень устраивает, еще нифига не повод все переделывать. И все не так просто, как тебе оттуда кажется.

Да делай как хочешь, мне все равно. Только не рассказывай мне, как надо было делать 20 лет назад. Я задним умом тоже офигенно крепок.

А массив создать очень просто:
Код: plsql
1.
ShortCutCodes = ibec_Array(1652, 1809, 1628, 1710);


Слушай, ну вот зачем так ершиться? Насчет файла я без претензий и наездов, там смайлик специально стоит. И конкретно эта штука мне никоим образом не мешает. Все имеют дело со старым софтом, у всех самые разные ситуации бывают.
Вот за функцию спасибо! Сложно догадаться искать её в разделе Dataset. Итоговый вариант:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
-- Стартовый скрипт для настройки
execute ibeblock
as
begin
  -- ## Меняем шорткаты для некоторых действий удаления на единообразные (Delete) ##
  -- 1652 Drop/delete domain
  -- 1809 Delete (generators)
  -- 1628 Delete (exceptions)
  -- 1710 Drop/delete field
  ShortCutCodes = ibec_Array(1652, 1809, 1628, 1710);
  for i = 0 to ibec_High(ShortCutCodes) do
  begin
    Res = ibec_ibe_SetLngShortcut(ShortCutCodes[i], 'Del');
    if (Res = 0) then
    begin
      ibec_ShowMessage('ibec_ibe_SetLngShortcut вернула ошибку');
      Break;
    end;
  end;

end;
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Баг и мешанина с хоткеями
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]