Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/35: Рейтинг темы: голосов - 35, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 17.07.2012
Сообщений: 17

StringGrid, скрытие и отрисовка ячеек

17.07.2012, 23:49. Показов 7636. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте, хотел спросить совета у знающих людей.
У меня есть StringGrid1 заполненный данными.
Мне нужно чтобы например вокруг ячейки с координатами 5. 5. было видно пространство на 2 ячейки в разные стороны. А все вокруг остальные были скрыты.
Т. е. например в 5. 5. ячейки стоит единица белого цвета на черном фоне. вокруг цифры которые находятся в пределах двух ячейках от неё тоже видны. А все те что стоят дальше 2х ячеек от неё были закрыты, причем после нажатия клавишы на клавиатуре мне нужно передвинуть область с видимыми цифрами на одну координату Х или У, конечно же учитывая что скрытые цифры станут открытыми и наоборот. Можно ли это как то реализовать???
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.07.2012, 23:49
Ответы с готовыми решениями:

Отрисовка ячеек StringGrid
Приветствую! Столкнулся с проблемой при динамическом создании StringGrid-ov. Ячейки почему-то отрисовываются в самом последнем, из...

Отрисовка объединенных ячеек Stringgrid
Здравствуйте. Нужна помощь в рисовании ячеек Stringgrid. В фиксированной строке Stringgrid есть несколько полей (например, text4 и...

Отрисовка цветных ячеек в StringGrid
Делаю ИСС Кинотеатр и нужно сделать выбор места в зале. Делаю так создаю массив из 0 1 и 2. 0 - пустое пространство(белая клетка),...

24
0 / 0 / 0
Регистрация: 17.07.2012
Сообщений: 17
30.07.2012, 20:40  [ТС]
Студворк — интернет-сервис помощи студентам
Вот вопросик так вопросик((( и так, у меня есть массив(100х100, 100х100) мне нужно теперь сделать к тому что есть скроллинг, как это можно реализовать?

вот пример, если двигаться вдоль оси Х до конца и если следующяя координата будет больше чем максимальное количество клеток по икс это Х2 то тогда вот:

Delphi
1
2
3
4
5
X1:=X1+1;
X2:=X2+1;
for a:=X1 to X2 do
 for n:=Y1 to Y2 do
  Form1.StringGrid1.Cells[a,n]:=Massiv[a,n];
типа так?

Добавлено через 18 часов 20 минут
И так массив 100 на 100 двумерный, а отображается только с 0 до 30 по Х и У, как мне сделать чтобы при перемещении видимой области вплотную к границе СтрингГрида сделать типа скроллинга, чтобы отображались ячейки которые находятся за границей таблицы?
0
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
30.07.2012, 20:58
А селать грид 100x100 и потом манипулировать:
TopRow - индекс первой видимой строки,
LeftCol - индекс первого видимого столбца,
VisibleRowCount - количество видимых строк,
VisibleColCount - количество видимых столбцов.
не пойдёт?
1
0 / 0 / 0
Регистрация: 17.07.2012
Сообщений: 17
30.07.2012, 21:33  [ТС]
от души))))) спасибо огромнейшее!!!! ++++++

