Что нового

Фон главного окна разного цвета - как реализовать

NONer

Новичок
Сообщения
27
Репутация
0
Здравствуйте!

Хочу сделать вид окна как в информационных окнах Total Commander, т.е общий фон окна - белый, а внизу, где кнопки - серый (см. вложение).
В справке ничего подобного не нашел, на форуме тоже.
Пробовал даже рисовать серый прямоугольник, но тогда не работают кнопки.

Подскажите, как можно реализовать такой вид окна?
 

Вложения

  • Win_Fon_001.png
    Win_Fon_001.png
    19 КБ · Просмотры: 39

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
NONer
общий фон окна - белый, а внизу, где кнопки - серый
Лучше сделать наоборот: общий фон не трогать (будет серый), а белый - это Label нужного размера
Код:
GUICtrlCreateLabel("Здесь текст", 0, 0, 400, 300)
GUICtrlSetBkColor(-1, 0xFFFFFF)
 
Автор
N

NONer

Новичок
Сообщения
27
Репутация
0
InnI,
так не получится. В окне будут редактируемые поля, чекбоксы и текст.
Даже если сделать label большого размера и на него выводить редактируемые поля и чекбоксы, то они будут не кликабельны.
 
Автор
N

NONer

Новичок
Сообщения
27
Репутация
0
Вот я набросал код и в нем редактируемые поля не работают:

Код:
#include <GUIConstantsEx.au3> ; Для работы с окнами
#include <ButtonConstants.au3> ; Для работы с кнопками
#include <WindowsConstants.au3> ; Для работы стилей
#include <File.au3> ; Для работы с файлами
#include <EditConstants.au3> ; Для редактируемых полей

$Window_X = 400 ; Размер окна по горизонтали
$Window_Y = 200 ; Размер окна по вертикали

$Main_Form = GUICreate('Название окна', $Window_X, $Window_Y, -1, -1, BitOR ($WS_SYSMENU, $WS_VISIBLE)) ; Главное окно в центре экрана - сразу видимое

GUICtrlCreateLabel("для фона", 0, 0, $Window_X, $Window_Y-85)
GUICtrlSetBkColor(-1, 0xFFFFFF)

$Stroka_IP = GUICtrlCreateLabel('Введите ip-адрес:', 10, 20) ; Текст
$Input_IP = GUICtrlCreateInput('', 130, 19, 208, 20) ; Поле для ввода данных

$Stroka_Name = GUICtrlCreateLabel('Имя компьютера:', 10, 55) ; Текст
$Stroka_MAC = GUICtrlCreateLabel('MAC-адрес компьютера:', 10, 80) ; Текст

$Text_Name_PC = GUICtrlCreateEdit ('', 130, 55, 208, 17) ; Пустое редактируемое поле - верхний регистр - только для чтения

$Text_MAC_PC = GUICtrlCreateEdit ('', 180, 80, 158, 17) ; Пустое редактируемое поле - верхний регистр - только для чтения

$But_Start = GUICtrlCreateButton('Выполнить', $Window_X-225, $Window_Y-70, 100, 30) ; Кнопка - 'Выполнить'
$But_Cancel = GUICtrlCreateButton('Отмена', $Window_X-115, $Window_Y-70, 100, 30) ; Кнопка - 'Отмена'

While 1 ; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
    ; Проверка нажатий клавиш
	Switch GUIGetMsg()
        ; -------------------------------------------------------------------------------------------------
		; Закрытие окна программы
		; -------------------------------------------------------------------------------------------------
		Case $GUI_EVENT_CLOSE
            Exit

		; -------------------------------------------------------------------------------------------------
		; Кнопка - 'Выполнить'
		; -------------------------------------------------------------------------------------------------
		Case $But_Start
			MsgBox (64, '', 'OK')

		; -------------------------------------------------------------------------------------------------
		; Кнопка - 'Отмена'
		; -------------------------------------------------------------------------------------------------
		Case $But_Cancel
            Exit ; Выход из программы
    EndSwitch
WEnd

; Выход из программы
Exit
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
NONer
редактируемые поля не работают
Потому что Label нужно заблокировать
Код:
GUICtrlSetState(-1, $GUI_DISABLE)
Но, если у вас много элементов (вы же сразу об этом не сказали), то лучше сделать наоборот - белый фон и серый Label
Код:
GUICreate("Название окна")
GUISetBkColor(0xFFFFFF)
GUICtrlCreateLabel("", 0, 300, 400, 300)
GUICtrlSetBkColor(-1, 0xF0F0F0)
GUICtrlSetState(-1, 128) ; $GUI_DISABLE
GUICtrlCreateCheckbox("Checkbox", 10, 20)
GUICtrlCreateButton("Button", 10, 50)
GUICtrlCreateEdit("Edit", 10, 80, 100, 100)
GUICtrlCreateLabel("Здесь текст", 10, 220)
GUICtrlCreateButton("OK", 300, 350, 80)
GUISetState()

Do
Until GUIGetMsg() = -3
 
Автор
N

NONer

Новичок
Сообщения
27
Репутация
0
InnI, большое спасибо, не знал, что надо блокировать элемент.
 
Верх