![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
cinic |
![]()
Сообщение
#1
|
Гость ![]() |
Ув. программисты на дельфи, помогите пожалуйста с такой задачей:
1) Создать главное окно, содержащее меню вида: Input color, Change, Exit, при выборе Exit программа закрывается. 2) При выборе Input color открывается диалоговое окно, содержащее 3 поля типа Tedit, группу из 2-x кнопок TCheckBox в TGroupBox (кнопки left и right) и кноgre ок типа TBitBtn В поля TEdit вводятся 3 ргб составляющие цвета. При выборе Change изменяется на заданный цвет фон главного окна (левая, правая или обе половины соответственно, в зависимости от выбора кнопок в диалоговом окне) Так как я никогда не писал в дельфях, а задачу нужно срочно, то у меня возникла такая проблема: Каким образом реализовывать изменение цвета? Насколько глупым будет создать две TPanel (соответственно, левую и правую) и красить в нужный цвет их? |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата создать две TPanel (соответственно, левую и правую) и красить в нужный цвет их? Можно, конечно, и так... А можно просто отрисовать на канве формы:var i: integer;где Radiobutton1 отвечает за левую часть формы, а RadioButton2 - за правую... P.S. А, у тебя должен быть CheckBox? Я почему-то прочитал RadioButton... Тогда вот так: procedure TForm1.Button1Click(Sender: TObject); Сообщение отредактировано: volvo - 21.06.2007 21:33 |
мисс_граффити |
![]()
Сообщение
#3
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
я думаю, недостатки этого метода сам знаешь...
при сворачивании окна, а потом разворачивании все прямоугольники исчезнут. лучше рисовать в событии OnPaint, а из метода-обработчика нажатия на кнопку только вызывать его. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Знаю, но:
а) про то, что надо обрабатывать сворачивание/разворачивание не было речи; б) я не даю полное решение (и ты тоже об этом знаешь) - только показываю идею. |
Andrei_25 |
![]()
Сообщение
#5
|
Гость ![]() |
А почему бы и не поставить две пенли, только сделать это динамически.
Завести две глобальные переменные: panel,panel2:tpanel; И написать такой код procedure TForm1.FormCreate(Sender: TObject); begin panel:=tpanel.Create(owner); panel.Color:=255; panel.Width:=ClientWidth div 2; panel.Parent:=form1; panel.Align:=alleft; panel2:=tpanel.Create(owner); panel2.Color:=clGreen; panel2.Parent:=form1; panel2.Align:=alClient; end; Это, конечно только вариант, но я думаю, такой код будет пошустрее, чем каждые раз рисовать через МЕДЛЕННУЮ КАНВУ. Думаю могут быть вопросы с преобразованием цвета. мой вариант: red*1+green*256+blue*256*256; panel2.Color:=200+200*256+200*256*256;получится темно-серая панель |
мисс_граффити |
![]()
Сообщение
#6
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
а зачем?
смысл создавать панели динамически? мы заранее знаем, где они должны быть, сколько их и т.д. и правила форума почитай (про теги). -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Andrei_25 |
![]()
Сообщение
#7
|
Гость ![]() |
|
![]() ![]() |
![]() |
Текстовая версия | 19.07.2025 0:18 |