С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 19
1

Новый компонент и Контекстное меню

26.03.2014, 22:43. Показов 4858. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Хотел спросить может кто сталкивался с добавлением в новый компонент контекстного меню.
И если да, помогите с этой проблемой. Или приведите пример на любом для вас удобном компоненте, но желательно на компоненте StringGrid.
Заранее большое спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.03.2014, 22:43
Ответы с готовыми решениями:

Контекстное меню в С++ Билдер
Есть ли такая функция контекстного меню(PopupMenu) как наведения мыши на строку, и появление...

Интеграция в контекстное меню Windows
В общем весь вопрос то, как интегрировать пункт на запуск своей программы в контекстное меню...

Динамический объект и контекстное меню
Добрый вечер. Перепутал, прошу прощения. Вопросик есть - вешаю на динамический ListBox контекстное...

Контекстное меню при наведении
Сталкнулся с такой задачей. Мне нужно сделать, что при наведении на memo1 (в моем случае)...

23
0 / 0 / 0
Регистрация: 26.03.2014
Сообщений: 6
26.03.2014, 23:14 2
Доброго времени суток
Могли бы помочь в создании отдельного компонента StringGrid с такими возможностями Вставка, удаление, перемещение строк та столбцов, сохранение и загрузка в файл табличного формату, форматирование ячеек. редактирование, форматирование через контекстное меню.

я смог реализовать только имеющийся StringGrid добавив PopupMenu
Вложения
Тип файла: rar StringGrid.rar (392.6 Кб, 30 просмотров)
0
0 / 0 / 0
Регистрация: 26.03.2014
Сообщений: 6
27.03.2014, 01:21 3
кто-то может подсказать как создать контекстное меню при создании комонента?
0
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
27.03.2014, 10:16 4
Leven9tko, под "новым" понимается динамический компонент?
0
SatanaXIII
27.03.2014, 10:40
  #5
 Комментарий модератора 
Leven9tko, Eugen4ik, с вашего позволения я объединю ваши темы в одну.
0
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
27.03.2014, 10:52 6
SatanaXIII, ну если так, то уже понятнее.

Leven9tko, Eugen4ik, я бы начал так:
C++
1
2
3
TStringGrid *sg = new TStringGrid(Form1);
sg->Parent = Form1;
sg->PopupMenu = PopupMenu1;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
33006 / 21309 / 8183
Регистрация: 22.10.2011
Сообщений: 36,614
Записей в блоге: 8
27.03.2014, 13:13 7
Лучше при создании компонента назначить ему обработчик события OnContextPopup, который как раз и сработает в момент запроса пользователем контекстного меню. И вот тут можно по желанию, либо сконструировать менюшку на месте, и показать, либо взять то всплывающее меню, что уже существует где-либо, и показать его.
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
27.03.2014, 17:20 8
Цитата Сообщение от Kulgar Посмотреть сообщение
Leven9tko, под "новым" понимается динамический компонент?
Вероятно подразумевается написание своего компонента.
0
0 / 0 / 0
Регистрация: 26.03.2014
Сообщений: 6
28.03.2014, 00:36 9
вопрос, как правильно его создать, мне нужно сконструировать такое как показано в примере (документ выше StringGrid.rar)?

Добавлено через 2 минуты
подразумевается, создать свой компонент наследуемый от StringGrida со своим контекстным меню
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.03.2014, 01:35 10
Eugen4ik, твой пример не рабочий- отсутствует какой-то пакет.
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.03.2014, 03:18 11
Вот для примера кое что реализовал
Вложения
Тип файла: zip MyStringGrid.zip (16.5 Кб, 25 просмотров)
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.03.2014, 03:21 12
Сохранение/загрузку в файл можно реализовать так https://www.cyberforum.ru/blog... tom27.html
0
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 19
28.03.2014, 11:03  [ТС] 13
Ну тут подразумевалось свой собственный компонент на базе StringGrid
И в новом компоненте при размещении уже на форму в нем должно быть Контекстное меню.
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.03.2014, 13:54 14
Цитата Сообщение от Leven9tko Посмотреть сообщение
Ну тут подразумевалось свой собственный компонент на базе StringGrid
И в новом компоненте при размещении уже на форму в нем должно быть Контекстное меню.
Ну так а я что сделал ? В исходниках именно так.

