не все контролы в стиле XP

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
retivykh
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 14.03.2010 (Вс) 23:17

не все контролы в стиле XP

Сообщение retivykh » 14.03.2010 (Вс) 23:41

Здравствуйте!
Для создания стиля XP применил манифест в соответсвии с http://support.microsoft.com/?kbid=309366. Большинство контролов стало как в XP. Но TabStrip, ToolBar и меню какие-то не XP-шные. Почему? Можно ли и эти контролы сделать в стиле XP? Если можно, то как?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: не все контролы в стиле XP

Сообщение MIT » 15.03.2010 (Пн) 8:12

Надо использовать не MS Common Control 6, а MS Common Control 5, в шестой версиии не все контролы системные.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

retivykh
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 14.03.2010 (Вс) 23:17

Re: не все контролы в стиле XP

Сообщение retivykh » 15.03.2010 (Пн) 9:37

Как?
Попробовал два способа:
1. Попробовал в VB (Project->Componets). Получил сообщение "Can't remove control or reference; in use". У меня в проекте около сотни форм. Ка быть?

2. Поробовал в манифесте изменить
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
на
version="5.0.0.0"

При запуске программы, сообщение:
Приложение не было запущено, поскольку оно некорректно настроено


Что делаю не так?

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: не все контролы в стиле XP

Сообщение Денис » 15.03.2010 (Пн) 10:00

retivykh писал(а):У меня в проекте около сотни форм.


