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

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

Копирование [D5, MySQL]


vib ©   (2002-07-31 22:10:00) 

Подскажите как скопировать значение поля в DBGrid которое находиться
выше текущего. Тоисть находясь в каком-то поле DBGrid я хочу скопировать
в него значение того-же поля но предыдущей записи (Ctrl D - в PARADOX).
В общем проблема сводится к чтению значения поля не устанавливая в эту
строку указателя. Заранее благодарен, Володя.
vib@softhome.net

Jeer © (28.07.02 16:43) Не создавай себе проблем.
DisableControls; Prior; читаем ; Next; присваиваем; Post; EnableControls;

Да но если я стою в пустой строке (копирую первое поле) то при уходе с этой строки она исчезнет (а копирование произойдет не туда куда надо), дальше если я заполнил индексное поле а потом таким образом копирую следующее произойдет сортировка (опять копируем не туда ), или если есть поля обязательные для заполнения?


Jeer   (2002-07-31 22:51:00) [1]

Ок. Будем последовательны и идем дальше.
1.Что значит пустая строка.
2.Куда она исчезнет.
Думаю эти проблемы связаны с недопониманием статуса TDataSet:
вставка, редактирование..Разумеется, находясь в этих режимах двигать курсор уже нельзя.
3.Если Вы заполнили индексное поле но не сделали Post никакой сортировки и не произойдет.
4.Если есть обязательные поля - заполняйте.

Лучше всего конечно переопределить OnNewRecord в наследнике от TTable
Что-то вроде
procedure TMy.DoOnNewRecord;
var
RecBuf: PChar;
begin
if FCopyOnAppend then
begin
UpdateCursorPos;
if GetActiveRecBuf(RecBuf) then
FHandle.CloneCurrentRecord(RecBuf);
end;
inherited DoOnNewRecord;
end;

Если такими вещами тяжело заниматься, то можно задействовать события OnBeforeScroll и копировать текущую запись в буфер, а на OnNewRecord заполнять из него.


Наверх

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