Добавлено через 16 минут
Цитата Сообщение от Leven9tko Посмотреть сообщение
И в новом компоненте при размещении уже на форму в нем должно быть Контекстное меню.
Или Вы имеете ввиду что бы было в дизайн-тайме, как у TPageControl?
Миниатюры
Новый компонент и Контекстное меню  
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
29.03.2014, 00:15 15
Так ?



Исходники : MyStringGrid.zip
(Стоит заметит что вставка/удаление столбцов не совсем корректно выполняется.)

http://citforum.ru/programming/32less/les42.shtml
http://docwiki.embarcadero.com... ignEditors
1
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 19
29.03.2014, 16:26  [ТС] 16
Да похоже так) Спасибо)
0
0 / 0 / 0
Регистрация: 26.03.2014
Сообщений: 6
30.03.2014, 19:00 17
Avazart, спасибо отлично работает))

вот только еще один вопрос, какое нужно поставить условие что бы при выделении ячейки выскакивало стандартное окно Windows, для редактирования содержимого?
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
30.03.2014, 19:19 18
Вероятно нужно переопределить метод Click в нем создавать форму для редактирования.
0
0 / 0 / 0
Регистрация: 26.03.2014
Сообщений: 6
30.03.2014, 23:23 19
Еще один вопрос, наверное последний по этой теме...
создал две функции по примеру, компилирует ошибок не выдает но при выполнении не как компонент на них не реагирует

В h-файле
C++
1
2
3
DYNAMIC void __fastcall DoMouseUp( TMouseButton Button, TShiftState Shift, int X, int Y);
 
 DYNAMIC void __fastcall DoMouseMove( TShiftState Shift, int X, int Y);
в сpp


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
void __fastcall TMyStringGrid::DoMouseUp( TMouseButton Button, TShiftState Shift, int X, int Y)
{
TGridCoord mouse = MouseCoord(X, Y);
 
    if(mouse.Y == 0 && mouse.X >= FixedCols)
    {
        TGridRect Rect;
 
        Rect.Left   = mouse.X;
 Rect.Right  = mouse.X;
        Rect.Top    = FixedRows;
        Rect.Bottom = RowCount;
 
        Selection = Rect;
    }
 
  if(mouse.X == 0 && mouse.Y >= FixedCols)
    {
        TGridRect Rect;
 
        Rect.Top   = mouse.Y;
 Rect.Bottom  = mouse.Y;
        Rect.Left    = FixedCols;
        Rect.Right = ColCount;
 
        Selection = Rect;
 
               }
}
 
void __fastcall TMyStringGrid::DoMouseMove(
      TShiftState Shift, int X, int Y)
{
for(int i=1;i<RowCount;i++)
                 {
                 char a='A'+i-1;
                 Cells[i][0]=a;
                 Cells[0][i]=i;
                 }
}
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
30.03.2014, 23:40 20
Вероятно по тому что наугад не нужно лепить. Нужно смотреть как эта ф-ция называется у наследника.

http://docwiki.embarcadero.com... id.MouseUp
http://docwiki.embarcadero.com... .MouseMove

Только это документация под XE3 кое-что отличается, вам нужно найти доку под старый билдер, а проще посмотреть в исходники TCustomGrid.
0
30.03.2014, 23:40
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.03.2014, 23:40
Помогаю со студенческими работами здесь

CBuilder wsMaximized OpenGL и контекстное меню
У меня полноэкранное приложение. На этапе разработке задаю свойства: BorderStyle = bsNone;...

Реестр, добавление пункта в контекстное меню
Ребят, прошу прощения, если не туда пишу, но короче пытаюсь разобраться с этой темой уже пол дня....

Как создать контекстное меню для шейпа?
void __fastcall TForm1::Shape1ContextPopup(TObject *Sender, TPoint &amp;MousePos, bool &amp;Handled)...

Как добавить пункт в контекстное меню браузера?
Здравствуйте. Как можно добавить пункт в контекстное меню браузера, так, как делают многие...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru