Замена элементов управления формы в 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 файлы, а также внести соответствующие изменения.

Другие вопросы по тегам