Главная страница
    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.038 c
1-1120394853
Unknow
2005-07-03 16:47
2005.07.18
Как вписать данные в ListView


3-1118227169
jiny
2005-06-08 14:39
2005.07.18
Проблема с FormatFloat( #.## ,sum(expression))


9-1112693249
MaxAir
2005-04-05 13:27
2005.07.18
Помогите запустить паровозик по синусоиде :)


14-1119421018
boalse
2005-06-22 10:16
2005.07.18
Подсчёт контрольной суммы.


1-1120031019
WasHer
2005-06-29 11:43
2005.07.18
TMaskEdit.EditMask - пропадает текст





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский