AlienB |
Отправлено: 07.10.2006, 13:45 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 4
|
Собственно, задача:
На форме несколько панелей. На панелях — по нескольку кнопок. Создаются динамически. Панели можно двигать относительноф ормы, кнопки — относительно панелей. Но панели налазят друг на друга, закрывая кнопки. Как сделать панели прозрачными? Кнопки на них должны остаться видны.
Пробовал юзать TImage, но его нельзя прописать Parent'ом для кнопок, т.е. при перемещении TImage кнопки остаются на месте. Можно конечно руками следить за всеми кнопками, которые находятся на TImage, но это ооочень неудобно, да и их может быть очень много.
|
|
AlienB |
Отправлено: 07.10.2006, 18:28 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 4
|
Неужели вообще идей нет?
Хорошо, другой вопрос: существуют ли вообще прозрачные, реагирующие на нажатие мыши наследники TWinControl? |
|
Admin |
Отправлено: 07.10.2006, 20:19 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
У формы TransparentColor = true;
и устанавливаете какой цвет будет прозрачным,
например TransparentColorValue = clGray;
Нужной панели, чтобы она стала прозрачной,
устанавливате этот цвет:
CODE |
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Panel1->Color = clGray;
}
//---------------------------------------------------------------------------
|
когда нужно сделать непрозрачной — возвращаете обычный цвет.
P.S. Не знаю, будет ли это работать под Windows 98,
под 2000 и выше (2003, XP) работать будет.
QUOTE |
TransparentColor does not work on all systems. The application must be running under Windows 2000 or better, with adequate hardware.
|
Или, второй вариант — это работа с регионами.
Это уже было на форуме:
http://cbuilder.ru/forums/index.php?act=ST&f=3&t=3479
http://cbuilder.ru/forums/index.php?act=ST&f=3&t=3527
|
|
AlienB |
Отправлено: 08.10.2006, 12:01 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 4
|
Веселый эффект, не знал о нем
Но это не то что надо. При этом сквозь форму просвечивает то, что за ней.
Мне надо:
Непрозрачная форма. Сверху — прозрачная панель. Сверху — непрозрачные кнопки.
На прикрепленном файле 2 панели, по 1 кнопке на каждой. 1 панель накрывает вторую. Как сделать что бы обе кнопки было видно в такой ситуации?
Отредактировано AlienB — 08.10.2006, 12:02 |
|
Admin |
Отправлено: 08.10.2006, 20:53 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Наверное самое простое — разместить панели на отдельных формах,
в которых(формах) и установить Transparent Color.
|
|
AlienB |
Отправлено: 09.10.2006, 18:25 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 4
|
Боюсь, что панелей может быть очень много... Несколько сотен например. Или больше.
Готов принять сложное решение. Вплоть до написания собственного компонента. Хотя пока с трудом представляю как это сделать. |
|
Admin |
Отправлено: 09.10.2006, 18:31 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Значит для панелей — такая одна отдельная форма. (с прозрачностью)
На ней эти панели динамически и создавайте.
(Или 2-3-4 формы под стандартные типоразмеры панелей,
на этих формах панели создавать динамически).
А настройки панелей и формы: размер, местоположение и прочее
можно хранить, например, в ini-файле.
|
|