Форум программистов, компьютерный форум, киберфорум
Delphi: FireMonkey
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/65: Рейтинг темы: голосов - 65, средняя оценка - 4.83
5 / 5 / 1
Регистрация: 06.11.2013
Сообщений: 35

TGrid и TStringGrid в обезьяне

06.11.2013, 10:23. Показов 12622. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Цел распарсить XML файл со строками и картинками в грид, попробовал сначала StringGrid все хорошо родной Cells[x,x] позволили заполнить таблицу строками, но как добавить в ячейку картинку нигде не нашел. Попробовал Tgrid там не смог даже и текстом забить TStringColumn, TImageColumn мне тоже не поддался. куча информации в интернете с методами которых почему то у меня в компоненте нет )))) типа CellControlByRow. Помогите с небольшими примером.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.11.2013, 10:23
Ответы с готовыми решениями:

Задача об обезьяне и банане
Пожалуйста, помогите написать код задачи об обезьяне и банане на языке пролог сейчас срочно

Коррекция ширины колонки TGrid - не работает...
Есть грид, sgTable, допустим в нём 3 ячейки, в каждом по 1 слову. И есть список слов slBlackWord: TStringList; Когда таблица в фокусе,...

Как добавить в ячейку TGrid кнопку?
Добрый день! Подскажите пожалуйста, как можно добавить в ячейку TGrid кнопку?

10
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33188 / 21485 / 8232
Регистрация: 22.10.2011
Сообщений: 36,866
Записей в блоге: 12
06.11.2013, 13:24
В чем проблема, собственно? Положил на форму TGrid, зашел в его Items Editor (правый клик мыши на контроле), добавил один TStringColumn, один TImageColumn, вышел, написал на кнопку вот такой код:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin
  for i := 0 to 9 do
  begin
    (StringColumn1.CellControlByRow(i) as TTextCell).Text := IntToStr(i);
 
    // Получать битмап можно откуда угодно
    (ImageColumn1.CellControlByRow(i) as TImageCell).Bitmap.Assign(Image1.Bitmap);
  end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Grid1.rowCount := 10;
end;
, запустил:

0
2 / 2 / 0
Регистрация: 06.11.2013
Сообщений: 7
06.11.2013, 20:11
Да , но у меня на StringColumn1.CellControlByRow(i) компилятор ругается [dcc32 Error] Unit3.pas(121): E2362 Cannot access protected symbol TColumn.CellControlByRow. В этом и проблема. (сори за другой ник пароль не записал на работе из дому пришлось заново регится)
0
5 / 5 / 1
Регистрация: 06.11.2013
Сообщений: 35
07.11.2013, 09:40  [ТС]
Это при компиляции ошибка , но и метод.CellControlByRow(i) сразу подчеркивается красным как отсутствующий. Судя по тому что я на рыл. Вродибы это из-за того что FMX 1.0 сильно переработали в 2.0 ))) и синтаксис изменился(использую XE5), а написать нормальную документацию видимо забыли. при этом в документации есть странный пример заполнения таблиц:
Delphi
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
41
42
43
44
45
46
47
48
49
50
51
52
TForm1 = class(TForm)
  Grid1: TGrid;
  Column1: TColumn;
  CheckColumn1: TCheckColumn;
  StringColumn1: TStringColumn;
...
  procedure Button2Click(Sender: TObject);
  procedure Grid1SetValue(Sender: TObject; const Col, Row: Integer; const Value: TValue);
  procedure Grid1GetValue(Sender: TObject; const Col, Row: Integer; var Value: TValue);
private
  A: array of TValue;
public
  constructor Create(AOwner: TComponent); override;
end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.fmx}
 
constructor TForm1.Create(AOwner: TComponent);
begin
  inherited;
  SetLength(A, Grid1.RowCount);
end;
 
procedure TForm1.Grid1GetValue(Sender: TObject; const Col, Row: Integer; var Value: TValue);
begin
  // Gets the value from a cell in the first column
  if Col = 0 then
    Value := A[Row];
end;
 
procedure TForm1.Grid1SetValue(Sender: TObject; const Col, Row: Integer; const Value: TValue);
begin
  // Sets the value for a cell in the first column
  if Col = 0 then
    A[Row] := Value;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  // Change values in the data array
  A[0] := 'Ok';
  A[1] := True;
  A[2] := 1234;
  A[3] := Pi;
  // Updates data in the grid cells
  Grid1.UpdateColumns;
end;
Я вообще не могу понять в каком месте массив A становится строками грида и почему. И какого именно столбца, и похожий пример сделал так у первый стобик и правда заполняется.

Добавлено через 24 минуты
Если в событиях менять значение col=1.... заполнится соответствующий столбец, но и что теперь нет прямого варианта записи в ячейку кроме как через событие, это же извращение ... или я что то не нашел еще.

Добавлено через 3 часа 39 минут
И есть еще проблема катинка в формате emf. может подскажет тоже как в грид его запихать.
0
2 / 2 / 0
Регистрация: 31.03.2014
Сообщений: 37
08.04.2014, 17:04
НАШЕЛ
Grid1.Columns[col].Controls.Items[row]- обращение к ячейке
0
0 / 0 / 0
Регистрация: 11.12.2014
Сообщений: 5
18.11.2015, 23:04
Парни, я так и не понял как вставлять текст или картинку в нужную ячейку, может еще раз расписать пожалуйста
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
19.11.2015, 09:08
Смысл в том, что все данные хранятся вне Грида.
Грид их только отображает.
И то, что он будет отображать определяется в обработчике Grid1GetValue.
Например, мы хотим в первой колонке отобразить некие данные, хранящиеся в массиве A.
Для этого мы проверяем, что идет заполнение первой колонки (if Col = 0 then) и, если это так, передаем соответствующее значение массива А для отрисовки в Гриде (Value := A[Row]).
Аналогичным образом отображаются и картинки.
0
0 / 0 / 0
Регистрация: 11.12.2014
Сообщений: 5
19.11.2015, 09:52
Спасибо за разъяснение) А такой вот еще вопрос , а как тогда в stringgrid(он то хранит данные?) вставить изображение, я так понял что через drawcolumncell, как действовать в таком случаем?
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
19.11.2015, 11:51
Цитата Сообщение от Ph1l1n1 Посмотреть сообщение
я так понял что через drawcolumncell
Да.
0
0 / 0 / 0
Регистрация: 17.05.2017
Сообщений: 10
24.05.2017, 01:13
А как увеличить кол-во строк в TGRid. Компонент находится изначально без строк. А когда данные введены в программу нужно сделать что то такое:

Delphi
1
  mainEmployeeTable.RowCount:= mainEmployeeTable.RowCount + 1;
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,656
Записей в блоге: 21
24.05.2017, 09:10
в FMX есть специальный тип колонок для отображения картинок
укажите ImageList в свойствах грида и grid.Cells[x,y]:='5'
в ячейке отобразится картина из ImageList с индексом 5
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.05.2017, 09:10
Помогаю со студенческими работами здесь

Как в ячейке TGrid использовать TDateTime, TCheckBox, TString и TButton?
Добрый день! Подскажите пожалуйста - как в ячейке TGrid использовать TDateTime, TCheckBox, TString и TButton ? Не совсем...

TStringGrid
Есть на форме элемент StringGrid1. В его 0 ячейку не влезает название "Расстояния до точек изменения площадей сечения , см". Можно...

Сложности с TStringGriD
В картинке в принципе отображено, что нужно в общем. Уточню, пользователю нужно выделять данные в таблице в момент выделения на графике...

TStringGrid в деталях
Нужно вернуть значение aCol, aRow при двойном клике по ячейке, для определённых действий, например это перезагрузка TStringGrid новыми...

Сортировка в TStringGrid.
procedure SgSort(aSg : TStringGrid; const aCol : Integer); var SlSort, SlRow : TStringList; i, j : Integer; begin SlSort :=...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru