Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.ru

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Создание что то типа панели и сделать ее владельцем кнопки.


BuGaGa   (07.01.17 22:15

Приветствую.

Пытаюсь сделать "панель" (пытался делать через Static, затем через заполнение TWndClassEx и создание на его основе окно с присвоением своей WndProc.),
на которой можно будет разместить окна, "владельцем" которых будет "панель", и в ее WndProc будет обрабатываться сообщения от дочерних окон.
Через TWndClassEx как вы работает.
Проверил WM_CREATE где создается кнопка стиля BS_AUTOCHECKBOX,
WM_COMMAND === где обрабат. нажатие на кнопку, работает
WM_SIZE === где перемещаю кнопку. работает.

WM_CTLCOLORBTN не приходит/
WM_CTLCOLORSTATIC: не хочет работать.
и Delphi ругается [DCC Hint]  Value assigned to 'StaticWinProc' never used в этом сообщение, хотя оно и проходит.
проверил

iu : integer;

WM_CTLCOLORSTATIC:
     begin
       if LPar = Longint(stt) then
         begin
           SetTextColor(WPar, 255);
           SetBkColor(WPar, 8421504);
           Result:= GetStockObject(GRAY_BRUSH);
         end;
       if LPar = Longint(CBT) then
         Result:= GetStockObject(GRAY_BRUSH);
      inc(iu);
    SetWindowText(Form, IntToStr(iu));


     end;

Надеюсь поймете вопрос ----- Как правильно сделать чтот-то похожее на Tpanel ?
Хотя бы в теории.

Спасибо.

Если нужно, Выложу весь код.


Rouse_ ©   (08.01.17 05:18[1]

Давай уж весь код целиком архивом, так проще будет


BuGaGa   (08.01.17 15:08[2]

Rouse_    ===     https://yadi.sk/d/aCzmunJ737kvVH
Шибко не ругаетесь.


Rouse_ ©   (08.01.17 17:07[3]

Угу, скачал мельком глянул, что-то похожее в качестве примера у меня кажется было на рабочей машине, завтра постараюсь отписаться (ну если не ругать за код, как просил :)


BuGaGa   (08.01.17 17:14[4]


> Rouse_

Спасибо большое. Будемс ждать.


Rouse_ ©   (09.01.17 11:24[5]

Лови, слегка причесал, но код страшный:
https://dl.dropboxusercontent.com/u/70911765/FormUnit.zip

К примеру:
   WM_CTLCOLORSTATIC:
     begin
       if LPar = Longint(stt) then


Это вообще никогда не заработает, у тебя же stt - локальная переменная, которая после обработки WM_CREATE выходит за область видимости и по приходу WM_CTLCOLORSTATIC будет содержать в себе все что угодно, кроме того что надо.

Я бы это все сел и переписал с нуля вдумчиво.


ЯЧтсия   (09.01.17 14:48[6]

Удалено модератором


ЯЧтсия   (09.01.17 15:03[7]

Удалено модератором


BuGaGa   (09.01.17 19:40[8]


> Rouse_

Спасибо.
WM_CTLCOLORSTATIC:
     Убрал  Result := DefWindowProc(Wnd, Msg, WPar, LPar);, т.к. считаю что DefWindowProc здесь не требуется.

Вот если придется обрабатывать WM_SYSCOMMAND, то тут необходим.

"что-то похожее в качестве примера у меня кажется было на рабочей машине" ==== не нашлось?
И вообще, стоит ли так делать как я? Или есть лругой способ?


Rouse_ ©   (10.01.17 10:03[9]


> Убрал  Result

Зря, читай справку по WM_CTLCOLORSTATIC


> не нашлось?

Ну там чуть другая задача была: http://forum.sources.ru/index.php?showtopic=194622


> И вообще, стоит ли так делать как я? Или есть лругой способ?

Возьми KOL и на нем напиши, раз тебе малый обьем нужен, либо найди примеры нормальный приложений реализованных с использованием только WinAPI и от них пляши.


BuGaGa   (10.01.17 21:22[10]

Rouse_
Век живи, век учись.
Укажите мне на мои ошибки.(Вроде-бы по msdn делаю)


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо