Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2008, 12:54   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию Нули

Подскажите пожалуйста как мне сделать так, чтобы при запуске программы в StringGrid-е стояли нули во всех клетках, а потом я мог по нажатию на кнопку удалить эти нули? Спасибо)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 01.08.2008, 13:04   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
for i:=0 to StringGrid.Colcount-1 do 
 for k:=0 to Stringgrid.RowCount-1 do StringGrid.cells[i,k]:='0';
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.08.2008, 15:12   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Хорошо) А как удалить потом нули из тех клеток, которые не используются?)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 01.08.2008, 15:44   #4
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Хорошо) А как удалить потом нули из тех клеток, которые не используются?)
смотря с помошью какой кнопки будете удалять. Если с помощью мыши то в событии OnSelectCell пишем
Код:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
 StringGrid1.Cells[ACol,ARow]:='';
end;
SERG1980 вне форума Ответить с цитированием
Старый 01.08.2008, 15:48   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
то в событии OnSelectCell пишем
Хорошо пошутил )))
Цитата:
А как удалить потом нули из тех клеток, которые не используются?)
А какие клетки используются?
Вообще ты нормально задачу то поставь...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.08.2008, 16:28   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Хорошо) На моей форме есть таблица StringGrid. В ней 26 строк (в 26-ую выводится итоговый результат), и 31 столбец. В некоторых ячейках столбцов при загрузке формы стоят сразу нули. Для каждой строчки у меня ведется отдельное вычисление. Мне нужно сделать вот что. Мне надо, чтобы если у меня допустим производится расчет для 20-ти человек, то у меня результаты вычислений заносятся в специальные ячейки. Это есть. Но когда я нажимаю кнопки получки данных например для первого человека, то у меня все нули в этих столбцах стираются. А мне надо, чтобы в тех ячейках, где не вносятся данные, у меня нули оставались и не исчезали. У меня просто для каждого человека для четырех критериев (это четыре разных столбца) данные вносятся по нажатию на одну единственную кнопку, а всего 25 человек. Вот мне и надо сделать, чтобы при нажатии на кнопку у меня данные вносились в те ячейки напротив фамилии которого имеются данные, а в тех ячейках, в которых нет данных оставались нули, а не исчезали даже когда я вношу данные для одного человека. Подскажите пожалуйста как это можно сделать?)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 01.08.2008, 17:41   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Поскольку ячейки Вы заполняете по нажатию кнопки, значит есть критерий по которому это происходит. Значит нужно написать
if критерий then заполнять
else оставить ноли
puporev вне форума Ответить с цитированием
Старый 01.08.2008, 18:32   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Когда я нажимаю на кнопку, то у меня заполнение ячеек происходит так:
#
SG3.cells[2,1]:=Form1.Label7.Caption;
SG3.cells[3,1]:=Form1.Label207.Caption;
SG3.cells[4,1]:=Form1.Label121.Caption;
SG3.cells[5,1]:=Form1.Label92.Caption;
Это вносятся для одного человека данные в четыре ячейки по четырем подряд идущим критериям. И так у меня их всего 25 человек. Из этих 25-ти допустим заполняется только 20, а в остальных должны стоять нули по всем четырем критериям идущих друг за другом. Так вот я и спрашиваю как мне сделать так чтобы это выполнялось: 20 заполенено-остальные нули). А то по нажатию кнопки, у меня все нули убираются и вносятся данные для первогог допустим человека, а мне надо, чтобы данные вносились, а в где нет данных оставались нули. Подскажите?)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 01.08.2008, 18:41   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Не видев кода трудно угадать, что Вам нужно. Предположим все данные заносятся из Лабелей, то можно написать
if Form1.Label7.caption='' then SG3.cells[2,1]:='0'
else SG3.cells[2,1]:=Form1.Label7.Caption;
Это как пример.
puporev вне форума Ответить с цитированием
Старый 02.08.2008, 06:45   #10
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Виноват, что не выложил код и спрашивал у вас совета вслепую). Вот код, который по нажатию на кнопку производит расчет по пяти формулам:
Код:
#
 var
 k:real; 
 a1:real;
 b1:real; 
 c1:real; 
 d1:real; 
 k1:real;
 f1:real;
 g1:real;
 h1:real;
 e1:real;
 m1:real;
 n1:real;
 l:real;
 g:real;
 h:real;
 i:real;
 j:real;
 u1:real;
 value:real;
 a511:real; 
 b511:real; 
 c511:real; 
 d511:real; 
 k511:real;
 f511:real;
begin
  a1 := StrToFloat(Edit1.Text);
  b1 := StrToFloat(Edit2.Text);
  c1 := StrToFloat(Edit3.Text);
  d1 := StrToFloat(Edit4.Text);
     k := (a1 +  b1 +  c1 +  d1);
    label9.Caption:= ' ' + FloatToStr(k);

  a1 := StrToFloat(Edit1.Text);
  b1 := StrToFloat(Edit2.Text);
  c1 := StrToFloat(Edit3.Text);
  d1 := StrToFloat(Edit4.Text);
    k1 := (a1 +  b1 +  c1 +  d1); //количество оценок
    if k1<>0 then f1 := (2 * a1 + 3 * b1 + 4 * c1 + 5 * d1)/k1;  //расчет
      Label7.Caption:='' + FloatToStrF(f1,ffGeneral,0,2);

   g1:=StrToFloat(Edit3.Text);  //4
   h1:=StrToFloat(Edit4.Text);  //5
   m1:=StrToFloat(Edit1.Text);  //2
   n1:=StrToFloat(Edit2.Text);  //3
   k1:=(m1 + n1 + g1 + h1);
   if k1<>0 then e1:=((g1+h1)*100)/k1;
    label207.Caption:=' ' + FloatToStr(Round(e1));

   a1:=StrToFloat(Edit1.Text);
   b1:=StrToFloat(Edit2.Text);
   c1:=StrToFloat(Edit3.Text);
   d1:=StrToFloat(Edit4.Text);
   k:= a1 + b1 + c1 + d1; //кол-во всех оценок
   if k<>0 then l:=100 - ((StrToFloat(Edit1.Text))*100)/k;
     label121.Caption:=' ' + FloatToStr(Round(l));

   a1 := StrToFloat(Edit1.Text);
   b1 := StrToFloat(Edit2.Text);
   c1 := StrToFloat(Edit3.Text);
   d1 := StrToFloat(Edit4.Text);
   k1 := (a1 + b1 + c1 + d1);
   if k1<>0 then u1:= ((2*a1 +  3*b1 +  4*c1 + 5*d1)*20)/k1;
     label92.Caption:= ' ' + FloatToStr(Round(u1));

  a511 := StrToFloat(Edit1.Text);
  b511 := StrToFloat(Edit2.Text);
  c511 := StrToFloat(Edit3.Text);
  d511 := StrToFloat(Edit4.Text);
    k511 := (a511 +  b511 +  c511 +  d511); //количество оценок
    if k511<>0 then f511 := (2 * a511 + 3 * b511 + 4 * c511 + 5 * d511)/k511;  //расчет
      Label147.Caption:='' + FloatToStr(Round(f511));
end;
#
А это так StringGrid получает значения для, например, первого учащегося по четырем критериям:
#
{1}
    SG3.Cells[2,1]:=Form1.Label7.Caption;
    SG3.Cells[3,1]:=Form1.Label207.Caption;
    SG3.Cells[4,1]:=Form1.Label121.Caption;
    SG3.Cells[5,1]:=Form1.Label92.Caption;
    SG3.Cells[6,1]:=Form1.Label147.Caption;
#
Я сделал, чтобы у меня на форме где StringGrid, в событии формы OnCreate получает по умолчанию нули. Но когда я нажимаю на кнопку, код которой приведен в самом начале, то у меня данные получаются (что хорошо), но все нули из этих пяти столбцов удаляются, а надо, чтобы они оставались. Кто что может сейчас предложить?))

moderator: учимся правильно оформлять код
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось zetrix; 02.08.2008 в 10:29.
artemavd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убрать нули!!!) artemavd Общие вопросы Delphi 13 29.07.2008 09:10
Хвастаюсь игрушкой Кресту-нули Altera Софт 3 12.02.2008 15:06