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

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

03.01.2013, 20:58. Просмотров 651. Ответов 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
2631 / 2256 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
03.01.2013, 21:01 #2
Для того чтобы в обработчике OnSelectCell выделить кликнутую ячейку или поменять её содержимое не нужен никакой массив.
0
Злобный Зайц
10 / 10 / 1
Регистрация: 21.10.2010
Сообщений: 414
03.01.2013, 21:06  [ТС] #3
Да не для того массив создан, чтобы поменять в нём ячейку стринггрида! Всё наоборот: массив создан, все стринггриды заполнены, надо теперь получить доступ к ячейкам. Опять я, что-ли как-то не так излагаю?
0
mss
2631 / 2256 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
03.01.2013, 21:11 #4
Цитата Сообщение от Злобный Зайц Посмотреть сообщение
надо теперь получить доступ к ячейкам
Я и спрашиваю, зачем для этого понадобился массив ?
Доступ к ячейкам грида, в результате клика на ячейке которого этим гридом был вызван его обработчик события OnSelectCell, распрекрасно осуществляется вне зависимости от того, есть у тебя какой-то там массив или нет его.
0
Злобный Зайц
10 / 10 / 1
Регистрация: 21.10.2010
Сообщений: 414
03.01.2013, 21:18  [ТС] #5
Не, ну я, конечно тупой, но ....
Может быть, давайте уж я выложу свои каракули. Ато, чувствую, мы так никогда друг друга не поймём. Видно, я совсем как-то криво излагаю.
0
Вложения
Тип файла: rar TablFromNetlist.rar (446.8 Кб, 5 просмотров)
FIL
Модератор
3411 / 2549 / 724
Регистрация: 19.09.2012
Сообщений: 7,919
03.01.2013, 21:24 #6
Если имеется ввиду возможность редактировать значение в выбранной ячейке, то:
Delphi
1
StringGrid1.Options := StringGrid1.Options + [goEditing];
0
mss
2631 / 2256 / 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
4390 / 2438 / 763
Регистрация: 04.10.2012
Сообщений: 8,871
03.01.2013, 21:33 #8
Запись в ячейку ДБГрида может поможет
0
Злобный Зайц
10 / 10 / 1
Регистрация: 21.10.2010
Сообщений: 414
03.01.2013, 21:34  [ТС] #9
Не, я, кажется, щас разбегусь и башкой апстену убьюсь!
Доктор, меня никто не слышит! Доктор, меня все игнорируют!!!

Я уже сорок листов исписал, я же объясняю : Динамически создаётся массив стринггридов. На всю толпу одна процедура OnSelectCell. Когда я кликаю на ячейке ОДНОГО ИЗ ЧЛЕНОВ МАССИВА, попадаю в общественный OnSelectCell. Там получаю номер столба и номер строки. !!!!!НО!!!!! Не вижу, из какого именно стринггрида туда прилетел! То есть, знаю координаты ячейки, а какому стрнинггриду она принадлежитт - НЕТ!!!
0
droider
Universal
Эксперт Pascal/Delphi
4390 / 2438 / 763
Регистрация: 04.10.2012
Сообщений: 8,871
03.01.2013, 21:34 #10
Отменяю. У Вас StringGrid
0
mss
2631 / 2256 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
03.01.2013, 21:38 #11
Цитата Сообщение от Злобный Зайц Посмотреть сообщение
Я уже сорок листов исписал
Но так и не объяснил вменяемо зачем тебе массив)
0
FIL
Модератор
3411 / 2549 / 724
Регистрация: 19.09.2012
Сообщений: 7,919
03.01.2013, 21:39 #12
Цитата Сообщение от Злобный Зайц Посмотреть сообщение
Не вижу, из какого именно стринггрида туда прилетел! То есть, знаю координаты ячейки, а какому стрнинггриду она принадлежитт - НЕТ!!![/B]
Из того, по которому кликаешь. Тебе Имя Грида надо что ли?
Delphi
1
ShowMessage(TStringGrid(Sender).Name);
При условии, что ты его задаешь при создании Грида.
0
Злобный Зайц
10 / 10 / 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
2631 / 2256 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
03.01.2013, 21:54 #14
Цитата Сообщение от Злобный Зайц Посмотреть сообщение
в каком стринггриде этот столб и эта строка?????!!!!!
Вот в этом -
Код
TStringGrid(Sender)
Добавлено через 1 минуту
Цитата Сообщение от Злобный Зайц Посмотреть сообщение
Какой криминал в том, чтобы создать массив стринггридов?
Никакого)
Но к изначальному твоему вопросу он вообще отношения не имеет, потому и спрашиваю с какого боку тут массив)
0
Злобный Зайц
10 / 10 / 1
Регистрация: 21.10.2010
Сообщений: 414
03.01.2013, 21:59  [ТС] #15
Цитата Сообщение от mss Посмотреть сообщение
Вот в этом -
Код
TStringGrid(Sender)
Добавлено через 1 минуту


Никакого)
Но к изначальному твоему вопросу он вообще отношения не имеет, потому и спрашиваю с какого боку тут массив)
Урррааа!!!! Наконец-то!!! Видно, совсем я тупой, не мог сразу понятнго объяснить. Но теперь всё работает. Душевно благодарю!!!
0
FIL
Модератор
3411 / 2549 / 724
Регистрация: 19.09.2012
Сообщений: 7,919
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