Ай хэв бэд ньюс фор ю. :(
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

retivykh
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 14.03.2010 (Вс) 23:17

Re: не все контролы в стиле XP

Сообщение retivykh » 15.03.2010 (Пн) 10:05

Денис писал(а):Ай хэв бэд ньюс фор ю. :(

Вай?

И до того как мы окончательно перейдем на английский хотелось бы узнать чем может аукнуться переход на XP стиль в среднего размера проекте? :)

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: не все контролы в стиле XP

Сообщение Денис » 15.03.2010 (Пн) 10:14

retivykh писал(а):хотелось бы узнать чем может аукнуться переход на XP стиль в среднего размера проекте?


Сделал тестовый проектик. Смотри. Сначала подрубаешь в референсах библиотеку версии 5. После чего, всё сохраняшь и открываешь файлы форм блокнотом (ну или truehaxorpad'ом у кого что)
Код: Выделить всё
VERSION 5.00
Object = "{6B7E6392-850A-101B-AFC0-4210102A8DA7}#1.3#0"; "COMCTL32.OCX"
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Begin VB.Form Form1
   Caption         =   "Form1"
   ClientHeight    =   3105
   ClientLeft      =   60
   ClientTop       =   435
   ClientWidth     =   4680
   LinkTopic       =   "Form1"
   ScaleHeight     =   3105
   ScaleWidth      =   4680
   StartUpPosition =   3  'Windows Default
   Begin MSComctlLib.ProgressBar pbV6
      Height          =   375
      Left            =   240
      TabIndex        =   1
      Top             =   960
      Width           =   3255
      _ExtentX        =   5741
      _ExtentY        =   661
      _Version        =   393216
      Appearance      =   1
   End
   Begin ComctlLib.ProgressBar pbV5
      Height          =   375
      Left            =   240
      TabIndex        =   0
      Top             =   120
      Width           =   3255
      _ExtentX        =   5741
      _ExtentY        =   661
      _Version        =   327682
      Appearance      =   1
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit


Вот пример кода с двумя прогресс барами на форме один 5-ой версии, второй 6-ой. После этого заменяем в контроле pbV6 слово MSComctlLib на слово ComctlLib. У меня срабатывало. После сохранения текста и запуска проекта в VB бывший 6-ой прогрессбар становился версией 5.
Таким образом, ты (ДЕЛАЕШЬ БЭКАП!!!) проходишься блокнотом по всем своим формам и в сухом остатке имеешь 75% заманифесченных контролов вместо 50%
Последний раз редактировалось Денис 15.03.2010 (Пн) 10:27, всего редактировалось 1 раз.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: не все контролы в стиле XP

Сообщение iGrok » 15.03.2010 (Пн) 10:26

retivykh писал(а):Вай?

Бикоз "по-хорошему" всё это придётся менять ручками. Причём не только сами контролы, но и часть кода, которая на них завязана.

Денис, видимо, смотрит можно ли это хоть как-то автоматизировать, а я сразу скажу, что если и можно, то далеко не всё, т.к. у них частично не совпадают интерфейсы а иногда и логика работы с контролом.

Т.е. переход на стиль XP в среднего размера проекте в твоём случае может аукнуться переписыванием где-то трети проекта..

Сорри фор вери бэд ньюс.
label:
cli
jmp label

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: не все контролы в стиле XP

Сообщение Денис » 15.03.2010 (Пн) 11:21

И еще стоит заметить, что для оставшихся контролов, которые никак не поддаются, существует три общеупотребительных метода:

    1. Декларирование системных контролов через API;
    2. Скачивание готовых контролов из сайтов с контролами;
    3. Рисование своих контролов, ручками.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: не все контролы в стиле XP

Сообщение Хакер » 15.03.2010 (Пн) 14:32

переписыванием где-то трети проекта..

Да ну, если в проекте сто форм, думается, доля кода, которые предназначена не для дёргания контролов, несколько больше, чем 2/3.

Так вот. Предлагается сделать свою обёртку над 5-ыми контроллами, которая будет обладать интерфейсом (в смысле набора членов) 6-ой версии. Тогда надо написать лишь одну обёртку, а не править код в ста формах. Ручная замена по методу, предложенному Денисом, тогда пройдёт незаметно.

Где там у нас тот человек, который спрашивал о предназначении обёрток?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: не все контролы в стиле XP

Сообщение Денис » 15.03.2010 (Пн) 14:40

Хакер писал(а):Ручная замена по методу, предложенному Денисом, тогда пройдёт незаметно.


Так чтоли?
Денис писал(а):После этого заменяем в контроле pbV6 слово MSComctlLib на слово ИмяОбёртки.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: не все контролы в стиле XP

Сообщение Хакер » 15.03.2010 (Пн) 14:44

Ну примерно.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: не все контролы в стиле XP

Сообщение iGrok » 15.03.2010 (Пн) 17:07

Хакер писал(а):...думается, доля кода, которые предназначена не для дёргания контролов, несколько больше, чем 2/3...

Ну это если всё грамотно разрабатывалось изначально. А то пришлось мне как-то один проект поддерживать... Там почти вся логика была завязана именно на контролы. Типа использования Text1 вместо строковой переменной и т.п. =)
Вот если бы его пришлось переносить на другую версию контролов, я бы там на шнурке от мыши и повесился. )
Слава богу он уже больше не жилец. )

А насчёт обёртки - это я не подумал. Действительно, отличный вариант.
label:
cli
jmp label

retivykh
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 14.03.2010 (Вс) 23:17

Re: не все контролы в стиле XP

Сообщение retivykh » 15.03.2010 (Пн) 18:01

Хакер писал(а):Так вот. Предлагается сделать свою обёртку над 5-ыми контроллами, которая будет обладать интерфейсом (в смысле набора членов) 6-ой версии.

Как делается обертка?
Может быть речь идет о WithEvents?

retivykh
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 14.03.2010 (Вс) 23:17

Re: не все контролы в стиле XP

Сообщение retivykh » 15.03.2010 (Пн) 18:03

Денис писал(а):
    1. Декларирование системных контролов через API;

Как это сделать? Где можно об этом почитать?

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: не все контролы в стиле XP

Сообщение Денис » 15.03.2010 (Пн) 18:42

retivykh писал(а):
Денис писал(а):
    1. Декларирование системных контролов через API;

Как это сделать? Где можно об этом почитать?


Уже есть готовый проект у нас на форуме. поищи ucComCtrl от Antonariy. Эта обертка над системными контролами даже лучше обертки над ax-контролами, которая предлагалась выше.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

retivykh
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 14.03.2010 (Вс) 23:17

Re: не все контролы в стиле XP

Сообщение retivykh » 15.03.2010 (Пн) 19:58

поищи ucComCtrl от Antonariy

Что-то не ищется. Кто-нибудь может указать точнее?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: не все контролы в стиле XP

Сообщение Viper » 15.03.2010 (Пн) 20:02

retivykh писал(а):
поищи ucComCtrl от Antonariy

Что-то не ищется. Кто-нибудь может указать точнее?
В "Наших проектах"
Весь мир матрица, а мы в нем потоки байтов!

retivykh
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 14.03.2010 (Вс) 23:17

Re: не все контролы в стиле XP

Сообщение retivykh » 16.03.2010 (Вт) 15:57

Viper писал(а):"Наших проектах"

В Наших проектах просмотрел все проекты Antonariy до 2006 включительно. Нет похожего ни по названию, ни по смыслу. Господа, помогите

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: не все контролы в стиле XP

Сообщение iGrok » 16.03.2010 (Вт) 18:05

Ну не знает никто, где они на самом деле лежат. Бывает. =)
Ищется по "Common Controls своими руками".
viewtopic.php?f=28&t=36625
label:
cli
jmp label

retivykh
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 14.03.2010 (Вс) 23:17

Re: не все контролы в стиле XP

Сообщение retivykh » 16.03.2010 (Вт) 21:17

Спасибо!
Денис писал(а):Уже есть готовый проект у нас на форуме. поищи ucComCtrl от Antonariy. Эта обертка над системными контролами даже лучше обертки над ax-контролами, которая предлагалась выше.

Попробовал на маленьком проекте.
Подключил в проект ucComCtl2.
Заменил в frmDocument.frm MSComctlLib.TabStrip на ucComCtl2.ucTabStrip.
Запустил проект. Пропали все закладки, которые были на TabStrip1 настроены из VB.
Т.е. не выполнилось из frmDocument.frm
Код: Выделить всё
     BeginProperty Tabs {1EFB6598-857C-11D1-B16A-00C0F0283628}
         NumTabs         =   5
         BeginProperty Tab1 {1EFB659A-857C-11D1-B16A-00C0F0283628}
            Caption         =   "Таб 1"
            ImageVarType    =   2
         EndProperty
         BeginProperty Tab2 {1EFB659A-857C-11D1-B16A-00C0F0283628}
            Caption         =   "Таб 2"
            ImageVarType    =   2
         EndProperty
         BeginProperty Tab3 {1EFB659A-857C-11D1-B16A-00C0F0283628}
            Caption         =   "Таб 3"
            ImageVarType    =   2
         EndProperty
         BeginProperty Tab4 {1EFB659A-857C-11D1-B16A-00C0F0283628}
            Caption         =   "Таб 4"
            ImageVarType    =   2
         EndProperty
         BeginProperty Tab5 {1EFB659A-857C-11D1-B16A-00C0F0283628}
            Caption         =   "Таб 5"
            ImageVarType    =   2
         EndProperty
      EndProperty


В примере ucComCtl2.rar я нашел, что закладки добавляются кодом в Form_Load
Код: Выделить всё
    With ucTabStrip1
        .PageAdd "ListView"
        .PageAdd "TreeView"
    End With

Я что-то делаю не так? Или обертка не вполне соответствует?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: не все контролы в стиле XP

Сообщение Хакер » 16.03.2010 (Вт) 21:41

Обёртка абсолютно не соответствует.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

retivykh
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 14.03.2010 (Вс) 23:17

Re: не все контролы в стиле XP

Сообщение retivykh » 16.03.2010 (Вт) 23:25

Хакер писал(а):Обёртка абсолютно не соответствует.

Это ирония?
Для чего же ее порекомендовали?
Господа! Я не крутой программист на VB. Я больше специалист по логистике. Умею писать прикладные программы, но звезд с неба не хватаю.
Хочу, или хотел, придать приложению более современный вид.
Идея с оберткой понравилась.
Но тонкостей я не понимаю. Чем, например, хороша обертка от Antonariy? Подходит ли она для моего случая? Я не знаю. Подскажите. Вроде же собирались оборачивать, чтобы замена на контролы 5 стала почти механической работой.
Верно ли это предположение сейчас?
И что нужно, чтобы оно стало верно:
нужно использовать обертку Antonariy, но как-то подругому?
нужно как-то доработать обертку Antonariy, чтобы замену провести наименее трудоемко?
нужна другая обертка?
может есть другой путь?

retivykh
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 14.03.2010 (Вс) 23:17

Re: не все контролы в стиле XP

Сообщение retivykh » 16.03.2010 (Вт) 23:40

В конце концов если это единственная проблема, ну пройдусь я по формам и добавлю инициализации ucTabStrip.
С тулбарами, правда сложнее. Они есть во всех формах.
Но если это все проблемы, то ничего страшного - прблема пары дней.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: не все контролы в стиле XP

Сообщение iGrok » 17.03.2010 (Ср) 0:58

Это - просто пример как можно сделать такую "обёртку".
Считай это отправной точкой для разработки. Сам контрол уже готов, тебе остаётся переделать его интерфейс, чтобы не пришлось переделывать проект.

Варианта у тебя всего три:
1) Заменять вручную все контролы с 6й на 5ю версию, и переписывать весь код, который с ними взаимодействует.
2) Написать свою обёртку для каждого из контролов (тулбар, табстрип, и т.п.), взяв за основу код Antonariy, но переделав её интерфейс, максимально приблизив его к интерфейсу 6й версии контролов (это сложнее, чем первый вариант, но быстрее, т.к. кода будет существенно меньше, а твой проект практически не придётся трогать - только то, что настраивается в редакторе придётся заменить на код, впрочем, можно и это учесть в своих контролах, но придётся поработать.)
3) Забить.
label:
cli
jmp label

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: не все контролы в стиле XP

Сообщение Денис » 17.03.2010 (Ср) 8:41

Этим скриптом создаются вложенные элементы:
Код: Выделить всё
     BeginProperty Tabs {1EFB6598-857C-11D1-B16A-00C0F0283628}
         NumTabs         =   5
         BeginProperty Tab1 {1EFB659A-857C-11D1-B16A-00C0F0283628}

Следует позаботиться, чтобы заменитель элемента {1EFB6598-857C-11D1-B16A-00C0F0283628} (здесь Tabs) обладал свойствами контейнера контролов.

И тут к пунктам Игрока можно добавить пункт 4: Заказать обертку в разделе работа :P
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: не все контролы в стиле XP

Сообщение Хакер » 17.03.2010 (Ср) 11:02

Для чего же ее порекомендовали?

Я не рекомендовал.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: не все контролы в стиле XP

Сообщение Денис » 17.03.2010 (Ср) 14:29

Я тоже не рекомендовал (я посоветовал в ответ на вопрос "где об этом почитать").
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: не все контролы в стиле XP

Сообщение Antonariy » 17.03.2010 (Ср) 17:45

Ни в коем случае не 1 и 2. 1 непродуктивно, 2 еще более непродуктивно.

Саме реальное сделать то, что посоветовал Денис. Не беда, что будут несоответствия, главное, что большая часть работы будет сделана автоматически. Сотен форм у меня не было, но несколько десятков такой процедуре однажды были продвергнуты, за день добился того, что проект стал хотя бы компилироваться. Самое большое несоответствие, потребовавшее заметное время на допиливание (пол-дня), — ButtonMenus шестого тулбара, которое переделал на обычные менюшки. Остальные несоответствия заключаются всего лишь в нескольких дополнительных свойствах нескольких объектов в шестерке.
В общем, в сумме получилось дня 3-4.
Лучший способ понять что-то самому — объяснить это другому.

retivykh
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 14.03.2010 (Вс) 23:17

Re: не все контролы в стиле XP

Сообщение retivykh » 29.03.2010 (Пн) 23:17

Спасибо. Решил пока оставить эту затею


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 44

    TopList