|
Вопрос # 5 712/ вопрос решён / |
|
Здравствуйте, эксперты!
Появился еще один вопросик.
Суть:
Есть таблица исходных данных, по которым формируется список данных.
При добавлении строки данные заносятся в список FCompetitorsList
Проблема:
при редактировании строки нужно определить по имени, что такой элемент уже есть и он редактируется, сделать его активным и поменять
метод SetEditText приносит только значение, которое уже изменено,
а мне нужно
1. значение, которое до изменения было в ячейке
2. измененное значение
Подскажите способы решения, пожалуйста
Приложение: Переключить в обычный режим- procedure TTPMGUIFormCompetitorsList.CompetitorsGridSetEditText(Sender: TObject; ACol,
- ARow: Integer; const Value: string);
- var
- CompetitorIndex: Integer;
- ACompetitor: TCompetitorData;
- begin
- CompetitorIndex := Self.FCompetitorsList.IndexOf(Self.CompetitorsGrid.Cells[COL_COMPETITOR_NAME,
ARow]);
-
- then ACompetitor := Self.FCompetitorsList[CompetitorIndex]
- else begin
- ACompetitor := TCompetitorData.Create();
- Self.FCompetitorsList.Add(ACompetitor);
- end;
- case ACol of
- COL_COMPETITOR_NAME : ACompetitor.Name := Value;
- COL_COMPETITOR_SEX : ACompetitor.Sex := StrToSex(Value);
- COL_COMPETITOR_YEAR_OF_BIRTH: ACompetitor.YearOfBirth := StrToInt(Value);
- COL_COMPETITOR_SPORT_SKILL : ACompetitor.SportSkill := StrToSportSkill(Value);
- COL_COMPETITOR_RANK : ACompetitor.Rank := StrToFloat(Value);
- COL_COMPETITOR_STATUS : ACompetitor.Status := StrToCompetitorStatus(Value);
- end;
- end;
 |
Вопрос задал: Aндрей (статус: 1-ый класс)
Вопрос отправлен: 3 ноября 2011, 15:01
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 8; последнее сообщение — 3 ноября 2011, 17:03; участников в обсуждении: 2.
|
min@y™ (статус: Доктор наук), 3 ноября 2011, 15:42 [#1]:
А какие ещё события есть у FCompetitorsList? Этот объект какого класса-то? TStringGrid, штоль?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Aндрей (статус: 1-ый класс), 3 ноября 2011, 15:52 [#2]:
FCompetitorsList: TObjectList, в который нужно занести данные
данные заполняются через TStringGrid, у которого есть метод GridSetEditText, по средствам которого я сейчас добавляю в контейнер FCompetitorsList свои данные типа TCompetitorData.
проблема в том, что при изменении данных необходимо как-то сделать активным нужный объект ACompetitor: TCompetitorData из списка FCompetitorsList, чтобы поменять данные по нему
На данный момент поиск происходит по свойству Name объекта. Но в ситуации, когда нужно изменить само свойство Name, возникают проблемы идентификации.
|
|
min@y™ (статус: Доктор наук), 3 ноября 2011, 16:01 [#3]:
А не надо искать по Name, ведь Row = номеру элемента в списке. И не надо юзать StringGrid, когда данные всё равно хранятся в памяти с помощью другого объекта.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Aндрей (статус: 1-ый класс), 3 ноября 2011, 16:05 [#4]:
"А не надо искать по Name, ведь Row = номеру элемента в списке" за это спасибо
" И не надо юзать StringGrid, когда данные всё равно хранятся в памяти с помощью другого объекта."
А как лучше организовать данные??
|
|
min@y™ (статус: Доктор наук), 3 ноября 2011, 16:05 [#5]:
Я б вообще заюзал бы TListView в виртуальном режиме или TDrawGrid, а для добавления/редактирования записи сделал бы отдельную форму-диалог. Хотя, конечно, всё зависит от конкретики задачи...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 3 ноября 2011, 16:06 [#6]:
Цитата (Aндрей):
А как лучше организовать данные??
Так данные или их отображение на экране?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Aндрей (статус: 1-ый класс), 3 ноября 2011, 16:11 [#7]:
отображение на экране
|
|
min@y™ (статус: Доктор наук), 3 ноября 2011, 17:03 [#8]:
Цитата (Aндрей):
отображение на экране
Ну дык возьми TDrawGrid и по OnDrawCell рисуй, что надо. На скриншоте всё именно так сделано.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
7 декабря 2011, 13:34: Статус вопроса изменён на решённый (изменил автор вопроса — Aндрей)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|