Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > Delphi. Удаление выделенной строки в StringGrid |
Автор: Solominka 18.12.2009, 19:33 |
И так, вторая моя проблема. Требовалось написать код для удаления выделенной строки из компонента StringGrid. Я написала, и всё бы ничего, он работает, но возникла такая проблема. Дело в том, что добавление записей в StringGrid идёт непосредственно из компонента DBGrid, связанного в свою очередь с Базой Данных. И удалять то удаляет... Но когда после удаления добавляешь что-то ещё, добавляется весьма криво. А когда пытаюсь записать данные из StringGrid-a в другую таблицу Базы Данных (DBGrid на форме 3), то выходит ошибка. Как сделать так, чтобы выделенная строка в StringGrid удалялась без ущерба для дальнейших нужных действий? Для пущей ясности ссыль на исходник: http://www.sendspace.com/file/kmzd2p |
Автор: chip_and_dayl 18.12.2009, 20:15 |
Оно кажись и крыво удаляет, если добавить две записи, то оно вообще нифига не удаляет, а если добавить больше 2 или трех записей, то оно якобы удаляет последнюю |
Автор: Solominka 18.12.2009, 20:22 |
Ой, да кстати... Что-то я и правда этого не заметила ((( В общем как мне написать ТАК, чтобы работало так как надо? |
Автор: chip_and_dayl 18.12.2009, 20:24 | ||||
Данкинг Я исходник скачал ![]() СтрингГрид там, чтобы с общей базы выбрать несколько строк (заказ комплектующих) Добавлено через 2 минуты и 26 секунд
Изобретать и копировать не буду, если в гугл ввести stringgrid в delphi удаление строк, то много готовых написаных ф-ций ![]() Добавлено через 3 минуты и 51 секунду Не удержался и скопировал ![]()
|
Автор: Данкинг 18.12.2009, 20:28 |
chip_and_dayl, я тоже скачал, но Парадокс юзать не умею - никогда с ним не работал - потому прога не запускается. К тому же там путь к базе прописан чётко в корне диска C:, которого у меня нет. ![]() ![]() |
Автор: chip_and_dayl 18.12.2009, 20:33 | ||
С ним работать и не нужно, на его нужно смотреть или просто вспоминать о нем :) Я тут вывел правило, если на форуме появляются упоминания о Парадоксе, значить сессия на носу :) |
Автор: Solominka 18.12.2009, 20:34 |
chip_and_dayl, я эти процедуры пробовала и ни с одной из них программа не работает... И здесь процедура SGDeleteRow тоже не работает... Жалуется почти на все слова... |
Автор: chip_and_dayl 18.12.2009, 20:39 |
ммм..у меня все работает. В кнопке Удаления я поместил SGDeleteRow(StringGrid1, номер строки); Ну и само собой скопировал процедуру в код Осталось только узнать, как считать строку где стоит указатель и передавать соответствующий номер Сча гляну, может и отправлю исходник О:) |
Автор: Solominka 18.12.2009, 20:43 |
А у меня что-то ничего((( Я наверное не те вещи меняю... И не там где надо ((( Исходник - было бы конечно здорово... |
Автор: chip_and_dayl 18.12.2009, 20:44 |
Вот код, там отдельно кнопка Удалить2 |
Автор: Данкинг 18.12.2009, 20:46 | ||
Неужели кроме ничего в ВУЗах рассказывать не про что? ![]() Впрочем, у меня образование гуманитарное, я вообще не знаю, как в ВУЗах программирование преподают. ![]() |
Автор: chip_and_dayl 18.12.2009, 20:47 |
По поводу вставки после удаления строк. Там у тебя глобальная И, которая только увеличивается. При удаление ее нужно уменьшать И=И-1 или dec(i) Добавлено @ 20:51 Данкинг Наверно нечего или точнее некому З. Ы. Интересно, шоколадку за помощь получу О:) З.Ы. З.Ы. Люблю свиточ молочный :) |
Автор: Solominka 18.12.2009, 20:55 |
chip_and_dayl , после Вашего удаления так же, как и после моего, нельза нормально добавить содержимое стринг грида в таблицу Zakaz формы 3... Выдаётся ошибка... Попробуйте после удаления нажать кнопку "заказать"... А надо чтобы всё было нормально... :( Шоколадку бы я вам отдала, но находитесь вы к сожалению далековато (в другой стране)... А так, для хороших людей ничего не жалко ![]() Данкинг , вам крупно повезло... Нам его вообще НИКАК не предподают... Тупо дают задания и методички к лабам... в лучшем случае - пару корявых электронных книг, в худшем - вообще ничего не дают... |
Автор: chip_and_dayl 18.12.2009, 21:04 |
Solominka Конечно выскакивает ошибка. В кнопке удаления 2, которую я добавил нужно добавить такую строчку w=w-1 Добавлено через 1 минуту и 49 секунд А вообще я не пойму зачем переменная i и w, они кажись обозначают одно и тоже. Суть проблемы в том, что когда ты добавляешь строку одну, то и=1 и в=1, если добавишь вторую строку и=2 и в=2, но если ты удаляешь строку ты ничего не делала, вот оно в базу записывало пустые Добавлено через 4 минуты и 40 секунд а также добавь i=i-1 после w=w-1 |
Автор: Solominka 18.12.2009, 21:12 |
chip_and_dayl, я добавила w:=w-1 в код вашей кнопки... всё равно та же ошибка... |
Автор: chip_and_dayl 18.12.2009, 21:17 |
Шоколадкой уже не отделаться |
Автор: Solominka 18.12.2009, 21:23 |
chip_and_dayl, всё! Работает! Премного Вам благодарна! Я так рада! ![]() А вот с http://forum.vingrad.ru/forum/act-ST/f-88/t-284422/unread-1.html не поможете? ![]() Так и быть, с меня ТОРТ ![]() |
Автор: chip_and_dayl 18.12.2009, 21:41 |
Уже ответил... смотри. Торт уже можно высылать:) |
Автор: Данкинг 18.12.2009, 21:45 |
Щяс будет... ![]() Это не есть отмазка. ![]() ![]() |
Автор: Solominka 18.12.2009, 21:51 |
Данкинг, ну для вас может и не отмазка, а вот для меня - вполне... Сравнили тоже, сколько вам лет и сколько мне, кто вы и кто я... Люди все разные, для моего понимания, например, такие вещи очень тяжело даются, тем не менее я пытаюсь хоть во что-то вникнуть, насколько это в моих силах... |
Автор: Данкинг 18.12.2009, 21:55 | ||
Не знаю. ![]() А кто я? ![]()
Честно говоря, пока незаметно. Но я верю в лучшее. ![]() |
Автор: chip_and_dayl 18.12.2009, 21:57 |
Данкинг Для девушки то, что она знает, это уже много:) |
Автор: Solominka 18.12.2009, 22:03 |
Вот именно, chip_and_dayl правильно сказал... Ибо многие девушки не знают даже этого... Я бы с удовольствием с Вами, Данкинг, мозгами махнулась... Да только жаль что способа пересадки мозгов ещё не придумали... ![]() |
Автор: Romikgy 20.12.2009, 01:45 |
а согласится ли Данкинг? |