Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 712

/ вопрос решён /

Здравствуйте, эксперты!

Появился еще один вопросик.
Суть:
Есть таблица исходных данных, по которым формируется список данных.
При добавлении строки данные заносятся в список FCompetitorsList
Проблема:
при редактировании строки нужно определить по имени, что такой элемент уже есть и он редактируется, сделать его активным и поменять

метод SetEditText приносит только значение, которое уже изменено,
а мне нужно
1. значение, которое до изменения было в ячейке
2. измененное значение

Подскажите способы решения, пожалуйста

Приложение:
  1. procedure TTPMGUIFormCompetitorsList.CompetitorsGridSetEditText(Sender: TObject; ACol,
  2. ARow: Integer; const Value: string);
  3. var
  4. CompetitorIndex: Integer;
  5. ACompetitor: TCompetitorData;
  6. begin
  7. CompetitorIndex := Self.FCompetitorsList.IndexOf(Self.CompetitorsGrid.Cells[COL_COMPETITOR_NAME, ARow]);
  8.  
  9. then ACompetitor := Self.FCompetitorsList[CompetitorIndex]
  10. else begin
  11. ACompetitor := TCompetitorData.Create();
  12. Self.FCompetitorsList.Add(ACompetitor);
  13. end;
  14. case ACol of
  15. COL_COMPETITOR_NAME : ACompetitor.Name := Value;
  16. COL_COMPETITOR_SEX : ACompetitor.Sex := StrToSex(Value);
  17. COL_COMPETITOR_YEAR_OF_BIRTH: ACompetitor.YearOfBirth := StrToInt(Value);
  18. COL_COMPETITOR_SPORT_SKILL : ACompetitor.SportSkill := StrToSportSkill(Value);
  19. COL_COMPETITOR_RANK : ACompetitor.Rank := StrToFloat(Value);
  20. COL_COMPETITOR_STATUS : ACompetitor.Status := StrToCompetitorStatus(Value);
  21. end;
  22. end;


Aндрей Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Aндрей (статус: 1-ый класс)
Вопрос отправлен: 3 ноября 2011, 15:01
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 8; последнее сообщение — 3 ноября 2011, 17:03; участников в обсуждении: 2.
min@y™

min@y™ (статус: Доктор наук), 3 ноября 2011, 15:42 [#1]:

А какие ещё события есть у FCompetitorsList? Этот объект какого класса-то? TStringGrid, штоль?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Aндрей

Aндрей (статус: 1-ый класс), 3 ноября 2011, 15:52 [#2]:

FCompetitorsList: TObjectList, в который нужно занести данные
данные заполняются через TStringGrid, у которого есть метод GridSetEditText, по средствам которого я сейчас добавляю в контейнер FCompetitorsList свои данные типа TCompetitorData.

проблема в том, что при изменении данных необходимо как-то сделать активным нужный объект ACompetitor: TCompetitorData из списка FCompetitorsList, чтобы поменять данные по нему

На данный момент поиск происходит по свойству Name объекта. Но в ситуации, когда нужно изменить само свойство Name, возникают проблемы идентификации.
min@y™

min@y™ (статус: Доктор наук), 3 ноября 2011, 16:01 [#3]:

А не надо искать по Name, ведь Row = номеру элемента в списке. И не надо юзать StringGrid, когда данные всё равно хранятся в памяти с помощью другого объекта.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Aндрей

Aндрей (статус: 1-ый класс), 3 ноября 2011, 16:05 [#4]:

"А не надо искать по Name, ведь Row = номеру элемента в списке" за это спасибо
" И не надо юзать StringGrid, когда данные всё равно хранятся в памяти с помощью другого объекта."
А как лучше организовать данные??
min@y™

min@y™ (статус: Доктор наук), 3 ноября 2011, 16:05 [#5]:

Я б вообще заюзал бы TListView в виртуальном режиме или TDrawGrid, а для добавления/редактирования записи сделал бы отдельную форму-диалог. Хотя, конечно, всё зависит от конкретики задачи...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 3 ноября 2011, 16:06 [#6]:

Цитата (Aндрей):

А как лучше организовать данные??

Так данные или их отображение на экране?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Aндрей

Aндрей (статус: 1-ый класс), 3 ноября 2011, 16:11 [#7]:

отображение на экране
min@y™

min@y™ (статус: Доктор наук), 3 ноября 2011, 17:03 [#8]:

Цитата (Aндрей):

отображение на экране

Ну дык возьми TDrawGrid и по OnDrawCell рисуй, что надо. На скриншоте всё именно так сделано.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

7 декабря 2011, 13:34: Статус вопроса изменён на решённый (изменил автор вопроса — Aндрей)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:43
Выполнено за 0.02 сек.