Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Мария_1992
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 17
#1

При нажатии на кнопку, из edit-ов должна переноситься информация в столбцы StringGrid

05.07.2016, 08:30. Просмотров 896. Ответов 5
Метки нет (Все метки)

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.RowCount := StringGrid1.RowCount+1;
begin if TStringList(StringGrid1.Cols[1]).IndexOf(Edit1.Text) > 0
 then ShowMessage('Такой номер есть, введите другой!')
StringGrid1.Cells[2, StringGrid1.RowCount - 1] := ''     ;
StringGrid1.Cells[3, StringGrid1.RowCount - 1] := ''     ;
StringGrid1.Cells[4, StringGrid1.RowCount - 1] := ''     ;
with StringGrid1 do
  for i := FixedRows+1 to RowCount - 1 do
   Cells[5, i] :=FloatToStr(StrToFloat(Cells[3, i])*StrToInt(Cells[4, i]));
end else StringGrid1.Cols[1].Add(Edit1.Text);
StringGrid1.Cells[2, StringGrid1.RowCount - 1] := Edit2.Text     ;
StringGrid1.Cells[3, StringGrid1.RowCount - 1] := Edit3.Text     ;
StringGrid1.Cells[4, StringGrid1.RowCount - 1] := Edit4.Text     ;
with StringGrid1 do
  for i := FixedRows+1 to RowCount - 1 do
   Cells[5, i] :=FloatToStr(StrToFloat(Cells[3, i])*StrToInt(Cells[4, i]));
end;
При нажатии на кнопку, из edit-ов должна переноситься информация в столбцы stringgrid. 1 столбец (код-уикальный не должен повторяться). У меня выводит сообщение что такой код есть и добавляет всеравно в таблицу все данные, как сделать чтобы выходило сообщение такой код есть!!! И в таблицу ничего не записывалось, а требовало ввести заново значения!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2016, 08:30
Ответы с готовыми решениями:

При нажатии на кнопку должна появляться надпись Hello
Пи нажатии на кнопку должна появляться надпись Hello. Я создаю lаbel и...

При нажатии на кнопку закрашивать ячейку StringGrid
можно сделать так, что бы при нажатии на кнопку (button) закрашивался ячейка...

Как при нажатии на кнопку в Edit выделить текст?
Я нажимаю на кнопку, в едите генерируется текст, но мне надо, чтобы он в это же...

Программа должна при нажатии на кнопку выводить в метку площадь, а орнамент - менять цвет
На счёт площади вопросов нет, но как сделать чтобы орнамент цвет менял(там 12...

StringGrid, продолжение поиска при повторном нажатии на кнопку
Проблема такая, вот мой поиск. Как сделать так что бы при нажатие еще раз на...

5
Sergio Leone
2467 / 1112 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
05.07.2016, 08:46 #2
попробуй так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.Button1Click(Sender: TObject);
begin
 if TStringList(StringGrid1.Cols[1]).IndexOf(Edit1.Text) > 0
 then ShowMessage('Такой номер есть, введите другой!')
 else begin 
   StringGrid1.RowCount := StringGrid1.RowCount+1;
   StringGrid1.Cells[1, StringGrid1.RowCount - 1] := Edit1.Text;
   StringGrid1.Cells[2, StringGrid1.RowCount - 1] := Edit2.Text;
   StringGrid1.Cells[3, StringGrid1.RowCount - 1] := Edit3.Text;
   StringGrid1.Cells[4, StringGrid1.RowCount - 1] := Edit4.Text;
   with StringGrid1 do
      for i := FixedRows+1 to RowCount - 1 do
        Cells[5, i] :=FloatToStr(StrToFloat(Cells[3, i])*StrToInt(Cells[4, i]));
 end;
end;
2
D1973
Модератор
3344 / 2392 / 1188
Регистрация: 21.01.2014
Сообщений: 9,887
Записей в блоге: 3
Завершенные тесты: 1
05.07.2016, 08:47 #3
Delphi
1
2
3
4
5
if TStringList(StringGrid1.Cols[1]).IndexOf(Edit1.Text) > 0
 then begin
         ShowMessage('Такой номер есть, введите другой!');
         Exit;
        end
;
2
Mawrat
12824 / 5732 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
05.07.2016, 09:47 #4
Лучший ответ Сообщение было отмечено Sergio Leone как решение

Решение

Я думаю, можно убрать пересчёт всего столбца с индексом 5. И приведение к TStringList здесь не требуется. Если TStrings.IndexOf() не обнаружил совпадений, то возвращает значение = -1. При этом в область поиска попадают фиксированные строки и сравнение на >0 здесь не поможет.
Как итог (без решения проблемы с охватом фиксированных строк при поиске):
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm1.Button1Click(Sender: TObject);
var
  Sg : TStringGrid;
  i, Row : Integer;
begin
  Sg := StringGrid1;
  if Sg.Cols[1].IndexOf(Edit1.Text) > -1 then
  begin
    ShowMessage('Такой номер уже есть, введите другой!');
    Exit;
  end;
 
  Row := Sg.RowCount;
  Sg.RowCount := Row + 1;
  Sg.Cells[1, Row] := Edit1.Text;
  Sg.Cells[2, Row] := Edit2.Text;
  Sg.Cells[3, Row] := Edit3.Text;
  Sg.Cells[4, Row] := Edit4.Text;
  Sg.Cells[5, Row] := FloatToStr(StrToFloat(Sg.Cells[3, Row])*StrToInt(Sg.Cells[4, Row]));
end;
1
Sergio Leone
2467 / 1112 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
05.07.2016, 20:19 #5
Mawrat, абсолютно согласен.

единственное, не вижу особого смысла в переменной Sg : TStringGrid;
(кроме как сокращения записи за счёт короткой длины переменной!
но такой же эффект проще получить просто переименовав StringGrid1 в sg )
впрочем, это, конечно, придирки и мелочи, в остальном - BEST!
0
Mawrat
12824 / 5732 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
06.07.2016, 08:32 #6
Да - Sg для сокращения записи и для улучшения переносимости кода. Т. е., если где-то в коде (возможно в другом проекте) понадобится выполнить такой же набор действий, то достаточно скопировать этот блок и изменить только первую строку - присвоение Sg нужной переменной.
1
06.07.2016, 08:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2016, 08:32

StringGrid: сменить цвет ячейки при нажатии на кнопку
Есть stringgrid и кнопка. При нажатии на кнопку происходит поиск одинаковых...

Выводить из StringList в Edit слова по порядку при нажатии на кнопку
Загружен текст в stringlist Вася Петя Маша Саша Коля Оля Нужно при...

При нажатии на кнопку одной формы, у меня должна выскочить вторая...как это написать в процедуре...
При нажатии на кнопку одной формы, у меня должна выскочить вторая...как это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru