Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Вниз

StringGrid   Найти похожие ветки 

 
john_mag ©   (2005-06-27 09:06) [0]

Всем доброе утро! Кто-нибудь сможет подсказать, как очистить от значений StringGrid не используя циклов? Пытался использовать StringGrid.Free, но выдает ошибку...


 
Digitman ©   (2005-06-27 09:13) [1]

var
 rc: Integer;
..
 rc := StringGrid.RowCount;
 StringGrid.RowCount := 0;
 StringGrid.RowCount := rc;


 
evvcom ©   (2005-06-27 09:20) [2]

StringGrid.Free не должен выдывать ошибку, если перед этим явно или неявно был вызван конструктор StringGrid := TStringGrid.Create(...); Ошибка должна была проявиться позже при последующем обращении к StringGrid.


 
john_mag ©   (2005-06-27 09:20) [3]

А если у меня RowCount определяется в конце всего этого безобразия? У меня два BitBtn на форме. При нажатии на них в StringGrid выводятся данные и в некоторых Count-ах идет накладка.


 
cheloveck   (2005-06-27 09:21) [4]

john_mag ©   (27.06.05 09:06)  
Пытался использовать tSringGrid.Free???, но выдает ошибку...

А в справке посмотреть, что делает FREE не судьба?


 
evvcom ©   (2005-06-27 09:26) [5]


> А если у меня RowCount определяется в конце всего этого
> безобразия

А что? Ты пишешь в строку, которой нет? Даже если в текущий момент времени у тебя всего 1 строка, [1] очистит ее.


 
john_mag ©   (2005-06-27 09:31) [6]

evvcom ©   (27.06.05 09:26) [5]
>А что? Ты пишешь в строку, которой нет? Даже если в текущий момент времени у тебя всего 1 строка, [1] очистит ее.

А чему вы удивляетесь? Зачем мне объявлять ненужные Count-ы? Сначала я их заполняю, а потом "говорю", что мне надо столько-то Count-ов!

>Digitman ©   (27.06.05 09:13) [1]
К сожалению не помогло...


 
Digitman ©   (2005-06-27 09:32) [7]


> у меня RowCount определяется в конце всего этого безобразия


какого "безобразия" ?!


> два BitBtn на форме


да хоть косой десяток !
никакого отношения к сути вопроса ни BitBtn ни иные компоненты не имеют

ты спросил как "не используя циклов" очистить от значений StringGrid

строки грида как раз и содержат эти самые значения (в списках TStringList)

установка св-ва RowCount в 0 приводит к уничтожению стринг-листов, содержавших значения полей для каждой из строк грида


> накладка


какая такая "накладка" ?!


 
evvcom ©   (2005-06-27 09:38) [8]


> А чему вы удивляетесь? Зачем мне объявлять ненужные Count-ы?
> Сначала я их заполняю, а потом "говорю", что мне надо столько-то
> Count-ов!

Какие такие Count-ы Вы объявляете? И какие-такие заполняете? Сначала заполняете то, чего нет, а потом "говорите", что Вам их столько-то надо? Интересный алгоритм...


 
john_mag ©   (2005-06-27 09:40) [9]

Когда в таблицу посылаешь данные, то старые данные перезаписываются новыми- так? а если в Count не посылается новое значение, то остается старое- так? это и есть накладка...

>Digitman ©   (27.06.05 09:13) [1]
К сожалению не помогло...


 
john_mag ©   (2005-06-27 09:45) [10]

evvcom ©   (27.06.05 09:38) [8]

Количество RowCount и ColCount в программе определяются динамически и количество ...Count-ов становится известно в конце алгоритма после чего я и "говорю" проге сколько нужно Count-ов.


 
Digitman ©   (2005-06-27 09:45) [11]


> Когда в таблицу посылаешь данные, то старые данные перезаписываются
> новыми- так?


что значит "в таблицу посылаешь данные" ?
ты в состоянии оперировать фрагментами кода для наглядной иллюстрации своих мыслей ? телепатов тут нет ...


> если в Count не посылается новое значение


НЕт у класса TCustomGrig свойства с именем Count !


 
Digitman ©   (2005-06-27 09:47) [12]


> в конце алгоритма


> "говорю" проге


т.е. алгоритм сам по себе, а "прога" сама по себе ?
так что ли ?


 
john_mag ©   (2005-06-27 09:51) [13]

begin
 StringGrid2.ColCount:= 10;//количество столбцов в таблице
 AssignFile(F8, "C:\Apteka\DataBase\Analize.DAT");
 AssignFile(F1,"C:\Apteka\DataBase\BaseTab.DAT");
 AssignFile(F6, "C:\Apteka\DataBase\DataBaseAll.DAT");
 {$I-}
 Reset(F8);
 Reset(F1);
 Reset(F6);
 c:= 0;
 cc:= 0;
 cc1:= 0;
 cc2:= 0;
 for j:= 1 to n do
   begin
     summ:= 0;
     b:= false;
     for i:= 1 to m do
       begin
          Seek(F8,c);
          Read(F8,FF8);
          if mass[4+cc2,i] = 1 then (во втором цикле if mass[4+cc2,i] = 2 then)
            begin
              Seek(F1,cc1);
              Seek(F6,c);
              Read(F1,FF1);
              Read(F6,FF6);
              StringGrid2.Cells[1,cc+1]:= "     "+IntToStr(FF1.Number);
              StringGrid2.Cells[2,cc+1]:= FF1.Naimenovanie;
              StringGrid2.Cells[3,cc+1]:= "    "+FF1.Ediniza;
              StringGrid2.Cells[4,cc+1]:= "    "+FF1.ColihestvoString;
              StringGrid2.Cells[5,cc+1]:= "    "+FF6.Cena;
              StringGrid2.Cells[6,cc+1]:= "    "+FF6.NameFirm;
              StringGrid2.Cells[7,cc+1]:= "  "+FF6.Primehanie;
              v1:= FF1.ColihestvoString;
              v2:= FF6.Cena;
              v:= v1*v2;
              summ:= summ + v;
              StringGrid2.Cells[8,cc+1]:= v;
              Inc(cc);
              b:= true;
            end;
          Inc(c);
          Inc(cc1);
       end;
     if b = true then StringGrid2.Cells[9,cc]:= summ;
     cc1:= 0;
     Inc(cc2);
     Inc(cc2);
   end;
   CloseFile(F8);
   CloseFile(F1);
   CloseFile(F6);
   {$I+}
   StringGrid2.RowCount:= cc+1;//количество строк в таблице
   cc:= 0;
   c:= 0;
   cc2:= 0;
end;


 
TUser ©   (2005-06-27 10:06) [14]

В дополнение к [1] - неплохо бы еще FixedRows/FixedColumns запоминать.


 
Digitman ©   (2005-06-27 10:07) [15]


> ColCount в программе определяются динамически


> StringGrid2.ColCount:= 10;//количество столбцов в таблице


присвоение св-ву ColCount ЗАРАНЕЕ известного тебе значения 10  ты называешь "определяется динамически" ?

с тем же успехом ты мог в и дизайн-тайм установить это св-во !

ну да это, судя по коду, не имеет отношения к проблеме ..

а проблема у тебя в том , что св-во RowCount ты определяешь позже чем обращаешься к той или иной строке, в то время как RowCount как раз и определяет актуальное кол-во строк грида

и "очистка" тут ни при чем совершенно

..
Read(F6,FF6);
StringGrid2.RowCount := cc + 1;
StringGrid2.Cells[1,cc+1]:= "     "+IntToStr(FF1.Number);
..


 
Digitman ©   (2005-06-27 10:14) [16]

вообще код - безобразный


 
john_mag ©   (2005-06-27 10:21) [17]

Digitman ©   (27.06.05 10:14) [16]

>вообще код - безобразный

Извините, что разочаровал... В Delphi я 6 месяцев и стиль пока не выработал...
Какой приговор Ваш, МАСТЕРА? Мне сегодня прогу сдавать... Все-таки придеться циклы писать?...


 
Digitman ©   (2005-06-27 10:34) [18]


> Все-таки придеться циклы писать?


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



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.035 c
3-1117962970
Гном23
2005-06-05 13:16
2005.07.18
Вопрос по TQuery


14-1119425225
nik90210
2005-06-22 11:27
2005.07.18
Не найдется ли доброго человека, который подарит мне песню?


14-1119824025
Андрей Жук
2005-06-27 02:13
2005.07.18
Запись (музыки, фильмов etc) и пересылка CD по почте


1-1120204747
kyn66
2005-07-01 11:59
2005.07.18
Как подставить путь к имени таблицы?


14-1119528354
Alex870
2005-06-23 16:05
2005.07.18
Command Line compiler





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский