Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/16: Рейтинг темы: голосов - 16, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 147
Builder 6

Текстово-графическое отображение информации

17.05.2019, 01:51. Показов 3370. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помочь с написанием программы:

Задание:
На рабочей форме должны одновременно присутствовать редактируемая таблица и область для отображения графической информации. В таблице с помощью клавиатуры пользователь вводит, редактирует или удаляет координаты точек. Изменяемая текстовая информация в таблице должна автоматически отображаться в графической области в виде точек фигуры, соединенных отрезками.
Миниатюры
Текстово-графическое отображение информации  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.05.2019, 01:51
Ответы с готовыми решениями:

Отображение графической информации Builder
Пишу курсовую работу. Где наити информацию по графической информации и компоненте TChart?

Отображение информации реестра Windows
помогите с таким заданием а то я в с++ вобще баран.... Робота з реєстром. Разработать программу, которая отображает следующую...

Отображение из DBGrid информации на Webbrowser C++ Builder
Отображение из DBGrid информации на Webbrowser C++ Builder. Тема курсовой БД Фильмотека. На форме DBGrid, ADOTable, ADOConection,...

11
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
17.05.2019, 13:28
Лучший ответ Сообщение было отмечено anna587 как решение

Решение

К примеру так__
Кликните здесь для просмотра всего текста
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
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
     StringGrid1->Rows[0]->CommaText= "X Y";
     StringGrid1->Rows[1]->CommaText= "100,20";
     StringGrid1->Rows[2]->CommaText= "150,80";
     StringGrid1->Rows[3]->CommaText= "120,60";
     Image1->Picture->Bitmap->Height = Image1->Height;
     Image1->Picture->Bitmap->Width  = Image1->Width;
     Image1->Canvas->MoveTo(StringGrid1->Cells[0][1].ToInt(),
                            StringGrid1->Cells[1][1].ToInt() );
     Word S; 
     StringGrid1KeyUp(0,S,TShiftState()<<ssShift);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1KeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
     Image1->Canvas->FillRect(TRect(0,0,Image1->Width,Image1->Height));
     for(int i=1;i<StringGrid1->RowCount;i++)
      if(StringGrid1->Cells[0][i].ToIntDef(-1) >=0 &&
         StringGrid1->Cells[1][i].ToIntDef(-1) >=0 )
       Image1->Canvas->LineTo(StringGrid1->Cells[0][i].ToInt(),
                              StringGrid1->Cells[1][i].ToInt());
     if(StringGrid1->Cells[0][1].ToIntDef(-1) >=0 &&
         StringGrid1->Cells[1][1].ToIntDef(-1) >=0 )
       Image1->Canvas->MoveTo(StringGrid1->Cells[0][1].ToInt(),
                              StringGrid1->Cells[1][1].ToInt());
}
//---------------------------------------------------------------------------
Если ещё точки нужны в узлах, то посложнее будет.
Миниатюры
Текстово-графическое отображение информации  
1
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 147
18.05.2019, 00:35  [ТС]
Спасибо огромное за ответ и за написание программы, преподаватель сказал, что точки требуются(

Добавлено через 5 минут
А сложно будет дописать оставшийся код, для того, чтобы программа была с точками?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
18.05.2019, 01:23
Ничего сложного. Просто на канве Image1 в узлах рисуют "обруч" (ellipse). Чтоб было понятнее...
C++
1
   Image1->Canvas->Ellipse(48,48,52,52);
После выполнения этой команды вокруг пикселя в позиции x=50,y=50 на картинке Image1 нарисуется аккуратная окружность диаметром 5 точек (48-49-50-51-52); меньше диаметром нет смысла делать, так как "это" окружность напоминать будет меньше всего. Таким образом в цикле вычерчивания отрезков нужно добавить рисование окружностей в координатах узлов минус-плюс 2. (Почитайте пояснения help по материалу Canvas->Ellipse; мои объяснения могут дать неверное общее представление)
1
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 147
18.05.2019, 01:33  [ТС]
А можно у Вас приобрести полностью написанную данную программу? соответственно не за спасибо 😊

Добавлено через 5 минут
В принципе, если я правильно поняла, то в данной программе просто нужно дописать данный код. Или все таки что-то я не так поняла 🤦♂
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
18.05.2019, 01:35
Мне и "спасибо" много... .
Этюд, который я днём намалевал, остался на работе. Его, конечно, не сложно воспроизвести, но... поздно уже; у меня под окном соловей заливается... - настроение не математическое. К тому же -повторяю - ничего сложного нет; немного подумаете - и сделаете самостоятельно. (Это ж даже интересно!). Будут неясности - здесь помогут и подскажут.
Успехов!
1
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 147
18.05.2019, 01:38  [ТС]
Все равно огромное спасибо, что откликнулись и помогли!
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
18.05.2019, 01:51
Это соловью спасибо...
Можно вот так переделать обработчик нажатия клавиши в таблице
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::StringGrid1KeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
     Image1->Canvas->FillRect(TRect(0,0,Image1->Width,Image1->Height));
     Image1->Canvas->Pen->Width = 2; 
     for(int i=1;i<StringGrid1->RowCount;i++)
      if(StringGrid1->Cells[0][i].ToIntDef(-1) >=0 &&
         StringGrid1->Cells[1][i].ToIntDef(-1) >=0 )
      {
        Image1->Canvas->LineTo(StringGrid1->Cells[0][i].ToInt(),
                              StringGrid1->Cells[1][i].ToInt());
        Image1->Canvas->Ellipse(StringGrid1->Cells[0][i].ToInt()-2,
                               StringGrid1->Cells[1][i].ToInt()-2,
                               StringGrid1->Cells[0][i].ToInt()+2,
                               StringGrid1->Cells[1][i].ToInt()+2);
      }
     if(StringGrid1->Cells[0][1].ToIntDef(-1) >=0 &&
         StringGrid1->Cells[1][1].ToIntDef(-1) >=0 )
       Image1->Canvas->MoveTo(StringGrid1->Cells[0][1].ToInt(),
                              StringGrid1->Cells[1][1].ToInt());
}
И линии будут потолще, и точки заметнее.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
18.05.2019, 12:20
Цитата Сообщение от nick42 Посмотреть сообщение
Можно вот так переделать обработчик нажатия клавиши в таблице
А можно сократить писанину:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void __fastcall TForm1::StringGrid1KeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
 
{
    Image1->Canvas->FillRect(Image1->ClientRect);
    Image1->Canvas->Pen->Width = 2;
    int x, y;
    for(int i = StringGrid1->FixedRows; i < StringGrid1->RowCount; i++)
        if((x = StringGrid1->Cells[0][i].ToIntDef(-1)) >=0 &&
           (y = StringGrid1->Cells[1][i].ToIntDef(-1)) >=0)
        {
            Image1->Canvas->LineTo(x, y);
            Image1->Canvas->Ellipse(x-2, y-2, x+2, y+2);
        }
    if((x = StringGrid1->Cells[0][1].ToIntDef(-1)) >=0 &&
       (y = StringGrid1->Cells[1][1].ToIntDef(-1)) >=0) Image1->Canvas->MoveTo(x, y);
}
0
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 147
18.05.2019, 12:53  [ТС]
Подскажите, пожалуйста, а Вы пробовали запустить же данную программу? Не могли бы отправить мне сохраненные файлы программы (exe. cpp и т.д). Просто когда я прописываю данную программу, то у меня выдает ошибку.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
18.05.2019, 13:37
Вот архив. Вместе с EXE...
Вложения
Тип файла: zip Grid_Image.zip (47.3 Кб, 22 просмотров)
1
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 147
18.05.2019, 14:41  [ТС]
Благодарю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.05.2019, 14:41
Помогаю со студенческими работами здесь

Графическое отображение данных
Всем привет, нужна помощь, мне нужно реализовать графическое отображение данных документов и справочников, т.е. я сделал критерий отбора...

Графическое отображение графа
Всем привет. В одной из лабораторных требуется реализовать алгоритм Дейкстры. С самим алгоритмом что-то более менее понятно, но по проблеме...

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

Графическое отображение полинома
Доброго времени суток форумчане. Сложилась проблема, встала задача которую я не могу воплотить в жизнь. Задача такова. Разработать...

Графическое отображение пространства дисков
Господа подскажите почему не работает в UserControl1


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru