#0
by Nervosa
Здравствуйте? Скажите, пожалуйста, можно ли в 1С программно создавать кнопки(задавая их размер, положение и т.д.) и если да, то как? Заранее спасибо.
#8
by Nervosa
- Мда, вот я так и понял, что нужно качать эту компоненту. А без неё никак? То есть стандартными средствами?
#16
by Ёпрст
и че ? в той версии ДобавитьАтрибут не было никогда. ДобавитьАтрибут - метод formex.dll
#18
by truba
а еще можно без плюсов и формекса насоздавать кнопки заранее а потом только определять их видимость а еще можно при загрузке на кнопку вешать разные названия и обрабатывать нажатие ее по условию да много чего еще можно если не зацикливаться
#19
by Nervosa
- Мда, насчёт создания кнопок заранее думал, но решил, что как-то это не по-спортивному. Теперь вот не знаю что лучше...
#21
by truba
ну вот изврат: На форме десять предопределенных кнопок. Все скрыты Все обращаются на одну и ту же процедуру НажатиеКнопки Перед открытием определяешь количество показываемых кнопок и их названия В НажатиеКнопки исполняется код в зависимости от названия нажатой кнопки. Почти универсальный механизм без плюсов.
#22
by Nervosa
Хммм...Ну в общем я решил воспользоваться формэксом, но тут же возникла проблемка. Делаю так - А мне вместо кнопки (да и любого другого атрибута) всё время создаётся поле для ввода даты. В чём дело, не подскажете?
#27
by palpetrovich
дык, ясен пень, ты ДобавитьАтрибут попробуй :) ps чисто отметь ветку, ничего личного :)
#31
by Nervosa
- als-ка спасла))) А то в doc'е какая-то ерунда написана. Ну и раз уж я опять тут, то такой вопрос - удалить созданный атрибут нельзя? Только Видимость в 0, как я понял((
#32
by trdm
>> Мда, вот я так и понял, что нужно качать эту компоненту. А без неё никак? нефига ты не понял. компоненты поому и пишутся что без неё иногда никак.
#34
by Ёпрст
да. Можно только через дюнаврап какой-нить, например. Проще проверить, есть ли такой контрол ужо, если нет - создать.
#37
by Nervosa
- уффф, долговато объяснять) Сейчас уже просто надо бы как-то научиться удалять кнопки.
#40
by Nervosa
Господа, так что же это за ДЮНАВРАП такой, с помощью которого я, вероятно, смогу удалять кнопочки????
#45
by Nervosa
Блин, уже который час бьюсь - dll-ку зарегистрировал, а всё равно выдаётся ошибка "Ошибка при создании объекта из компоненты C:Program Files1Cv77BINdynwrapx.dll (отсутствует CLSID)", что, видимо, тянет за собой "Wrap.Register("KERNEL32.DLL", "DeleteObject"); {Документ.ДобавлениеКнопки.Форма.Модуль}: Неизвестная ошибка". Код такой: Может в курсе кто-нибудь, где собака зарыта?
#50
by Nervosa
Кл - переменная, в которую передаётся Windows-класс созданной кнопки. Вот же - Кл = НовыйАтрибут.Класс;
#52
by Nervosa
- стал делать через GDI32 и вместо Класса передаю Дескриптор - ошибки перестали выскакивать, но кнопка чего-то не удаляется.
#55
by Nervosa
Если верить хэлпу по форэксу - Дескриптор Синтаксис: Дескриптор Назначение: получение HWND окна формы и вот этому описанию - DeleteObject Описание Удаляет Handle из памяти и освобождает связанные с ним pесуpсы системы. Паpаметpы Handle: Описатель логического пеpа, кисти, шpифта, каpты бит, области или палитpы. Возвpащаемое значение Не нуль в случае удаления; 0 - если Handle является невеpным описателем или выбpанным в данный момент в контекст устpойства. Чорт, где ж тогда правильный дескриптор искать???((( Или функцию другую юзать...
#56
by andrewks
эх, давно я winapi не юзал.... лет эдак 10. но сдаётся мне, что нужно этому хэндлу послать что-нить типа WM_DESTROY
#58
by andrewks
Function DeleteObject(Handle: THandle): Bool; Handle: Описатель логического пеpа, кисти, шpифта, каpты бит, области или палитpы. нет окон. это не та функция. дестроить надо
#59
by andrewks
не пропадай только, результат не забудь запостить, а то интересно уже стало, а самому попробовать некогда :-)
#62
by Torquader
Нужно функцию DestroyWindow - она удалит окно, но ресурсы, задействованные для его "поддержки" со стороны 1С останутся. P.S. при помощи этой "магической" функции удавалось даже диалоги Windows "раздевать", чтобы пользователи чего-то лишнего не нажали.
#64
by Nervosa
В общем пока такое - В Кл находится атрибут созданной кнопки под названием Дескриптор. Если верить хэлпу, то оно представляет собой "HWND окна формы". Таким образом, что мы имеем? Обратно на основной слой мы возвращаемся, но при попытке заново создать кнопку на слое "ВыборШВ" или просто хотя бы его посмотреть у меня вылетает 1С !!! То есть, как я понял, DestroyWindow удаляет слой. Вот как-то так.
#65
by andrewks
"То есть, как я понял, DestroyWindow удаляет слой" - нет, скорей всего не так. просто, видимо, 1С не в курсах, что кнопку уже удалили, и при попытке обращения к данному объекту терпит крах. в общем, Альф нужён, может он соблаговолит рассказать, как он "объясняет" 1сине про новые элементы формы, также можно "объяснить" и про удаление, по идее
#67
by Nervosa
- окей, объясню. Есть форма, на ней два слоя. На первом N-ное количество кнопок, по нажатию на каждую из них показываем второй слой, где на основе таблицы будет формироваться РАЗНОЕ количество кнопок с РАЗНЫМИ заголовками, которые. То есть и количество кнопок, и их заголовки формируются из этой таблицы.
#69
by Nervosa
- А, ну и надо иметь возможность вернуться на предыдущий "экран"(т.е. слой), удаляя эти кнопки. - в общем-то можно и так сказать.
#70
by FN
А открыть вторую обработку в модальном режиме и уже в ней построить кнопки - такой вариант не катит? при закрытии формы кнопки удаляются корректно и происходит возврат на прошлый "слой"
#71
by FN
+ при этом можно устанавливать размеры "второго слоя" в зависимости от кол-ва кнопок. например как тута: - это я типа таск-менеджер для 1С делал. Открывать только при наличии нескольких окон, открытых в 1С.
#72
by АЛьФ
2 Достаточно заранее создать побольше кнопок на невидимом слое и в нужный момент переносить на твой второй слой, располагая в нужных местах. Ненужные убирать на невидимый слой. Кнопок-то ограниченное количество.
#73
by Nervosa
- насоздавать кнопок я-то успею)) А вот чтоб создавать их и удалять(точнее уже только удалять) - до этого пытаемся докопаться.
#75
by FN
да не надо их удалять. Сделай списокзначений созданных кнопок, при возврате на первый слой - делай всем видимость, при построении второго слоя - бери кнопки из списка (если не хватает - создавай еще) меняй координаты, размеры, заголовки. Тут кода 10-20 строк
#76
by АЛьФ
2 Не получится. В все правильно написано. Кнопка - это (условно говоря) документ-вид. Ты удаляешь только вид, а документ остается "висеть". Для 1С этот объект все еще существует. И она пытается к нему обратиться. Ну, можешь попробовать перед удалением кинуть удаляемую кнопку на какой-то невидимый слой. Но память будет течь.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Программное создание колонок в табличной части документов
- Программное определение размера БД в SQL
- Программное заполнение реквизитов справочника
- v7: Программное создание документа "Поступление товаров услуг"
- УФ: динамическое создание кнопок со стандартными командами формы
- v7: Программное создание документа 1с 7.7
- Программное создание кнопок
- УТ 11 Программное создание установки цен номенклатуры
- УФ - Создание документа, программное заполнение и открытие формы
В этой группе 1С
- Как вывести диаграмму сразу на рабочий стол 8.2?
- Как в СКД сделать группировку по названию ресурса?
- Отчет по проводкам
- Разное время выполнения запроса в консоли и документе
- Права доступа к внутренним документам в 1С:Документооборот
- Накопительный итог в запросе
- Значение поля IDJOURNAL в 1SJOURN.DBF
- 2 цены на ценнике
- Объект "Граница" через СОМ-соединение 1С 8.1
- Копирование номенклатуры
- Размещение платформы 1С: терминал или локальные машины
- использование своих функций в СКД
- Как перебрать элементы подчиненного справочника из формы владельца?
- Удаленная работа по УТ 8
- SMTP error code 501, 5.1.3 Bad recipient address syntax
- Можно-ли в Настройках СКД убрать из Доступных полей Отбора "ПараметрыДанных"?
- Подразделения в СКД
- Обмен данными УТ11 -> БП 2.0
- Надписи в диаграмме Ганта
- УТ 10.3 Списание партий расходным ордером -для чего?