Построение графиков в матлаб по данным эксель
Apply MATLAB analysis and visualization capabilities to Excel data
When it comes to data analysis and visualization, technical professionals who use Excel ® often encounter functional limitations. MATLAB supplements the capabilities of Excel by providing access to pre-built mathematical and analysis functions, visualization tools, and the ability to automate your analysis workflows.
3 ways to use MATLAB and Excel together:
- Import Excel data into MATLAB
- Access MATLAB from Excel
- Package MATLAB code as Excel add-ins
Import Excel Data into MATLAB
The Import Tool makes it easy to bring data from an Excel spreadsheet into MATLAB. It shows the data both as it exists in Excel and how it will be represented in MATLAB, and recommends the best format for the data in MATLAB. Data import can be integrated into an automated analysis workflow in MATLAB, either by using code automatically generated by the Import Tool, or by calling MATLAB commands readtable and xlsread directly.
Excel data is naturally represented in MATLAB as a table, which organizes tabular data into columns of a single variable.
Access MATLAB from Excel
Spreadsheet Link™ connects Excel with the MATLAB workspace, enabling you to access the MATLAB environment from an Excel spreadsheet. You can exchange data between MATLAB and Excel, taking advantage of the familiar Excel interface while gaining access to MATLAB algorithms in image processing, data analytics, and control engineering.
Package MATLAB Code as Excel Add-ins
With MATLAB Compiler™, you can package math, graphics, and user interfaces created in MATLAB as Excel add-ins to perform analyses with Excel. These Excel add-ins can be distributed royalty-free to users who do not have MATLAB, and require no VBA programming.
With the addition of MATLAB Compiler SDK™, you can deploy add-ins to MATLAB Production Server™ for multiple Excel clients to access your MATLAB algorithms. This deployment ensures that users access the latest version of your analytics automatically with updates made to the algorithms deployed on the server.
Чтение Data Using электронной таблицы Excel как сервер автоматизации
В этом примере показано, как использовать Сервер автоматизации COM, чтобы получить доступ к другому приложению от MATLAB ® . Это создает пользовательский интерфейс, чтобы получить доступ к данным в файле Microsoft ® Excel ® . Если вы не используете Объектную модель программных компонентов (COM) в своих приложениях, то смотрите функции и примеры в электронных таблицах для альтернатив импортированию данных об электронной таблице Excel в MATLAB.
Чтобы включить связь между MATLAB и программой электронной таблицы, этот пример создает объект в Сервере автоматизации, запускающем приложение Excel. MATLAB затем получает доступ к данным в электронной таблице через интерфейсы, обеспеченные Сервером автоматизации Excel. Наконец, пример создает пользовательский интерфейс, чтобы получить доступ к данным в файле Microsoft Excel .
Методы, продемонстрированные
Использование Сервера автоматизации, чтобы получить доступ к другому приложению из MATLAB
Способы управлять данными Excel в типы, используемые в интерфейсе и графическом выводе
Следующие методы демонстрируют, как визуализировать и управлять данными об электронной таблице:
Реализация интерфейса, который позволяет строить выбранных столбцов электронной таблицы Excel.
Вставка фигуры MATLAB в файл Excel.
Чтобы просмотреть полный листинг кода, откройте файл actx_excel.m в редакторе.
Создайте Excel Automation Server
Первый шаг в доступе к данным об электронной таблице MATLAB должен запустить приложение Excel в процессе Сервера автоматизации с помощью actxserver функционируйте и ID программы, excel.application .
exl объект обеспечивает доступ ко многим интерфейсам, поддержанным программой Excel. Используйте Workbooks взаимодействуйте через интерфейс, чтобы открыть файл Excel, содержащий данные.
Используйте рабочую книгу Sheets взаимодействуйте через интерфейс, чтобы получить доступ к данным из Range объект, который хранит ссылку на область значений данных из заданного листа. Этот пример доступы все данные из первой ячейки в столбце A к последней ячейке в столбце G .
На данном этапе целый набор данных из файла Excel sheet1 получен доступ через интерфейс объекта области значений rngObj . Этот объект возвращает данные в массиве ячеек MATLAB exlData , который содержит и числовые и символьные данные:
Управляйте данными в рабочем пространстве MATLAB
Теперь, когда данные находятся в массиве ячеек, можно использовать функции MATLAB, чтобы извлечь и изменить части данных, чтобы использовать в интерфейсе и передать функции построения графика. Для предположений о данных смотрите Формат электронной таблицы Excel.
Следующий код управляет данными:
Код выполняет следующие операции:
Числовые данные извлечений от массива ячеек. Смотрите выражение индексации в фигурных скобках <> .
Конкатенации индивидуума удваиваются возвращенный операцией индексации. Смотрите выражение в квадратных скобках [] .
Изменяет результаты в массив, который располагает данные в столбцах с помощью reshape функция.
Извлекает текст в первой ячейке в каждом столбце exlData данные и хранилища текст в массиве ячеек lBoxList . Эта переменная используется, чтобы сгенерировать элементы в поле списка.
Формат электронной таблицы Excel
Этот пример принимает конкретную организацию электронной таблицы Excel, как показано в следующем изображении.
Формат файла Excel следующие:
Первый элемент в каждом столбце является текстом, который идентифицирует данные, содержавшиеся в столбце. Эти значения извлекаются и используются, чтобы заполнить поле списка.
Первый столбец Time используется в оси X всех графиков остающихся данных.
Все строки в каждом столбце читаются в MATLAB.
Создайте интерфейс Plotter
Этот пример использует интерфейс, который позволяет вам выбрать из списка данных об ответе и входа. Все данные отображены на графике как функция времени, и можно продолжить добавлять больше данных в график. Каждый график данных, добавленный к графику, заставляет легенду расширяться.
Интерфейс включает эти детали:
Легенда, которая обновляется, когда вы добавляете данные в график
Кнопка Clear, которая позволяет вам очистить все графики от осей
Сохраните кнопку, которая сохраняет график как файл PNG и добавляет его в другой файл Excel
Кнопка-переключатель, которая показывает или скрывает получаемый доступ файл Excel
Фигура удаляет функцию, чтобы отключить Сервер автоматизации
Выберите и отобразите данные на графике
Когда вы нажимаете кнопку Create Plot, ее функция обратного вызова запрашивает поле списка, чтобы определить, какие элементы выбраны, и отображает каждые данные на графике по сравнению со временем. MATLAB обновляет легенду, чтобы отобразить новые данные, все еще обеспечивая легенду для существующих данных.
Очистите оси
Плоттер спроектирован, чтобы постоянно добавить графики, когда пользователь выбирает данные из поля списка. Кнопка Clear Graph очищает и сбрасывает оси и очищает переменную, используемую, чтобы сохранить метки данных о графике (используемый легендой).
Отображение или Hide файл Excel
Программа MATLAB имеет доступ к свойствам приложения Excel, запускающегося в Сервере автоматизации. Путем установки Visible свойство к 1 или 0 , этот коллбэк управляет видимостью файла Excel.
Закрытие Figure и Terminate процесс автоматизации Excel
Поскольку Сервер автоматизации Excel запускается в отдельном процессе из MATLAB, необходимо отключить этот процесс явным образом. Нет никакой причины сохранить этот процесс, выполняющийся после закрытия интерфейса, таким образом, этот пример использует delete фигуры функционируйте, чтобы отключить процесс Excel с Quit метод. Также необходимо отключить процесс Excel, используемый в сохранении графика. Для получения информации о завершении этого процесса смотрите, Вставляют Графики MATLAB в электронную таблицу Excel.
Вставьте графики MATLAB в электронную таблицу Excel
Можно сохранить график, созданный с этим интерфейсом в файле Excel. Этот пример использует отдельный процесс Сервера автоматизации Excel с этой целью. Коллбэк для кнопки Save Graph создает изображение и добавляет его в файл Excel:
И оси и легенда копируются в невидимую фигуру, сконфигурированную, чтобы распечатать график, как вы видите, это на экране (изобразите PaperPositionMode свойство установлено в auto ).
print команда создает изображение PNG.
Используйте Shapes взаимодействуйте через интерфейс, чтобы вставить изображение в рабочую книгу Excel.
Сервер и интерфейсы инстанцируются во время фазы инициализации:
Используйте этот код, чтобы реализовать коллбэк кнопки Save Graph:
Запустите пример
Чтобы запустить пример, выберите любые элементы в поле списка и нажмите кнопку Create Plot. Выборочные данные, которым предоставляют этот пример, содержат три входа и три связанных набора данных ответа. Все эти наборы данных построены по сравнению с первым столбцом в файле Excel, который является данными времени.
Просмотрите файл данных Excel путем нажатия кнопки Show Excel Data File. Чтобы сохранить образ графика в различном файле Excel, нажмите кнопку Save Graph. Если у вас есть разрешение доступа для записи в текущей папке, то опция Save Graph создает временный файл PNG в той папке.
Следующее изображение показывает интерфейс с парой входа/ответа, выбранной в поле списка и построенной в осях.
Много функций построения графика могут отобразить данные на графике непосредственно из таблицы. Вы передаете таблицу в качестве первого аргумента к функции, сопровождаемой переменными, которые вы хотите построить. Можно задать или таблицу или расписание, и во многих случаях, можно построить несколько наборов данных вместе в тех же осях.
Следующие примеры используют scatter и bubblechart функции, чтобы продемонстрировать общий подход для того, чтобы отобразить данные на графике из таблицы. Чтобы учиться, поддерживает ли определенная функция построения графика таблицы, обратитесь к документации для этой функции.
Создайте график поля точек из таблицы
Считайте patients.xls как таблица и график Diastolic переменная по сравнению с Systolic переменная. По умолчанию подписи по осям автоматически установлены в имена переменных.
Постройте оба измерения артериального давления против Weight переменная и задает заполненные маркеры. Затем добавьте легенду. По умолчанию график использует различные цвета для систолических и диастолических измерений, и метки легенды отображают имена переменных.
Поскольку y-координаты прибывают из двух различных табличных переменных, не ясно, какова метка оси Y должна быть, таким образом, метка остается пробел.
Обновите график путем изменения таблицы
Когда вы передаете таблицу функции построения графика, копия таблицы хранится в SourceTable свойство объекта графика. Если вы изменяете содержимое таблицы, хранимой в том свойстве, график автоматически обновляется, чтобы показать изменения.
Считайте patients.xls как таблица и график Weight переменная по сравнению с Height переменная. Возвратите Scatter возразите как s , таким образом, можно получить доступ к его свойствам позже.
Чтобы изменить значение в таблице, используйте запись через точку, чтобы сослаться на таблицу от SourceTable свойство Scatter объект. В этом случае найдите максимальное значение Weight переменная и изменение это к 300 . График автоматически обновляется.
Примечание: Внесение изменений в таблицу в вашей рабочей области не оказывает влияния на график.
Настройте внешний вид маркера с табличными переменными
Для некоторых графиков можно варьироваться цвет, размер и прозрачность маркеров в графике согласно определенным переменным в таблице. Некоторые функции имеют аргументы для определения тех аспектов. Например, создайте пузырьковый график набора данных пациентов. Постройте Weight переменная по сравнению с Height переменная. Используйте четвертый аргумент, чтобы варьироваться пузырьковые размеры согласно Diastolic переменная. Используйте пятый аргумент, чтобы варьироваться цвет согласно Age переменная.
Добавьте шкалу палитры и измените размер пузырей так, чтобы они расположились между 5 и 20 'points'.
Когда вы используете scatter функция, можно использовать аргументы name-value или установить свойства на Scatter возразите, чтобы управлять различными аспектами маркеров. Например, создайте график рассеивания с заполненными маркерами и установите ColorVariable свойство путем определения аргумента значения имени. Затем добавьте шкалу палитры.
Затем варьируйтесь прозрачность маркеров согласно Systolic переменная. Для этого необходимо также установить MarkerFaceAlpha свойство к 'flat' .
Постройте табличные координаты со скалярным размером маркера
Чтобы задать скалярный размер маркера при создании графика рассеивания из таблицы, используйте SizeData аргумент значения имени.
Например, считайте patients.xls как таблица и график Weight переменная по сравнению с Height переменная. Используйте SizeData аргумент значения имени, чтобы задать маркеры с 200 точками.
Объедините таблицу и векторные данные
Много графиков, которые поддерживают таблицы, позволяют вам задавать некоторые аспекты своего графика с помощью табличной переменной и других аспектов с помощью векторов или матриц. Например, можно создать график рассеивания с помощью координат из таблицы и настроить цвета маркеров путем установки CData свойство к вектору, триплету RGB или матрице триплетов RGB.
Создайте график рассеивания с помощью данных из таблицы. Считайте patients.xls как таблица и график Weight по сравнению с Height переменные.
Затем измените цвета нанесенных на график точек с помощью вектора. Когда вы комбинируете данные из других источников как это, размер каждого вектора, матрицы, или табличная переменная должна быть совместима с графиком, который вы создаете. В этом случае создайте вектор под названием bpratio путем деления систолических значений на диастолические значения из таблицы. Поскольку bpratio выведен из той же таблицы как Height и Weight переменные, это имеет то же число элементов как те переменные, и таким образом, это совместимо с этим графиком.
Окрасьте каждую точку согласно отношению артериального давления путем установки CData свойство к bpratio . Затем добавьте шкалу палитры.
Можно также построить векторы или матрицы, и изменить график с помощью табличных переменных. После того, как вы создаете график, устанавливаете SourceTable свойство, и затем набор связанные с таблицей свойства, которые вы хотите. Связанные с таблицей свойства обычно имеют слово Variable на их имена. Например, постройте два вектора из 100 случайных чисел.
Измените цвета маркера так, чтобы они варьировались согласно значениям по табличной переменной. Считайте patients.xls как таблица tbl . Установите SourceTable свойство и варьируется цвета маркера согласно Age переменная в таблице. Поскольку таблица имеет 100 строк, и график имеет 100 точек, Age переменная совместима с графиком. Затем добавьте шкалу палитры в график.
Примечание: Автономная визуализация, такая как heatmap не поддерживайте комбинации таблицы и векторных данных.
Смотрите также
Функции
Свойства
Похожие темы
Открытый пример
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Документация MATLAB
Поддержка
© 1994-2021 The MathWorks, Inc.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
Здравствуйте! Я в матлабе абсолютный новичок. Пожалуйста, помогите построить графики, как на приведенных картинках. Прикладываю также файл с данными, где желтым показаны сроки эксплуатации, а зеленым - порядковый номер кривых. Я хочу научиться строить такие графики. Если несложно, то, пожалуйста, дайте краткие комметарии того, что прописывается в каждой строке кода. Заранее спасибо всем откликнувшимся!
Файлы
- Image 1.jpg
- Image 2.jpg
- Image 3.jpg
- Практическая.xlsx
Лучший ответ
Если Вы совсем новичок и не дружите с программным кодом, то можно все это сделать через гуй.
1. Вносите в MATLAB Ваши данные, он умеет их импортировать из exel таблиц, если это нужно. Ну или для пробы напишите в консоли команды ниже и поэкспериментируйте с тестовыми данными.
2. Переходите на вкладку plots
3. Выбираете необходимые данные в рабочем пространстве и смотрите какие графики из них можно построить.
Смотрите картинку.
Ответы Подписаться на ответы
Если Вы совсем новичок и не дружите с программным кодом, то можно все это сделать через гуй.
1. Вносите в MATLAB Ваши данные, он умеет их импортировать из exel таблиц, если это нужно. Ну или для пробы напишите в консоли команды ниже и поэкспериментируйте с тестовыми данными.
2. Переходите на вкладку plots
3. Выбираете необходимые данные в рабочем пространстве и смотрите какие графики из них можно построить.
Смотрите картинку.
Сложность в построении вызывает второй график. Строится тонкая линия.
Вы бы не могли показать, как с помощью кода выполняются эти построения.
Буду очень благодарна!
А вы сначала постройте их в гуе, а потом посмотрите в консоль, там будет описание Ваших действий в виде кода. допустим я из своих a и b построил какой-то график, пусть это будет
затем пишете в консоли:
И получаете ее сигнатуру с описанием всех параметров, и сможете настроить толщину Вашей линии.
Огромноое спасибо! Если возникнут вопросы, то снова напишу! Вы бы не могли написать расшифровку кода
subplot(2,2,1) - размещает на фигуре поле для графика функции
Первые двкее цифры - 2,2 - две шт. по вертикали, две по горизонтали
Третья цифра- номер по порядку
Спасибо Всем, кто откликнулся! У меня получился странный трехмерный график. По оси z должны идти вероятности, по оси х - годы, а по оси y - порядковые номера. У меня все наоборот. Как их поменять местами?
А как строили? Например surf(X,Y,Z) - по-моему тут очевидно.
PS: Можно просто повернуть. 9-я по счету кнопочка (после кнопки с рукой). Жмете, и далее как душе угодно! А где у вас что на осях - не ясно. Ибо не всегда такой "просто поворот" возможн, если тройка меяется с правой на левую.
PSPS: предполагаю, что стоит еще почитать про функцию meshgrid.
Все равно я что-то делаю не так. Прошу прощения за свою наглость, но помогите, пожалуйста, либо с кодом для этих графиков, либо с порядком действий для построения каждого из трех графиков. Получается не понятно что
вы файл-то приложите, или конкретные вопросы.
В файле Excel желтым показаны сроки эксплуатации, а зеленым - порядковый номер графиков.
Пожалуйста, напишите или код, или порядок действий для построения. Но очень большая просьба: в случае, если построение будет с помощью кода, дайте пояснения к действиям.
P. S. Повторно смогу приложить файлы после обеда.
Спасибо всем откликнувшимся!
Скачал картинку нумэр три.
все как на картинке, только развернуть (как писалось выше) и настроить колористику и внешний вид - это уж на любителя.
Спасибо! А как быть с первым и вторым графиком?
Откуда ж я знаю о чем эти графики и какая у вас задача?
"Я хочу научиться строить такие графики."
Построена кривуля по вашим данным из таблицы.
С виду на рис. это все разные вещи с разными данными. Хотя всяко может быть.
Нет, эти графики по одним и тем же данным.
В примере одни данные, мой расчёт дал другие данные
. . . о чем эти графики и какая у вас задача . . .
и вероятно это половина 1го получится.
Задача: по формулам в метод. указания оценить надёжность здания для различных сроков эксплуатации, начиная с момента постройки до окончания нормативного срока службы с шагом 5 лет. По полученным данным построить графики зависимости надёжности от срока службы. Примеры графиков приведены ниже. Т. е. ниже приведены примеры графиков, которые мне нужно построить по данным расчёта в Excel
Похоже кардинально чего-то не понимаю. По ппорядку:
1. У вас есть расчет. Его результат в таблице экселя.
Все верно?
2. Если да, то графики что получаются похожи на ваши примеры?
С виду очень похожи.
3. Вопрос дальнейший в чем, не могу уловить?
2. Я пока на работе, вечером буду пробовать.
Как я поняла, пока мне предложили решение только для 3 графика. Еще остаётся два
aBoomest, пожалуйста, скажите, что мне нужно подставлять в код, приведенный ниже, вместо "%Z - ваши данные"
%Z - ваши данные
y = 0:5:125;
x =1:24;
[X,Y] = meshgrid(x,y);
plot3(X,Y,Z);
Развернуть график не получаетя. У меня нет 9-ой кнопки после руки (скрин я приложила)
P.S. второй график я с горем построила, но линии получаются очень тонкие. Как их сделать такими же, как в примере со второй картинки?
Спасибо всем откликнувшимся!
Z - это массив значений из вашего экселя размером помнится 126 на 24. Судя по приложеной вами картинке, вы вроде все правильно сделали.
Вот тут вполне подробно все.
PS: Вопрос позвольте, с вашего разрешения? Вы что именно в matlab делаете? Расчеты? Модели? Или только рисование графиков, а все остальное ещё где-то (на бумаге)?
Завтра буду опять пытаться строить эти два графика и ещё первый. Т. е. для Z мне нужно в исходном файле выделить все значения надёжности? Как это должно выглядеть? Z=и указать диапазон ячеек. Я понимаю, что вопросы кажутся наивным, но для меня это проблема. Расчёты я делаю в Excel, как по заданию, а графики нужно построить в Matlab, используя импорт таблиц из Excel.
Когда я училась на бакалвриате у нас не было Matlab, но в магистратуре дали вот такое задание.
Расчёты я делаю в Excel, как по заданию, а графики нужно построить в Matlab, используя импорт таблиц из Excel.
FP^2. Странно. Бывает же.
Т. е. для Z мне нужно в исходном файле выделить все значения надёжности?
Способов можно придумать море, возможно преподаватель хочет что-то конкретного. Стоит почитать МУ по работе. А так с ходу . . .
1. Копирнуть таблицу прямо в скрипт. Добавить кв.скобки в начале и в конце и имя переменной . . . .
2. Создать в workspace переменнную:
- пр.кнопкой в области WS - команда New.
- Задаете имя.
- Дв.нажатием открываете содержимое (пока пустое).
- CtrlC -> CtrV из экселя.
4. Думаю еще вариантов возможно . . . . .
1. Что я неправильно пишу в коде? толщина линий не меняется
2. если просто рассматривать график без изменения толщин линий, то как изменить градацию шкалы (выделено красным на рисунке). Нужно, чтобы начиналась с 0 до 125 с шагом 20 лет
3. Такая же проблема, как и в п.2, с графиком в виде поверхности. Его строю через GUI, как советовали в начале темы
Пожалуйста, подскажите, как можно решить эти вопросы.
1. 30 . поставьте 2 или 3. Хотя просто ради интереса попробовал 30 - тоже нормально рисует, только линии на столько толстые, что совершенно ничего не понятно.
2.1 С т.з. редактирования графика. Кнопка Show plot tools and dock figure (16-я кнопка на панели). Тыкаете (один раз) в поле графика. На вкладке (X Axis или какой вам нужно) справа на краю есть кнопка Ticks. Появится окно с таблицей.
Столбец Locatons - это значения меток где она находится (значение координаты).
Столбец Labels - это то что написано. По идее обычно они одинаковые (так по умолчанию и будет) но вы во втором столбце можете написать все что угодно.
2.2.1 С т.з. исходных данных. Если вам нужен другой шаг, так вы в своих переменных только оставьте то что вам нужно и все. Это все можно в матлаб сделать. (урезать массивы)
2.2.2 А можно и в экселе таблицу иcходную . . . переделайте так как вам надо.
Здравствуйте, гуру MATLABa,
Есть такая система стоит сервер SQL, данные с БД переносятся в Эксель на другой комп по сети в режиме реального времени, сразу с изменением БД, и хотелось бы чтобы в Матлабе вырисовывался график зависимости, и обновлялся автоматически, так как в таблицу эксель каждую минуту добавляются данные. Как можно это сделать? Я просто сооовсем матлаб незнаю, пошарился в иннете нашел данный код:
Построение графика из таблицы
Добрый день! Имеем таблицу загруженную из MySQL (в понятих Matlab - dataset) следующего вида: .
Построение графика и таблицы решения задачи Коши
Построить график и вывести в виде таблицы решение задачи Коши на интервале . Начальные условия и t.
Построение графика и таблицы
Построить график и вывести в виде таблицы решение задачи Коши на интервале . Начальные условия и t.
построение графика. и поверхности в эксель))
Задание №1. y=e^cos2x-sin^3(|x|-1), надо построить график; Задание №2. z=ln(x^2+y^2+1)-e^x-y.
Вышло примерно вот так. Подозреваю что в коде есть недостатки, но вроде работает.
Замечание - после изменения данных табличный файл обязательно должен быть сохранен.
Построение графика-таблицы
Приветствую! Недавно окончил начальный курс Stepik по Python и родилась идея автоматизации.
Построение графика по данным таблицы
На форме есть stringgrid и chart. В таблице(3 столбца, но построить по значениям 2-ух) около 500.
Построение графика из данных таблицы oracle
Есть какие-то средства отображать на web график построенный либо из таблицы с данными, либо из.
Построение графика или сводной таблицы по текстовым значениям
Есть вот такая таблица: 01.02.2016 НА 01.02.2016 НА 01.02.2016 СА 01.02.2016 НА 01.02.2016 АК.
Построение графика Chart с использованием компонента Listbox на основе таблицы базы данных
Добрый день. Есть таблица базы данных которая загружается в DBGrid. Теперь нужна такая картина.
Читайте также: