![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 оставить
> таким,каким оно и было???
Да, элементы это обыные указатели, по которым обычные переменные, в твоём случае записи, можно изменять их поля