Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Злобный Зайц
11 / 11 / 1
Регистрация: 21.10.2010
Сообщений: 414
1

Как поменять ячейку в программно-созданном TStringGrid?

03.01.2013, 20:58. Просмотров 662. Ответов 15
Метки нет (Все метки)

Есть динамически созданный массив TStringGrid. В OnSelectCell прописана своя процедура. В этой процедуре получаю номер столба и номер строки кликнутой ячейки. А как получить номер члена массива, чтобы в этом конкретном стринггриде, допустим, выделить кликнутую ячейку, или поменять её содержимое?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2013, 20:58
Ответы с готовыми решениями:

Как у программно созданного TStringGrid включить goColSizing?
Сабж, однако. for i:=0to CompCoutn-1do begin ...

Нужно вызвать событие в программно созданном SocketServer
Дело такое. Я организовываю чат через TSocketServer/client У меня идёт...

Изменение цвета в созданном программно компоненте Panel
Добрый вечер. Создал несколько компонентов panel, подскажите, как обращаться и...

Программно создать новые TStringGrid
procedure TForm1.btn3Click(Sender: TObject); var i,j:Integer; Net:TNet;...

Поменять кодировку в файле, созданном в dos приложении
нашел в нэте 2 функции для смены кодировки с 1251 в 866 function...

15
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
03.01.2013, 21:01 2
Для того чтобы в обработчике OnSelectCell выделить кликнутую ячейку или поменять её содержимое не нужен никакой массив.
0
Злобный Зайц
11 / 11 / 1
Регистрация: 21.10.2010
Сообщений: 414
03.01.2013, 21:06  [ТС] 3
Да не для того массив создан, чтобы поменять в нём ячейку стринггрида! Всё наоборот: массив создан, все стринггриды заполнены, надо теперь получить доступ к ячейкам. Опять я, что-ли как-то не так излагаю?
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
03.01.2013, 21:11 4
Цитата Сообщение от Злобный Зайц Посмотреть сообщение
надо теперь получить доступ к ячейкам
Я и спрашиваю, зачем для этого понадобился массив ?
Доступ к ячейкам грида, в результате клика на ячейке которого этим гридом был вызван его обработчик события OnSelectCell, распрекрасно осуществляется вне зависимости от того, есть у тебя какой-то там массив или нет его.
0
Злобный Зайц
11 / 11 / 1
Регистрация: 21.10.2010
Сообщений: 414
03.01.2013, 21:18  [ТС] 5
Не, ну я, конечно тупой, но ....
Может быть, давайте уж я выложу свои каракули. Ато, чувствую, мы так никогда друг друга не поймём. Видно, я совсем как-то криво излагаю.
0
Вложения
Тип файла: rar TablFromNetlist.rar (446.8 Кб, 5 просмотров)
FIL
Модератор
3419 / 2555 / 726
Регистрация: 19.09.2012
Сообщений: 7,923
03.01.2013, 21:24 6
Если имеется ввиду возможность редактировать значение в выбранной ячейке, то:
Delphi
1
StringGrid1.Options := StringGrid1.Options + [goEditing];
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
03.01.2013, 21:29 7
Код
procedure TForm1.strngrdSelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
  TStringGrid(Sender).Cells[ACol, ARow] := 'Меня кликнули !';
end;
Еще раз - зачем тебе для этого массив ?
0
droider
Universal
Эксперт Pascal/Delphi
4397 / 2445 / 763
Регистрация: 04.10.2012
Сообщений: 8,890
03.01.2013, 21:33 8
Запись в ячейку ДБГрида может поможет
0
Злобный Зайц
11 / 11 / 1
Регистрация: 21.10.2010
Сообщений: 414
03.01.2013, 21:34  [ТС] 9
Не, я, кажется, щас разбегусь и башкой апстену убьюсь!
Доктор, меня никто не слышит! Доктор, меня все игнорируют!!!

Я уже сорок листов исписал, я же объясняю : Динамически создаётся массив стринггридов. На всю толпу одна процедура OnSelectCell. Когда я кликаю на ячейке ОДНОГО ИЗ ЧЛЕНОВ МАССИВА, попадаю в общественный OnSelectCell. Там получаю номер столба и номер строки. !!!!!НО!!!!! Не вижу, из какого именно стринггрида туда прилетел! То есть, знаю координаты ячейки, а какому стрнинггриду она принадлежитт - НЕТ!!!
0
droider
Universal
Эксперт Pascal/Delphi
4397 / 2445 / 763
Регистрация: 04.10.2012
Сообщений: 8,890
03.01.2013, 21:34 10
Отменяю. У Вас StringGrid
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
03.01.2013, 21:38 11
Цитата Сообщение от Злобный Зайц Посмотреть сообщение
Я уже сорок листов исписал
Но так и не объяснил вменяемо зачем тебе массив)
0
FIL
Модератор
3419 / 2555 / 726
Регистрация: 19.09.2012
Сообщений: 7,923
03.01.2013, 21:39 12
Цитата Сообщение от Злобный Зайц Посмотреть сообщение
Не вижу, из какого именно стринггрида туда прилетел! То есть, знаю координаты ячейки, а какому стрнинггриду она принадлежитт - НЕТ!!![/B]
Из того, по которому кликаешь. Тебе Имя Грида надо что ли?
Delphi
1
ShowMessage(TStringGrid(Sender).Name);
При условии, что ты его задаешь при создании Грида.
0
Злобный Зайц
11 / 11 / 1
Регистрация: 21.10.2010
Сообщений: 414
03.01.2013, 21:52  [ТС] 13
ЫЫЫЫЫЫЫ!!!

mss,
Ну есть массив, и хрен с ним - зачем, да зачем!!! Нужен!!! Какой криминал в том, чтобы создать массив стринггридов?! Этого даже Дума ещё не запретила (готовят в первом чтении)!!!

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  for i:=0to CompCount-1do
  begin
     StrGr[i]:=TStringGrid.Create(form1);
     with StrGr[i]do
     begin
      ManualDock(nil);
      DragKind:=dkDock;
      Options := StrGr[i].Options + [goColSizing];
      RowCount:=2;
      ColCount:=CompCount+1;
      FixedCols:=0;
      OnMouseDown:=OnStrGrMsDwn;
      OnSelectCell:=strngrdSelectCell;
     end;
  end;
Delphi
1
2
3
4
5
6
procedure TForm1.strngrdSelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
//Тут вижу номер столба ACol и номер строки ARow, 
//а в каком стринггриде этот столб и эта строка?????!!!!!
end;
gorfil
При создании грида будет имя вида StrGr[i]

Добавлено через 1 минуту
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
03.01.2013, 21:54 14
Цитата Сообщение от Злобный Зайц Посмотреть сообщение
в каком стринггриде этот столб и эта строка?????!!!!!
Вот в этом -
Код
TStringGrid(Sender)
Добавлено через 1 минуту
Цитата Сообщение от Злобный Зайц Посмотреть сообщение
Какой криминал в том, чтобы создать массив стринггридов?
Никакого)
Но к изначальному твоему вопросу он вообще отношения не имеет, потому и спрашиваю с какого боку тут массив)
0
Злобный Зайц
11 / 11 / 1
Регистрация: 21.10.2010
Сообщений: 414
03.01.2013, 21:59  [ТС] 15
Цитата Сообщение от mss Посмотреть сообщение
Вот в этом -
Код
TStringGrid(Sender)
Добавлено через 1 минуту


Никакого)
Но к изначальному твоему вопросу он вообще отношения не имеет, потому и спрашиваю с какого боку тут массив)
Урррааа!!!! Наконец-то!!! Видно, совсем я тупой, не мог сразу понятнго объяснить. Но теперь всё работает. Душевно благодарю!!!
0
FIL
Модератор
3419 / 2555 / 726
Регистрация: 19.09.2012
Сообщений: 7,923
03.01.2013, 22:00 16
Вар.1:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for i:=0 to CompCount-1 do
  begin
     with TStringGrid.Create(form1) do
     begin
      Name := StrGr + IntToStr(i);
      ManualDock(nil);
      DragKind:=dkDock;
      Options := Options + [goColSizing];
      RowCount:=2;
      ColCount:=CompCount+1;
      FixedCols:=0;
      OnMouseDown:=OnStrGrMsDwn;
      OnSelectCell:=strngrdSelectCell;
     end;
  end;
Вар.2: Записывать индекс i в переменную Tag каждого Грида.
0
03.01.2013, 22:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2013, 22:00

как программно поменять разрешение экрана?
Подскажите пожалуйста, как программно поменять разрешение экрана? Просто не...

Как программно поменять значение переменной в процедуре
Здравствуйте Уважаемые. Подскажите, как программно из одной формы поменять...

Как программно поменять ширину отстыкованного Edit?
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift:...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru