Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
202 / 126 / 25
Регистрация: 09.01.2022
Сообщений: 458

Как использовать свойство Objects в TStringGrid?

16.11.2024, 20:55. Показов 3098. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
 Комментарий модератора 
Тема вынесена из Таблица с динамически меняющейся детализацией


Цитата Сообщение от Massaraksh7 Посмотреть сообщение
TStringGrid позволяет это делать, в событии OnDrawCell можно рисовать что хочешь, а в свойстве Objects можно хранить любые данные для каждой ячейки.
Здравствуйте!

Только что просматривал тему, хочу спросить, где в TStringGrid находится это свойство Objects и как с ним можно работать?


п.с. Я искал его в свойствах Objects Inspector, в компонент TStringGrid, но такого свойства Objects не нашел?!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.11.2024, 20:55
Ответы с готовыми решениями:

Свойство DefaultDrawing у TStringgrid
Я попытался создать программу для ознакомление с некоторыми свойствами TStringgrid. Но столкнулся с некоторыми проблемами: 1) Не смог...

Динамическое создание TStringGrid, свойство goEditing
Добрый день, уважаемые форумчане. Столкнулся с такой проблемой. Как при динамическом создании TStringGRid присвоить свойство goEditing =...

Какое свойство TStringGrid отвечает за ввод данных напрямую пользователем в ячейки контрола?
Всем здравствуйте. Понятно, что данные в TStringGrid могут быть занесены программно. Могу ли я вносить данные в пустые ячейки сетки с...

28
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33466 / 21565 / 8249
Регистрация: 22.10.2011
Сообщений: 37,017
Записей в блоге: 12
28.11.2024, 22:26
Студворк — интернет-сервис помощи студентам
Какие именно процедуры? Что должно быть ДО нажатия на Старт?
0
202 / 126 / 25
Регистрация: 09.01.2022
Сообщений: 458
28.11.2024, 22:28  [ТС]
п.с. volvo,

Ваш проект не хочет компилироваться, пишет, что не хватает какого-то пакета, фото прилагаю.
И для чего нужен этот пакет?

(Сейчас я использую Lazarus 3.4 - я не обновлял его до последней версии 3.6. Я работаю с Windows 7 — потому что она моя любимая ОС, а кроме того, у меня также есть и Windows 11 и 10, и 8.1, но они мне не нравятся!)
Миниатюры
Как использовать свойство Objects в TStringGrid?  
0
202 / 126 / 25
Регистрация: 09.01.2022
Сообщений: 458
28.11.2024, 22:30  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Какие именно процедуры? Что должно быть ДО нажатия на Старт?
Ничего - только пустой StringGrid1.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33466 / 21565 / 8249
Регистрация: 22.10.2011
Сообщений: 37,017
Записей в блоге: 12
28.11.2024, 22:38
Лучший ответ Сообщение было отмечено ivanov_333 как решение

Решение

Цитата Сообщение от ivanov_333 Посмотреть сообщение
пишет, что не хватает какого-то пакета
А, ну да, это я себе ставил дополнительные контролы. Можно убрать, если зайти через Проект - Инспектор проекта, и удалить все требуемые пакеты, кроме LCL...

Цитата Сообщение от ivanov_333 Посмотреть сообщение
Ничего - только пустой StringGrid1.
Тогда вот так:

Pascal
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
procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
  pb : TProgressBar;
begin
  StringGrid1.Options := StringGrid1.Options - [goSmoothScroll];
  for i := 1 to StringGrid1.RowCount - 1 do
  begin
    StringGrid1.Cells[1, i] := 'Row ' + IntToStr(i);
    pb := TProgressBar.Create(StringGrid1);
    pb.Parent := StringGrid1;
    pb.Visible := False;
 
 
    StringGrid1.Cells[StringGrid1.ColCount - 1, i] :=
      IntToStr(Random(90) + 10);
    StringGrid1.Objects[StringGrid1.ColCount - 1, i] := (pb as TObject);
  end;
  StringGrid1.OnDrawCell := @StringGrid1DrawCell;
 
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  StringGrid1.OnDrawCell := nil;
end;
 
procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
  aRect: TRect; aState: TGridDrawState);
var
  Grid : TStringGrid;
  pb : TProgressBar;
  R : TRect;
begin
  Grid := Sender as TStringGrid;
 
  if Assigned(Grid.Objects[ACol, ARow]) then
  begin
    R := ARect;
    R.Inflate(-1, -1);
    pb := Grid.Objects[ACol, ARow] as TProgressBar;
    pb.BoundsRect := R;
    pb.Visible := True;
    pb.Position := StrToInt(Grid.Cells[ACol, ARow]);
  end;
end;
1
202 / 126 / 25
Регистрация: 09.01.2022
Сообщений: 458
28.11.2024, 23:06  [ТС]
volvo,

Вы супер программист!
Большое спасибо вам от всего сердца и души!
Желаю вам всего наилучшего!
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
29.11.2024, 02:03
Цитата Сообщение от volvo Посмотреть сообщение
Да там кода-то 10 строк всего
Ну хоть 10, хоть одну. Но нужно же её откуда-то взять или придумать. Я только это и имел в виду.
0
202 / 126 / 25
Регистрация: 09.01.2022
Сообщений: 458
01.12.2024, 01:20  [ТС]
volvo,
Возникли еще два дополнительных вопроса:

1. Почему мой проект не хочет компилироваться, если я не поставлю на форму один компонент TProgressBar?
А Ваш проект компилируется без этого условия!

2. Можно ли вы объясните мне, что именно делает этот код?

Pascal
1
2
StringGrid1.Cells[StringGrid1.ColCount - 1, i] := IntToStr(Random(90) + 10);
    StringGrid1.Objects[StringGrid1.ColCount - 1, i] := (pb as TObject);
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,495
01.12.2024, 02:08
Цитата Сообщение от ivanov_333 Посмотреть сообщение
если я не поставлю на форму один компонент TProgressBar?
Установка этого компонента добавляет в uses модуль ComCtrls. Можно его дописать вручную и не ставить компонент, либо поставить и тут же удалить TProgressBar с формы.

Цитата Сообщение от ivanov_333 Посмотреть сообщение
что именно делает этот код?
Помещает в ячейку строку и помещает в массив Objects по тому же индексу ссылку на объект из pb.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33466 / 21565 / 8249
Регистрация: 22.10.2011
Сообщений: 37,017
Записей в блоге: 12
01.12.2024, 12:07
Цитата Сообщение от ivanov_333 Посмотреть сообщение
что именно делает этот код?
Заносим в ячейку значение для Position прогресс-бара, и в Objects той же ячейки - сам прогресс-бар. И потом, когда нужно отобразить прогресс, вытаскиваем значение из ячейки, оно и будет Position для прогресс-бара. Чтобы изменить отображение прогресса - достаточно поменять значение Cell, в которой этот прогресс находится.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.12.2024, 12:07

Как использовать свойство TopIndex
В справке приведен пример: Private Sub CommandButton1_Click() ListBox1.TopIndex = ListBox1.ListIndex End Sub Private Sub...

Как использовать свойство AccessibleRole?
Хочу сделать из toolstripmenuitem радиокнопки, чтобы можно было в меню выбирать какой-либо один вариант из нескольких. Выставляю у двух...

Как использовать свойство DataSet->CaseSensitive ?
это для смены регистра, т.е различать строчные и заглавные буквы или нет? моя задача такова открываю файл, в файле произвольный...

Как использовать свойство Background у textBox-a?
Собственно весь вопрос. Нашёл код на МСДН: void OnTextBoxTextChanged(object sender, TextChangedEventArgs e) { ...

Как использовать свойство составного элемента компонента?
Всем здравствуйте. Как правило компоненты состоят из нескольких более простых компонентов. Как выяснить из каких, сколько их, как...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru