Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TList [D5]


GanibalLector ©   (2004-09-22 00:01:00) 

Кто-нибудь может подкинуть статейку или исходник с этим TList-ом.
Проблема в следующем.Предположим имеем

type
 PMyList = ^AList;
 AList = record
   I: String[10];
   C: String[15];
 end;
var
 MyList: TList;
 ARecord: PMyList;

далее заполняем MyList значениями.И вот,собственно вопрос:
каким образом вернуться в преждние ячейки и изменить там значение???Я пробовал  MyList.Insert ,но она не изменяет ,а добавляет.Еще вопрос,могу ли я изменить только значение С,а I оставить таким,каким оно и было???


Defunct   (2004-09-22 01:28:00) [1]

> А как известно,в потоке нельзя обращаться к визуальным компонентам.Синхронизировать,млин,надо

Не нужно там ничего синхронизировать. Вы ведь обращаетесь по чтениюк не визуальным полям.

> ТЕМ БОЛЕЕ,что все эти данные в потоке будут создавать документы
Вот и чудесно:

For I:=0 To DBGrid.RowCount-1 Do
If Boolean(DBGrid.Rows[i].Objects[0]) Then
ShellExecute( ... , PChar(DBGrid.Cells[ ... ], ... );


Зачем тут какой-то еще массив, или List??


GanibalLector   (2004-09-22 01:13:00) [2]

2 Defunct
Спасибо,рассмотрю Ваш вариант.Хотя лично мне нравится больше через TList или массив.ТЕМ БОЛЕЕ,что все эти данные в потоке будут создавать документы.А как известно,в потоке нельзя обращаться к визуальным компонентам.Синхронизировать,млин,надо


jack128   (2004-09-22 01:13:00) [3]

GanibalLector ©   (22.09.04 0:59) [12]
Хотя конечно с массивом приятней и удобней(люблю я их) :))

Именно поэтому.  И с указателями не будешь путаться -)


Defunct   (2004-09-22 01:04:00) [4]

[13]
тоже самое поддерживается и в StringGrid'е


Defunct   (2004-09-22 01:02:00) [5]

GanibalLector ©   (22.09.04 00:51) [10]

В качестве доп. поля можно заюзать DBGrid.Row[i].Objects[j] для любой ячейки.


GanibalLector   (2004-09-22 00:59:00) [6]

2 jack128
А зачем TList? Можно просто дин массив записей..
Как по мне,что TList,что массив...из пустого в порожнее.В чем разница???Хотя конечно с массивом приятней и удобней(люблю я их) :))


jack128   (2004-09-22 00:57:00) [7]

GuAV ©   (22.09.04 0:30) [5]
MyList[10] := li; - лишнее

угу, по привычки с Value типами..

GanibalLector ©   (22.09.04 0:28) [4]
А зачем TList? Можно просто дин массив записей..


GanibalLector   (2004-09-22 00:51:00) [8]

с каких пор Commit/Rollback недостаточно?
А это тут при чем???

Я ж говорю,что выбираю данные.Т.е. предположим их 100,а я навыбирал 25 в разнобой.ИМХО,что бы не создавать доп.поле(или таблицу) проще уж с TList.Хотя...


Defunct   (2004-09-22 00:45:00) [9]

GanibalLector ©   (22.09.04 00:37) [8]

Зачем?
с каких пор Commit/Rollback недостаточно?
Зачем копировать данные между визуальными элементами когда вы работаете с БД?


GanibalLector   (2004-09-22 00:37:00) [10]

>использовать там DBGrid
Дык...прийдется еще одну таблицу создать.Да и следить за ней(наполнять\удалять).


Defunct   (2004-09-22 00:37:00) [11]

> Вопрос,а на кой я все это затеял???(

Ответ (вы же и написали), для:
> допука ошибки

не нужен там никакой TList


GuAV   (2004-09-22 00:33:00) [12]

GanibalLector ©   (22.09.04 00:28) [4]

имхо отобрать данные для новой формы следует средствами DB и использовать там DBGrid


GuAV   (2004-09-22 00:30:00) [13]


> var
>  li: PMyList
> begin
>  li := MyList[10];
>  li.c := 'asfdhgfhdg';
>  MyList[10] := li;
> end;

MyList[10] := li; - лишнее


GanibalLector   (2004-09-22 00:28:00) [14]

2 jack128,GuAV
Спасибо,как всегда выручили.
А еще вопросик...Из-за чего я это все затеял.Имеется DBGridEh далее пользователь выбирает некоторые данные(много от 15-100) и нажимает клавишу.Далее создаю новую форму и перебрасываю данные из того выделенного DBGridEh в StringGrid(но не все,частично,что бы пользователю было легче...меньшая вероятность допука ошибки).Пользователь изменяет данные в StringGride и ...(т.д.)

Так вот TList у меня создается после выделенного DBGridEh  и частично изменяется после редактирования в StringGride.Вопрос,а на кой я все это затеял???(самокритика).Есть ли варианты проще,без использования TList?Или все-же пущай будет???Как бы поступили Вы???


jack128   (2004-09-22 00:22:00) [15]


> имена нужно придумать получше. типа MyItem.

И префикс Т для типов не забывать использовать ;-)


jack128   (2004-09-22 00:05:00) [16]

GanibalLector ©   (22.09.04 0:01)
var
 li: PMyList
begin
 li := MyList[10];
 li.c := 'asfdhgfhdg';
 MyList[10] := li;
end;


GuAV   (2004-09-22 00:05:00) [17]


>  PMyList = ^AList;

имена нужно придумать получше. типа MyItem.
Обращатся к элементам через Items

> Еще вопрос,могу ли я изменить только значение С,а I оставить
> таким,каким оно и было???

Да, элементы это обыные указатели, по которым обычные переменные, в твоём случае записи, можно изменять их поля


Наверх

Титульная страница Поиск, карта сайта Написать письмо