Замена элементов управления формы в vb6
У нас есть кнопка управления в доме, и, откровенно говоря, это отстой. Я хотел бы заменить его, но я не хочу переходить на каждую форму в нашем проекте и удалять / добавлять новый элемент управления. Мне кажется, что если я создаю новую кнопку, которая имеет все те же свойства, что и старая, то я должен иметь возможность дать ей то же имя, что и у старой, и просто заменить все ссылочные линии в файлах VBP, чтобы они указывали на новый контроль.
Кто-нибудь пробовал это (еще лучше, вы слышали об инструменте, который сделает это за вас), и если да, то что я должен искать?
Спасибо!
3 ответа
Файлы *.vbp - это то место, которое вам нужно изменить. В файлах, содержащих графические интерфейсы, есть также ссылки на используемые библиотеки элементов управления - это файлы формы (*.frm), элемента управления (*.ctl) и страницы свойств (*.pag). Эти файлы в текстовом формате, и вы можете увидеть ссылки в верхней части. Они выглядят так:
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "mscomctl.ocx"
Эти ссылки необходимо будет добавить или обновить во всех соответствующих файлах, если новый элемент управления представляет собой скомпилированный OCX. Если он находится в том же проекте, я не думаю, что он нуждается в какой-либо ссылке, и если он находится в другом проекте в той же группе проектов, я не уверен. Сохраните тестовую форму с новым элементом управления, чтобы увидеть.
Обратите внимание, что вам не нужно сохранять одинаковое имя класса управления. Внутри файлов *.frm / ctl / pag экземпляры отдельных элементов управления для них представлены в простом формате, подобном следующему:
Begin VB.CommandButton Command2
Caption = "Cancel"
Height = 375
Left = 2460
TabIndex = 1
Top = 2400
Width = 1455
End
Синтаксис первой строки: "Begin LibraryOrProjectName.ClassName NameOfThisInstance". Таким образом, при условии, что имя нарушающего элемента управления является отличительным, должно быть легко искать и заменять ссылки на него как в BASIC-источнике, так и в макетах GUI. Вам может понадобиться простой текстовый редактор, который может выполнять поиск и замену по нескольким файлам (Notepad++ - один из них).
Некоторые управляющие свойства хранятся так:
Picture = "frmMain.frx":292F
Они соответствуют файлам *.frx, *.ctx и *.pgx, которые содержат двоичные данные для значений определенных свойств элемента управления. Я не думаю, что эти файлы должны быть изменены или вызвать какие-либо проблемы. Они не содержат контрольных имен.
Используйте полную компиляцию (Ctrl+F5), чтобы убедиться, что в частях исходного кода не останется проблем.
Никогда не пробовал. Удачи.
К принятому ответу можно добавить только один совет.
Если вам нужно заменить какой-либо общий элемент управления VB сторонним или пользовательским элементом управления ActiveX, вы должны заменить:
BeginProperty Font
с
BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Отсутствие этого приводит к ошибке времени выполнения 713 при попытке отредактировать / открыть форму.
Если в блоке нет оператора BeginProperty, тогда элемент управления использует шрифт по умолчанию, и эта замена не требуется.
Дополнительный сценарий, который нужно искать, - это ссылки на классы в OCX непосредственно в коде.
Другими словами, если класс управления был ABCButton
тогда вам нужно искать ABCButton
в целом .BAS
а также .CLS
файлы, а также внести соответствующие изменения.