Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
7 / 4 / 2
Регистрация: 26.11.2012
Сообщений: 114
1

Вывод данных из БД в виде сетки (н-р 5х5)

14.03.2013, 23:54. Показов 1603. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет, скажу сразу ничего похожего не нагуглил (может искал плохо)...
Есть у меня в программе список файлов с иконками выглядит так: (DBGridEh, названия берутся из БД Access)
Скрин
Вот собственно вопрос: как можно, и вообще возможно ли реализовать отображение в таком виде:
Как должно быть

Опишу нюансы: название картинки хранится в БД, также название тоже хранится в БД. Еще необходимо, чтобы при нажатии на определенную иконку или название открывался файл (это все реализовано в DBGridEh, но вот тут возможно ли?) мне нужно знать хотя - бы какой компонент позволяет реализовать такое? Или может можно выбрать какой - то вариант вида DBGridEh... В общем если кто поможет, спасибо большое за помощь!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2013, 23:54
Ответы с готовыми решениями:

Вывод данных из базы данных MySQL в PHP в виде дерева.
У нас в сети решили сделать портал-базу по рефератам. Все я сделал остались две траблы, про первую...

данные в Excel в виде сетки
Каким образом лучше разместить данные, выбранные с помощью рекордсета в сетку, подобную Excel....

Заполнение таблицы в виде сетки
Такая проблема:Нужно заполнять расписание игр в виде сетки. Для примера: Номер корта ...

Дана матрица 5х5. Вывести ее в нижнем треугольном виде.
Дана матрица 5х5. Вывести ее в нижнем треугольном виде.

15
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
15.03.2013, 01:54 2
Не в гриде. Возьми ListView, и в цикле заполни данными из БД.
1
7 / 4 / 2
Регистрация: 26.11.2012
Сообщений: 114
15.03.2013, 02:53  [ТС] 3
заполнить не проблема, пробовал в стринггриде, но вот как сделать действие аналогичное действию в дбгриде, т.е. при клике на поле query переходит на эту запись? Надеюсь ясно выразиося... Реально ли?

Добавлено через 11 минут
хотя и насчет этого мысля появилась, вот теперь вопрос: как в листвью (первый раз с ним сталкиваюсь) добавлять элемент при этом сразу прописав для него и картинку (не из ImageList'a) и Caption? Заранее спасибо)
0
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
15.03.2013, 04:16 4
Цитата Сообщение от ildar6994 Посмотреть сообщение
т.е. при клике на поле query переходит на эту запись
Не понял?
Поясняй какой именно результат должен быть?
1
1074 / 987 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
15.03.2013, 08:36 5
У StringGrid помимо свойства Cells есть свойство Objects. Для хранения ссылок (указателей).
Каждый элемент Objects "синхронизирован" (совпадает по координатам в сетке) с соответствующим элементом из Cells.
Но в Objects можно держать и целочисленные значения (указатели - и есть целые числа).
Если каждая запись в таблице БД имеет уникальный идентификатор (в Аксессе называют "счетчик"), то
каждой ячейке в StringGrid можно сопоставить свой идентификатор.
Например так (где-то в цикле):
Delphi
1
  StringGrid1.Objects[C, R] := TObject(ADOQuery1.FieldByName('id').AsInteger);
Для позиционирования указателя в датасете на нужную запись, когда выделена какая-то определенная ячейка можно применить метод Locate,
используя сохраненный идентификатор:
Delphi
1
ADOQuery1.Locate('id',Integer(StringGrid1.Objects[StringGrid1.Col, StringGrid1.Row]),[]);
Похожим образом можно использовать свойство Data, которое в ListView есть у каждого ListItem.
как в листвью ...прописав для него и картинку (не из ImageList'a)
Без ImageList'a никак. В ListView нет отдельного хранилища для картинок. А что, собственно, мешает вначале загрузить в ImageList изображения и затем их использовать в ListView?
1
7 / 4 / 2
Регистрация: 26.11.2012
Сообщений: 114
15.03.2013, 11:19  [ТС] 6
Скандербег, спасибо, но все-таки от StringGrid'a отказался, т.к. не получилось сделать вид, который нужен..
Насчет локейта как раз таки и додумался, только в ListView, в нем по-любому будет Caption (Название из БД) так вот это название само по себе униакально и поэтому можно осуществлять поиск по нему)
Но вот хранить это негде будет поэтому просто при клике на элемент ListView будет происходить локейт и все)
Вот только осталось разобраться с изображениями думаю так:
Есть общий цикл, который заполняет листвью данными из бд, происходит как-то так (пока просто наброски):
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
var
  Item: TListItem;
begin
for i:=0 to adoquery1.recordcount do
begin
  Item := ListView.Items.Add;
  Item.Caption := AdoQuery1.FieldByName('Название').AsString;
  ImgaeList1.Items.Add('icons\'+AdoQuery1.FieldByName('Иконка').AsString)//путь до иконки
  ВОТ ТУТ ВОПРОС: КАК УЗНАТЬ С КАКИМ ImageIndex'ом добавилась картинка в ImageList??
  Item.ImageIndex:=...
end;
end;
0
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
15.03.2013, 11:57 7
Все очень просто предыдущий + 1. Начинается с 0.
1
7 / 4 / 2
Регистрация: 26.11.2012
Сообщений: 114
15.03.2013, 12:08  [ТС] 8
все разобрался уже))
0
1074 / 987 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
15.03.2013, 12:12 9
ВОТ ТУТ ВОПРОС: КАК УЗНАТЬ С КАКИМ ImageIndex'ом добавилась картинка в ImageList??
У ImageList нет свойства Items.
При добавлении изображения методом ImageList.Add, он возвращает индекс добавленного в список изображения.
Можно узнать индекс последней добавленной картинки с помощью свойства ImageList.Count.

Но добавлять картинки ImageList из файлов не умеет. Для этого нужно создать TBitmap (или TIcon), загрузить картинку из файла в этот объект, затем вставить его в ImageList.

Ваша задача достаточно трудоемка, какие-бы компоненты не использовались, с тем чтобы показывать и картинки и подписи под ними.
По крайней мере, три из них можно назвать: ListView, DrawGrid и DBGridEh.
Да, последний компонент (если он может показывать картинки в ячейках) тоже можно приспособить, но не совсем тривиальным способом.
И каждый из них требует немалого ковыряния.
1
7 / 4 / 2
Регистрация: 26.11.2012
Сообщений: 114
15.03.2013, 12:36  [ТС] 10
Скандербег, уже все сделал, оказалось намного проще чем думал) ImageList грузит иконки из файлов так:
Delphi
1
ImageList1.LoadFromFile(ExtractFilePath(Application.ExeName)+'icons\'+AdoQuery1.FieldByName('Иконка').AsString);
Locate поставил на OnSelectItem:
Delphi
1
  AdoQuery1.Locate('Название', Item.Caption, [loCaseInsensitive, loPartialKey]);
А индекс картинки определяется так:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
var i,s:Integer; Item: TListItem;
begin
  Imagelist1.Clear;
  s:=0;
for i:=0 to ADOQuery1.RecordCount-1 do
begin
...
  Item.ImageIndex:=s;
  s:=s+1;
...
end;
end;
Все работает более чем отлично!) Спасибо за помощь)

Вывод данных из БД в виде сетки (н-р 5х5)
0
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
15.03.2013, 12:43 11
А ты пишешь лаунчер?
0
1074 / 987 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
15.03.2013, 12:49 12
ImageList грузит иконки из файлов так:
И то правда. Виноват, забыл.
0
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
15.03.2013, 12:53 13
Вот все руки не доходят
Вывод данных из БД в виде сетки (н-р 5х5)
0
7 / 4 / 2
Регистрация: 26.11.2012
Сообщений: 114
15.03.2013, 13:16  [ТС] 14
rdama, я пишу каталогизатор приложений с описанием и т.д. для приложений Android, с подгрузкой описания с сайта и т.д.)) вот предложили сделать новый вид, завелся этой идеей))

Добавлено через 2 минуты
делал в отдельном проекте, дабы не испортить основной, теперь осталось интегрировать это в основной...

Добавлено через 3 минуты
rdama, а в командую строку отправляется через CreateProcess? или как?
Удобная штука иметь под рукой командную строку например с помощью горячих клавиш, часто ей пользуюсь и постоянно CTRL+R>cmd))
0
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
15.03.2013, 13:28 15
Delphi
1
ShellExecute(Handle,'open','cmd.exe',PChar('/u /c ' + _cmd_text.Text),nil,SW_SHOW);
_cmd_text.Text Соответственно команда передаваемая в консоль
1
7 / 4 / 2
Регистрация: 26.11.2012
Сообщений: 114
15.03.2013, 13:46  [ТС] 16
rdama, аа вон оно как) спасибо, может пригодиться.
0
15.03.2013, 13:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2013, 13:46
Помогаю со студенческими работами здесь

Суммирование данных и вывод данных в виде отчёта
Здравствуйте !!! Нужно сделать вот что,в базе есть таблица "Статистика повреждений". В ней...

Вывод данных в виде таблиц
Нужно составить таблицу перевода градусов (от 1 до 180 с шагом 10) в радианы. Помогаю другу с...

Вывод данных из БД в виде таблицы
Доброго времени суток! В общем имеется БД с фото. Нужно из нее вывести фото вряд по три штуки ну и...

Вывод данных в виде таблицы
как оформить сделать по простому что бы выводили данными в виде таблицы вроде как можно...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru