Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка вставками Сортировка вставками: пусть первые k элементов упорядочены по возростанию. Берется (k+1)-ый элемент и размещается среди первых k так, чтобы упорядоченными оказались k+1 элементов. Этот... https://www.cyberforum.ru/ cpp-beginners/ thread270160.html помогите создать графический редактор C++
я просто толбко начел изучять С++ и немогу создать графический редактор.Помогите пожалуста.
C++ Нужно подсчитать ряд с точностью до эпселон используя интегральный признак сходимости ряда https://www.cyberforum.ru/ cpp-beginners/ thread270153.html
Нужно подсчитать ряд с точностью до эпселон используя интегральный признак сходимости ряда. Ряд: сумма по к от 1 до бесконечности ln(cos(kx))/k^2. Проблема в том, что не могу найти оценку сверху для...
C++ Работа с BMP Бобрового дня уважаемые обитатели. Возникло некое недопонимание определения в работе с данным форматом. #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <iostream> #include... https://www.cyberforum.ru/ cpp-beginners/ thread270134.html
C++ Backup
Дайте ссылочку на код простенькой программы резервного копирования на С++, можно и на С. Никак не могу примеры найти , а нужно сделать нечто подобное.
C++ Сжать массив отбрасыванием нулевых элементов помогите пожалуйста создать динамический массив и Сжать заданный массив b1, b2,...,bm отбрасыванием нулевых элементов! https://www.cyberforum.ru/ cpp-beginners/ thread270122.html
C++ не могу решить zadachu в С++ https://www.cyberforum.ru/ cpp-beginners/ thread270119.html
помогите пожалуйста решить задачку,оч нужно((((((
C++ Статические массивы
int a; cout << sizeof(a) << endl; cout << a << endl; Добрый день. Почему выводится, что sizeof(a)=16 байт. a же это адрес, т.е. = 4 байта, а не размер массива. P.S. буду рад за...
C++ Проверить попадание точки в заштрихованную область https://www.cyberforum.ru/ cpp-beginners/ thread270097.html
СОСТАВИТЬ ПРОГРАММУ
C++ Класс "Матрицы" Доброго времени суток. Прошу помочь вот в таком задании : описать класс , реализующий тип данных "вещественная матрица порядка 2" и работу с ним , а именно : сложение , вычитание , умножение на... https://www.cyberforum.ru/ cpp-beginners/ thread270096.html
ну кто нибудь составит программу???????? C++
ну кто нибудь составит программу????????ну кто нибудь составит программу????????ну кто нибудь составит программу????????ну кто нибудь составит программу????????ну кто нибудь составит программу????????
C++ Подсчет производной Ребят, есть ли у кого нибудь код программы которая считает производную? Или объясните как сделать, пожалуйста https://www.cyberforum.ru/ cpp-beginners/ thread270084.html
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 12
0

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

04.04.2011, 21:17. Показов 983. Ответов 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);
  ...


Вернуться к обсуждению:
Свой компонент на основе TWinControl C++
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2011, 21:17
Готовые ответы и решения:

Создать свой компонент в c++builder6 (на основе TStringGrid)?
Построить класс - потомок класса TStringGrid, объект которого при нажатии клавиши F11 выводит в...

Как создать свой компонент, на основе стандартного?
Как создать свой компонент на основе стандартного. Например, хочу сделать свой компонент на основе...

Дочернее окно на основе TWinControl
Всем привет. Какое то время программировал на mfc, там можно было создать к примеру дочернее окно...

Свой компонент от ListBox. Не могу задать свой тип для Items
День добрый господа. Нуждаюсь в вашей помощи. Суть такова, что я желаю создать свой компонент на...

1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2011, 21:17

Можно ли создать компонент на основе класса TMemo, чтобы компонент был в виде геометрической фигуры?
Требуется создать компонент на основе класса TMemo, так чтобы вид компонента был в виде...

Свой компонент
В программе будет использоваться большое количество Edit'ов и нужно во всех сделать так чтобы в них...

Свой хостинг на основе Nginx
Здравствуйте! Мы сейчас арендуем выделенный сервер, на основе (Read Hat, CentOS, Njinx), платим...

Свой компонент в Netbeans
Здравствуйте. Пишу в IDE Netbeans. Создал наследника от Jpanel в отдельном файле, добавил файл (add...

Создать свой компонент
Здравствуйте!Нужно реализовать визуальный компонент( светофор) для отображения реального объекта и...

свой ГИС на основе Яндекс карт
Планирую создать небольшую ГИС локального массштаба на основе Яндекс карт. Как должно работать: ...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru