Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> StringGrid, Обнуление строчек в StringGrid 
:(
    Опции темы
Garmahis
Дата 13.4.2005, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 23.12.2004

Репутация: нет
Всего: 4



На форме лежит Notebook. У него две страницы на первой странице DBGrid связаная с базой данных, из которой DBGrid отображает некую информацию. Чтобы ввести новые данны надо нажать кнопку. При этом открывается вторая страница Notebook на которой расположены всякие спинэдиты, дататаймпикеры и стринггрид. Количество строк в гриде связано со значением спинэдита. В гриде две колонке. В первой идёт просто номерация от 1 до SpinEdit.Value. Во второй колонке можно выбирать строго заданные значения спомощью комбобокса. когда все данные вводятся нажимается кнопка добавить Notebook переключается на первую страницу и в DBGrid отображается соответственно на одну строку больше.
Проблема заключается в следующем. Когда во второй раз вызывается вторая страница ноутбука во второй колонке Стринггрида остаются старые значения!!!! замучелся что я только не делал и очищал этот грид и удалял строки всё равно почему-то эти данные остаются? Может кто подскажет что бы это могло быть?
Вот код:

1. Нажатие на кнопку новая запись

Код

PaperN.DataSource1.DataSet:=nil;
PaperN.ADOQuery1.Close;
PaperN.ADOQuery1.SQL.Clear;
PaperN.Notebook1.PageIndex:=1;


2. нажатие кнопки добавить запись

Код

PaperN.ADOQuery1.SQL.Add('SELECT * FROM PageN');
PaperN.ADOQuery1.Open;
for i:=0 to PaperN.SpinEdit3.Value-1 do
begin
PaperN.ADOQuery1.Append;
PaperN.ADOQuery1.FieldByName('ID').AsString:='PN'+IntToStr(a);
PaperN.ADOQuery1.FieldByName('Number').AsInteger:=StrToInt(PaperN.StringGrid1.Cells[0,i]);
PaperN.ADOQuery1.FieldByName('Name').AsString:=PaperN.StringGrid1.Cells[1,i];
PaperN.ADOQuery1.Post;
end;
PaperN.ADOQuery1.Close;
PaperN.ADOQuery1.SQL.Clear;
with StringGrid1 do
     for i := 0 to ColCount - 1 do
       for k := 0 to RowCount - 1 do
         Cells[i, k] := '';
PaperN.StringGrid1.RowCount:=1;
PaperN.Notebook1.PageIndex:=0;


3. Другой вариант нажатия кнопки добавить запись

Код

for i:=0 to PaperN.StringGrid1.RowCount-1 do begin
TFakeGrid(PaperN.StringGrid1).DeleteRow(0);
end;
PaperN.Notebook1.PageIndex:=0;


Помогите пожалуйста!!!!!!!!!!!!!
PM   Вверх
Bes
Дата 14.4.2005, 06:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 5
Всего: 7



Может номера стрингридов перепутал? Короче моя версия - по невнимательности.
PM MAIL   Вверх
EKoshelev
Дата 14.4.2005, 07:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 509
Регистрация: 1.9.2004

Репутация: нет
Всего: нет



Я не очень понял что грузится в стринг грид. Может объснишь и код заодно врисуешь, который это стринг грид заполняет?


--------------------
Вежливым и адекватным предлагаю общаться на "ты".
PM MAIL   Вверх
Snowy
Дата 14.4.2005, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Просто чистим поля:
Код

with PaperN.StringGrid1 do
  for i:=0 to RowCount-1 do Cells[1,i]:='';

Если не поможет, значит ты где-то заполняешь грид перед отрисовкой.
PM MAIL   Вверх
Garmahis
Дата 14.4.2005, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 23.12.2004

Репутация: нет
Всего: 4



На всей форме только один стринг грид. Программа предназначена для составления макета номера газеты. Пользователь с помошью спинедита указывает сколько страниц будет в номере. В стрингГриде создаётся соответствующее количество строк и первой колонке присваиваются порядковые номера:

Код

procedure TPaperN.SpinEdit3Change(Sender: TObject);
var
i:integer;
begin
PaperN.SpinEdit1.Modified:=True;
PaperN.StringGrid1.RowCount:=PaperN.SpinEdit3.Value;
for i:=0 to PaperN.SpinEdit3.Value do
PaperN.StringGrid1.Cells[0,i]:=IntToStr(i+1);
end;


Во второй колонке пользователь может с номером страницы проассоциировать название полосы. Возможные варианты загружаются в комбобокс.

Код

PaperN.ADOQuery1.SQL.Add('SELECT Name FROM Pages WHERE ID IN (SELECT Page FROM PP WHERE Paper=(SELECT ID from Papers WHERE Name='+#39+PaperN.ComboBox1.Text+#39'))');
PaperN.ADOQuery1.Open;
if PaperN.ADOQuery1.RecordCount>0 then
begin
PaperN.ADOQuery1.First;
while not PaperN.ADOQuery1.Eof do begin
PaperN.ComboBox2.Items.Add(PaperN.ADOQuery1.FieldByName('Name').AsString);
PaperN.ADOQuery1.Next;
end;
end;


Ну а потом этот комбобокс вызывается когда пользователь кликает на ячейку второго ряда. Основа взята из DRKB.
После нажатия кнопки добавить номер все данные записываются в базу данных. Очищается итемс комбобокса и очищается стринггрид причём последнюю я чистил и удалял строки и с бубном плясал, но всё равно эти чёртовы данные при повтороном обращении остаются!

PM   Вверх
_hunter
Дата 14.4.2005, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



ну и пройдись отладчиком по коду. найди место которое рисует после возврата и смотри кто тот код вызвал.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Garmahis
Дата 14.4.2005, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 23.12.2004

Репутация: нет
Всего: 4



Ха! Я прошёлся. Ни кто не рисует. Я поэтому и спарашиваю может грид как-то сохраняет эти строчки...
PM   Вверх
_hunter
Дата 14.4.2005, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



значит что-то пропустил. грид их не сохраняет.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Garmahis
Дата 14.4.2005, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 23.12.2004

Репутация: нет
Всего: 4



Ладно спасибо! Будем искать...
PM   Вверх
EKoshelev
Дата 15.4.2005, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 509
Регистрация: 1.9.2004

Репутация: нет
Всего: нет



Цитата
Ладно спасибо! Будем искать...


Наверняк нашёл уже какую-ньть тупую ошибку и успокоился smile


--------------------
Вежливым и адекватным предлагаю общаться на "ты".
PM MAIL   Вверх
Akella
Дата 16.4.2005, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Попробуй StringGrid1.Clear;
PM MAIL   Вверх
Garmahis
Дата 21.4.2005, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 23.12.2004

Репутация: нет
Всего: 4



такой команды нет...
Цитата
Наверняк нашёл уже какую-ньть тупую ошибку и успокоился

Нашёл smile
Но всё равно интересно. Скажем перед очисткой в таблице 14 строк. Потом запускается подпрограмма которая задаёт количество строк у таблицы = 1 потом идёт очистка таблицы соответственно чиститься эта самая одна строка. А вот потом, когда опять вызывается таблица и там создаётся скажем 20 строк то соответственно со 2 строки по 14 отображаются старые данные... Интересно...

Это сообщение отредактировал(а) Garmahis - 21.4.2005, 18:36
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0545 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.