Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
KBEPTMEH
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 12
#1

Свой компонент на основе TWinControl - C++

04.04.2011, 21:17. Просмотров 662. Ответов 1
Метки нет (Все метки)

И сново здравствуйте

На этот раз пишу к Вам с небольшой проблемкой, касательно компонентов.

У меня появилась потребность создания своего поля ввода данных (как компонент Edit), который нужно реализовать на TWinControl.
Компоненты TMemo, TEdit, TCSpinEdit реализованы на TCustomEdit, а TCustomEdit в свою очередь реализован на TWinControl.

К чему это я все?
Дело в том, что создание компонента, его дальнейшее размещение, а так же добавление новых свойств и обработчиков - не вызывает проблемы.

Проблема в другом: Я никак не могу понять - Как заставить TWinControl "Ловить" и "Терять" фокус и отображать (прорисовывать) вводимый текст?

То есть к примеру, если создать компонент на основе TCustomEdit, то компонент сразу появляется в виде поля ввода и есть возможность вводить, копировать, вырезать и вставлять данные в поле ввода.
А если создать компонент на основе TWinControl, то появляется простой прямоугольник заданного размера и цвета фона (Свойство Brush, Класса TControl) и никаких действий с ним невозможно выполнить - то есть нельзя "в него" текст набирать и "из него" этот текст вырезать или копировать.

Как я понял, мне необходимо переопределять и заново обрабатывать сообщения:

C++
1
2
3
4
5
6
7
private:
  ...
  MESSAGE void __fastcall CMEnter(TWMNoParams &Message);
  MESSAGE void __fastcall CMExit(TWMNoParams &Message);
  MESSAGE void __fastcall WMPaste(TWMNoParams &Message);
  MESSAGE void __fastcall WMCut(TWMNoParams &Message);
  ...
Но с другой стороны, если их не переопределять и не обрабатывать самостоятельно, то эти сообщения будут определены и обработаны непосредственно "родителем" (Parent-ом), а именно TWinControl.

Так же, как я понимаю, мне необходимо руками рисовать Border компоненту, задавать область (TRect), в которую можно будет вводить текст, непосредственно прорисовывать данный текст и так далее ...

Но я не могу понять, как придать фокус своему компоненту на TWinControl

P.S. Нужно создать именно на TWinControl ...

Если подобная тема поднималась на форуме - "ткните мордой" пожалуйста
Сам искал по форуму похожие темы, перелистал много, но ничего похожего не нашел

Всем заранее огромное спасибо.

Добавлено через 10 минут
Так же есть мнение (в данный момент проверяю) - что фокусировка задается при помощи указания параметров:

C++
1
2
3
4
protected:
  ...
  virtual void __fastcall CreateParams( TCreateParams &Params );
  ...
Добавлено через 18 минут
Хм, накопал, что у компонента за фокусировку отвечает:

C++
1
2
3
4
5
6
7
public:
  ...
  DYNAMIC bool __fastcall Focused(void);
  DYNAMIC bool __fastcall CanFocus(void);
  ...
  virtual void __fastcall SetFocus(void);
  ...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2011, 21:17     Свой компонент на основе TWinControl
Посмотрите здесь:

Записать в файл S сначала компонент файла F, затем компонент файла G с сохранением порядка - C++
Составить программу, которая записывает в файл S сначала компонент файла F, затем компонент файла G с сохранением порядка.

Записать в файл S сначала компонент файла F, затем компонент файла G, с сохранением порядка - C++
Здраствуйте. Прошу помощи в решении этой задачи на С++. Составить программу, которая записывает в файл S сначала компонент файла F,...

Свой класс в С++ - C++
Пытаюсь сделать класс массива точнее переписать код из учебника, но так как код приводится не целый а кусками то что в данный момент...

свой strcpy() - C++
кто может написать или показать, или подсказать код к функции либы стринг.н - strcpy() я уже замучался искать правильный вариант, 3...

Свой компилятор C++ - C++
Приветствую всех. Меня интересует, можно ли взять какой нибудь компилятор C++, и добавить туда свои библиотеки и так далее? Сделав новый...

Свой auto pointer - C++
Есть учебное задание: Реализовать шаблонный класс auto_ptr. Прошу подсказать все ли идейно правильно написано. Что стоит исправить и...

Как узнать свой IP? - C++
Интересует именно с помощью boost asio, с последующим выводом на консоль.Ну или как узнать айпишник подключившегося клиента(на стороне...

Создать свой map - C++
Всем добра! Буду очень признателен за любую помошь, сам реально тупо не могу начать(не знаю как)... Цель написать свой класс...

свой строковой тип - C++
помогите пожалуйста разобраться со строковым типом! пишу свой класс строки, запнулся на реализации оператора + есть вот такие виды...

Свой аналог вектора - C++
Есть такой вопрос, пожалуйста, кто может подскажите кто что знает. Мне необходимо сделать аналог вектора, но со своим менеджментом памяти,...

Свой однонаправленный итератор - C++
Пытаюсь написать свой итератор и никак не могу придумать как писать операторы == и !=. Подскажите пожалуйста. template <class mytemp>...

Свой класс string - C++
Всем доброго дня! Только начал разбираться с этим замечательным языком. Вот пытаюсь реализовать свой класс строки, но не могу понять в чем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KBEPTMEH
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 12
06.04.2011, 22:16  [ТС]     Свой компонент на основе TWinControl #2
Все, вопрос решился альтернативным подходом к задаче, но при использовании все того же TWinControl

Спасибо "всем", кто решил поучаствовать в обсуждении

P.S. Кому интересно ...
Я использовал несколько компонентов внутри компонента TWinControl и таким образом я получал фокус не в самом компоненте TWinControl, а в другом компоненте.
Этот подход дал мне возможность взглянуть на свою задачу иначе и понять некоторые моменты по поводу TWinControl. Ну и решить свою задачу
А вся интересность в том, что когда сам докапаешься до решения проблем - оно всегда "в сто крат" лучше, чем за тебя решат проблему.
Да я и не просил решать проблему - я просто попросил подказать и направить в нужное направление
Дай Бог каждому из Вас аналогичной помощи в Ваших проблемах
Yandex
Объявления
06.04.2011, 22:16     Свой компонент на основе TWinControl
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru