Что нового

Чёрная строка при использовании checkbox'ов

k790

Новичок
Сообщения
239
Репутация
1
Здравствуйте, имеется проблема с checkbox'ами, на некоторых ОС строка (строки) с этими checkbox'ами становятся чёрными.

Если я не ошибаюсь, то это решалось:
Код:
GUICtrlSetBkColor($Checkbox, $GUI_BKCOLOR_TRANSPARENT)


Подскажите, в чём может быть проблема?

Ссылка на рабочую программу: Autorun USB & HDD_1.4.exe
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
CreatoR [?]
Нужно видеть код с примером проблемы.
Код:
#region ### START Koda GUI section ### Form=D:\Архив\AutoIt\Отключение автозапуска\Form1.kxf
$Form1 = GUICreate($full_name, 423, 267, 315, 173)
$StatusBar1 = _GUICtrlStatusBar_Create($Form1, -1, "Запуск")
$Admin_s = GUICtrlCreateLabel($Admin_ch, 350, 3, 80, 17)
GUICtrlSetTip(-1, "Является ли пользователь администратором")
GUICtrlSetColor(-1, 0x8F8F8F)
GUICtrlSetFont(-1, 8)

Dim $hParent_GUI, $nMainMenu, $nAbout_MenuItem, $aAccelKeys
Dim $sTitle, $sScrollText, $sMainLabel, $sCopyRLabel, $nLinkColor, $nBkColor, $aHyperLinks[4]

$nMainMenu_File = GUICtrlCreateMenu("Файл")
$nFile_MenuItem = GUICtrlCreateMenuItem("Выход", $nMainMenu_File)
$nMainMenu = GUICtrlCreateMenu("Помощь")
$nHepl_MenuItem_update = GUICtrlCreateMenuItem("Проверить обновления", $nMainMenu)
$separator1 = GUICtrlCreateMenuItem("", $nMainMenu) ; create a separator line
$nAbout_MenuItem = GUICtrlCreateMenuItem("О программе...	(F1)", $nMainMenu)

Dim $aAccelKeys[1][2] = [["{F1}", $nAbout_MenuItem]]
GUISetAccelerators($aAccelKeys, $Form1)


$Tab1 = GUICtrlCreateTab(0, 0, 417, 25)
$TabSheet1 = GUICtrlCreateTabItem("HKLM")
GUICtrlSetTip(-1, "Вкладка отвечает за раздел реестра HKEY_LOCAL_MACHINE. Доступен администраторам")
$Button1_HKLM = GUICtrlCreateButton("Запустить", 168, 192, 65, 33)
$Button_ALL_HKLM = GUICtrlCreateButton("Выделить всё", 40, 200, 75, 25)
$Button_update_HKLM = GUICtrlCreateButton("Обновить", 296, 200, 75, 25)

$Checkbox1_HKLM = GUICtrlCreateCheckbox("Отключение автоматического запуска для дисков неизвестного типа", 8, 24, 401, 17)
$Checkbox2_HKLM = GUICtrlCreateCheckbox("Отключение автоматического запуска для съемных носителей", 8, 40, 401, 17)
$Checkbox3_HKLM = GUICtrlCreateCheckbox("Отключение автоматического запуска для несъемных дисков", 8, 56, 401, 17)
$Checkbox4_HKLM = GUICtrlCreateCheckbox("Отключение автоматического запуска для сетевых дисков", 8, 72, 401, 17)
$Checkbox5_HKLM = GUICtrlCreateCheckbox("Отключение автоматического запуска для компакт-дисков", 8, 88, 401, 17)
$Checkbox6_HKLM = GUICtrlCreateCheckbox("Отключение автоматического запуска для электронных дисков", 8, 104, 401, 17)
$Checkbox7_HKLM = GUICtrlCreateCheckbox("Поставить обновление автозапуска от Microsoft (KB967715 | KB950582)", 8, 120, 401, 17)
GUICtrlSetTip(-1, "Без этого обновления отключить функции автозапуска для сетевого диска невозможно. Кроме того, контекстное меню и функция двойного щелчка автозапуска не были бы отключены даже при выполнении указанных ранее инструкций")
$Checkbox8_HKLM = GUICtrlCreateCheckbox("Поставить обновление автозапуска от Microsoft (KB971029)", 8, 136, 401, 17)
GUICtrlSetTip(-1, "Отключает AutoRun на внешних накопителях и оставляет его только на CD и DVD дисках")
$Checkbox9_HKLM = GUICtrlCreateCheckbox("Восстановление значения по умолчанию автоматического запуска", 8, 152, 401, 17)
$Checkbox_Off_all_HKLM = GUICtrlCreateCheckbox("Отключение автоматического запуска для дисков всех типов", 8, 168, 401, 17)
GUICtrlSetBkColor($Checkbox1_HKLM, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($Checkbox2_HKLM, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($Checkbox3_HKLM, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($Checkbox4_HKLM, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($Checkbox5_HKLM, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($Checkbox6_HKLM, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($Checkbox7_HKLM, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($Checkbox8_HKLM, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($Checkbox9_HKLM, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($Checkbox_Off_all_HKLM, $GUI_BKCOLOR_TRANSPARENT)

$TabSheet2 = GUICtrlCreateTabItem("HKCU")
GUICtrlSetTip(-1, "Вкладка отвечает за раздел реестра HKEY_CURRENT_USER")
$Button1_HKCU = GUICtrlCreateButton("Запустить", 168, 192, 65, 33)
$Button_ALL_HKCU = GUICtrlCreateButton("Выделить всё", 40, 200, 75, 25)
$Button_update_HKCU = GUICtrlCreateButton("Обновить", 296, 200, 75, 25)

$Checkbox1_HKCU = GUICtrlCreateCheckbox("Отключение автоматического запуска для дисков неизвестного типа", 8, 24, 401, 17)
$Checkbox2_HKCU = GUICtrlCreateCheckbox("Отключение автоматического запуска для съемных носителей", 8, 40, 401, 17)
$Checkbox3_HKCU = GUICtrlCreateCheckbox("Отключение автоматического запуска для несъемных дисков", 8, 56, 401, 17)
$Checkbox4_HKCU = GUICtrlCreateCheckbox("Отключение автоматического запуска для сетевых дисков", 8, 72, 401, 17)
$Checkbox5_HKCU = GUICtrlCreateCheckbox("Отключение автоматического запуска для компакт-дисков", 8, 88, 401, 17)
$Checkbox6_HKCU = GUICtrlCreateCheckbox("Отключение автоматического запуска для электронных дисков", 8, 104, 401, 17)
$Checkbox7_HKCU = GUICtrlCreateCheckbox("Восстановление значения по умолчанию автоматического запуска", 8, 120, 401, 17)
$Checkbox_Off_all_HKCU = GUICtrlCreateCheckbox("Отключение автоматического запуска для дисков всех типов", 8, 136, 401, 17)
GUICtrlSetBkColor($Checkbox1_HKCU, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($Checkbox2_HKCU, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($Checkbox3_HKCU, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($Checkbox4_HKCU, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($Checkbox5_HKCU, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($Checkbox6_HKCU, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($Checkbox7_HKCU, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($Checkbox_Off_all_HKCU, $GUI_BKCOLOR_TRANSPARENT)

$TabSheet4 = GUICtrlCreateTabItem("Запрет носителей")
GUICtrlSetTip(-1, "Отключение Floppy / CD/DVD / USB")
$Button1_st = GUICtrlCreateButton("Запустить", 168, 192, 65, 33)
$Button_ALL_st = GUICtrlCreateButton("Выделить всё", 40, 200, 75, 25)
$Button_update_st = GUICtrlCreateButton("Обновить", 296, 200, 75, 25)

$cdrom = GUICtrlCreateCheckbox("Отключение CD/DVD привода", 8, 24, 401, 17)
$floppy = GUICtrlCreateCheckbox("Отключение дисковода (floppy)", 8, 40, 401, 17)
$usbst = GUICtrlCreateCheckbox("Отключение USB накопителей", 8, 56, 401, 17)
;$Checkbox_Off_all_st = GUICtrlCreateCheckbox("Отключить все переносимые носители", 8, 136, 401, 17)
GUICtrlSetBkColor($cdrom, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($floppy, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($usbst, $GUI_BKCOLOR_TRANSPARENT)

$TabSheet3 = GUICtrlCreateTabItem("Защита USB / HDD")
GUICtrlSetTip(-1, "Создание на флешке папки autorun.inf, которая удаляется нестандартным способом")
$Group1 = GUICtrlCreateGroup(" Сделать autorun.inf ", 8, 32, 393, 81)
$Button1 = GUICtrlCreateButton("Запуск", 344, 56, 49, 25)
$Combo1 = GUICtrlCreateCombo("", 24, 56, 161, 25, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_SIMPLE, $CBS_AUTOHSCROLL))
$Checkbox1_UH = GUICtrlCreateCheckbox("Все USB | HDD", 216, 56, 97, 25)
GUICtrlSetTip(-1, "На всех жёстких дисках и флешках создать папку autorun.inf")
$Group2 = GUICtrlCreateGroup(" Убрать autorun.inf ", 8, 136, 393, 81)
$Button2 = GUICtrlCreateButton("Запуск", 344, 160, 49, 25)
$Combo2 = GUICtrlCreateCombo("", 24, 160, 161, 25, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_SIMPLE, $CBS_AUTOHSCROLL))
$Checkbox2_UH = GUICtrlCreateCheckbox("Все USB | HDD", 216, 160, 97, 25)
GUICtrlSetTip(-1, "На всех жёстких дисках и флешках убрать папку autorun.inf, созданной этой программой")
GUICtrlSetBkColor($Checkbox1_UH, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetBkColor($Checkbox2_UH, $GUI_BKCOLOR_TRANSPARENT)

GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###$avArray = _ArrayCreate("")

Попробую сейчас в виртуальной машине воссоздать (это либо есть, либо нет. Зависимость не понятна)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Хоть код и нерабочий, я его поправил - у меня подобной проблемы нет.
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
Re: Чёрная строка при использовании checkbox\\\'ов

CreatoR [?]
Хоть код и нерабочий, я его поправил - у меня подобной проблемы нет.
Я только форму скинул, глюк нашёл.

Скриншот

Итак, на XP с классической темой всё нормально, но вот с темой рояль и темой "Windows XP", получается то, что видно на скриншоте, то есть чёрные строки.

Update: код большой, весь не вместился, попробую на pastebin


Добавлено:
Сообщение автоматически объединено:

Исходник
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
k790
Какую версию AutoIt3 юзаешь? На старых версиях была эта проблема, на новой не удалось воспроизвести. Если нужно на старой версии, то посмотри пример в справке GUICtrlSetBkColor, в котором содержится пример отключения стиля для элемента, конечно серый на белом не очень при использовании прозрачного $GUI_BKCOLOR_TRANSPARENT, но лучше чем чёрный. В идеале сделать запрос цвета вкладки и применить его как фон.
 

Naisho

Знающий
Сообщения
86
Репутация
12
Есть такой баг, правда пока подтверждён только для ХР64 - отпишитесь там для активизации

http://www.autoitscript.com/trac/autoit/ticket/2527
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
Naisho [?]
Есть такой баг, правда пока подтверждён только для ХР64 - отпишитесь там для активизации
Кажись не мой баг, ту проблему должна исправить строчка:
Код:
GUICtrlSetBkColor($Checkbox, $GUI_BKCOLOR_TRANSPARENT)
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
Вот простой пример с вкладкой и двумя checkbox'ами, второй checkbox на тестовой ОС чёрный, а первый не прозрачный - белый

Код:
#include <GUIConstantsEx.au3>
#include <TabConstants.au3>

$Form1 = GUICreate("Form", 423, 267, 315, 173)
$Tab1 = GUICtrlCreateTab(0, 0, 417, 25)
$TabSheet1 = GUICtrlCreateTabItem("HKLM")
$Checkbox1_HKLM = GUICtrlCreateCheckbox("Отключение автоматического запуска для дисков неизвестного типа", 8, 24, 401, 17)
$Checkbox2_HKLM = GUICtrlCreateCheckbox("Отключение автоматического запуска для съемных носителей", 8, 40, 401, 17)
GUICtrlSetBkColor($Checkbox2_HKLM, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlCreateTabItem("")
$Admin = GUICtrlCreateLabel("Admin? = " & IsAdmin(), 350, 3, 80, 17)
$Admin = GUICtrlCreateLabel(@OSVersion, 200, 3, 80, 17)
$Admin = GUICtrlCreateLabel(@AutoItVersion, 100, 3, 80, 17)

GUISetState(@SW_SHOW)
While 1
	$msg = GUIGetMsg()
	Switch $msg
		Case $GUI_EVENT_CLOSE
			exit
	EndSwitch
WEnd
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Если хотите в будущем избежать подобных "проблем", то никогда не допускайте наложения элементов друг на друга. В данном случае первый Checkbox наезжает на Tab на 1 пиксел. Да и сами Checkbox пересекаются между собой.
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
Yashied
Спасибо, помогло, кроме того что они друг на друга наезжали, надо было убрать:
Код:
GUICtrlSetBkColor($Checkbox2_HKLM, $GUI_BKCOLOR_TRANSPARENT)
 
Верх