Замена элементов управления формы в vb6 - PullRequest
3 голосов
/ 21 ноября 2011

У нас есть кнопка управления домом, и, откровенно говоря, это отстой. Я хотел бы заменить его, но я не хочу переходить на каждую форму в нашем проекте и удалять / добавлять новый элемент управления. Мне кажется, что если я создам новую кнопку, которая имеет все те же свойства, что и старая, то я должен иметь возможность дать ей то же имя, что и у старой, и просто заменить все ссылочные линии в файлах VBP, чтобы они на новый контроль.

Кто-нибудь пробовал это (еще лучше, вы слышали об инструменте, который сделает это за вас), и если да, то о каких «ошибках» я должен быть настороже?

Спасибо!

Ответы [ 3 ]

7 голосов
/ 21 ноября 2011

Файлы * .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), чтобы быть уверенным, что в частях исходного кода не останется проблем.

Никогда не пробовал.Удачи.

1 голос
/ 25 августа 2016

К принятому ответу можно добавить только один совет.

Если вам нужно заменить любой универсальный VB элемент управления сторонним или пользовательским элементом управления ActiveX, вы должны заменить:

BeginProperty Font

с

BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851}

Пропуск этой команды приводит к ошибке времени выполнения 713 при попытке редактировать / открыть форму.

Если в блоке нет оператора BeginProperty, тогда элемент управления использует шрифт по умолчанию, и эта замена не требуется.

0 голосов
/ 07 ноября 2018

Дополнительный сценарий, который нужно искать, - это ссылки на классы в OCX непосредственно в коде.

Другими словами, если класс управления был ABCButton, тогда вам нужно искать ABCButton во всех .BAS и .CLS файлах и вносить соответствующие изменения.

...