Добавлено через 15 минут
только опять загвоздка( получается передвигается область стринггрида, но посмотри в начале поста там есть код который делает видимой область только около ячейки котороя видимая, и передвигая её стринггрид смещается, но область не перерисовывается, как это можно исправить?
0
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
31.07.2012, 06:36
Читал тему.
Выложи, пожалуйста, последний вариант проекта, чтобы я посмотрел, что именно происходит. А то по кускам собирать код из темы - ну совсем не интересно.

Добавлено через 1 час 21 минуту
Вот что я сделал:
1. Сделал RowCoun и ColCount грида равными 100,
2. Свойство ScrollBars установил - ssNone,
3. В TForm1.FormCreate изменил:
Delphi
1
2
MapX2:=100; //30;
MapY2:=100; //28;
4. В таймере код немного изменил:
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
procedure TForm1.Timer1Timer(Sender: TObject);  // Обработка клавиатуры для передвижения;
begin
if getasynckeystate($49)<>0 then begin // Просмотр инвентаря On
operation:=1;
timer5.Enabled:=true;
timer1.Enabled:=false;
end;
 
if getasynckeystate($54)<>0 then herotake; // Включаем функцию "взять вещь"
 
 
 
if getasynckeystate($4C)<>0 then begin  // Включение режима просмотра
a:=StringGrid1.Col;
t:=StringGrid1.Row;
timer3.Enabled:=true;
Tru:=2;
timer1.Enabled:=false;
end;
 
if getasynckeystate($43)<>0 then begin // Режим рубки леса on
Label1.Caption:='Рубка леса, Выберите направление: ';
a:=StringGrid1.Col;
t:=StringGrid1.Row;
timer4.Enabled:=true;
timer1.Enabled:=false;
end;
 
if getasynckeystate($65)<>0 then
MonstersMove;
 
 
if getasynckeystate($62)<>0 then begin   //Down
If Form1.StringGrid1.Row = (Form1.StringGrid1.RowCount-1) then exit;
MoveHero(0, 1); // Передача координат для перемещения в функцию
end;
 
if getasynckeystate($68)<>0 then begin //Up
If StringGrid1.Row = 0 then exit;
MoveHero(0, -1);
end;
 
if getasynckeystate($64)<>0 then begin  //Left
If StringGrid1.Col = 0 then exit;
MoveHero(-1, 0);
end;
 
if getasynckeystate($66)<>0 then begin  //Right
If StringGrid1.Col = (Form1.StringGrid1.ColCount-1) then exit;
MoveHero(1, 0);
end;
 
if getasynckeystate($67)<>0 then begin   // Up-Left
If (StringGrid1.Row = 0) or (StringGrid1.Col = 0) then exit;
MoveHero(-1, -1);
end;
 
if getasynckeystate($69)<>0 then begin   // Up-Right
If (StringGrid1.Row = 0) or (StringGrid1.Col = (Form1.StringGrid1.ColCount-1)) then exit;
MoveHero(1, -1);
end;
 
if getasynckeystate($61)<>0 then begin   // Down-Left
If (StringGrid1.Row = (Form1.StringGrid1.RowCount-1)) or (StringGrid1.Col = 0) then exit;
MoveHero(-1, 1);
end;
 
if getasynckeystate($63)<>0 then begin   // Down-Right
If (StringGrid1.Row = (Form1.StringGrid1.RowCount-1)) or (StringGrid1.Col = (Form1.StringGrid1.ColCount-1)) then exit;
MoveHero(1, 1);
end;
 
end;
И всё вроде работает так как ты хотел в последнем вопросе.

Добавлено через 7 часов 16 минут
Ещё в функцию MoveHero добавил:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Form1.StringGrid1.Row:=Form1.StringGrid1.Row+MoveY;
Form1.StringGrid1.Col:=Form1.StringGrid1.Col+MoveX;
Hero1.y:=Hero1.y+MoveY;
Hero1.x:=Hero1.x+MoveX;
 
//Сдвиг видимой области при подходе к границе видимого поля
With Form1.StringGrid1 Do
Begin
  If (Row+Hero1.VisLong)>=RowCount Then TopRow:=RowCount-VisibleRowCount Else
  If Row>(TopRow+VisibleRowCount-Hero1.VisLong) Then
  TopRow:=Row-VisibleRowCount+Hero1.VisLong;
  If (Row-Hero1.VisLong)<0 Then TopRow:=0 Else
  If (Row-Hero1.VisLong)<TopRow Then
  TopRow:=Row-Hero1.VisLong;
 
  If (Col+Hero1.VisLong)>=ColCount Then LeftCol:=ColCount-VisibleColCount Else
  If Col>(LeftCol+VisibleColCount-Hero1.VisLong) Then
  LeftCol:=Col-VisibleColCount+Hero1.VisLong;
  If (Col-Hero1.VisLong)<0 Then LeftCol:=0 Else
  If (Col-Hero1.VisLong)<LeftCol Then
  LeftCol:=Col-Hero1.VisLong;
End;
1
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
28.11.2018, 22:30
Простите, что трупик подымаю

код:
Delphi
1
2
      for a:=0 to Form1.StringGrid1.RowCount-1 do
        if abs(a-x)>3 then Form1.StringGrid1.RowHeights:=0;
делает видимые только пару строк сверху и снизу от строки Х.
С колонками, аналогично.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.11.2018, 22:30

StringGrid Цвет фона пустых ячеек и ячеек с текстом
Доброго дня.. Задачка следующая: Ячейки в StringGrid'e заполняются по блоку из Timer. В StringGrid1DrawCell блок анализа...

Возможность вручную писать данные в ячейки StringGrid и заполнение ячеек StringGrid данными из файла после нажатия кнопки
Здравствуйте! Помогите, пожалуйста. Мне необходимо сделать следующее: реализовать возможность вручную писать данные в ячейки StringGrid...

Скрытие/Раскрытие ячеек
Приветствую всех! есть табличка &lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; id=&quot;table&quot;&gt; &lt;tr&gt; &lt;td width=&quot;10px&quot;&gt;Александр&lt;/td&gt; &lt;td...

TStringGrid отрисовка ячеек
добрый вечер. Есть ValueListEditor (по сути тот же StringGrid). естественно, рисуется с учетом текущей темы или стиля. так вот. можно ли...

Отрисовка StringGrid
procedure TForm16.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin with...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru