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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2018, 22:41   #1
jorjanoo
Пользователь
 
Регистрация: 22.12.2018
Сообщений: 11
По умолчанию Как сделать так, что-бы в таблице очищалось несколько строк

Вот написал примерно код, дабы заполнять данные в анкету, как сделать так чтобы если данные не подходят под условие, строка даже не добавлялась
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Button1: TButton;
    StringGrid1: TStringGrid;
    Button2: TButton;
    Edit7: TEdit;

    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}




procedure TForm1.Button1Click(Sender: TObject);
begin
{заголовки таблицы первого листа}
StringGrid1.Cells[0,0]:='ФИО';
StringGrid1.Cells[1,0]:='Год рождения';
StringGrid1.Cells[2,0]:='Пол';
StringGrid1.Cells[3,0]:='Должность';
StringGrid1.Cells[4,0]:='Ученая степень';
StringGrid1.Cells[5,0]:='З/П';
end;
procedure TForm1.Button2Click(Sender: TObject);
var
a,c,d,e,s:string;
b,f:integer;
begin
 s:=Edit7.Text;
 a:=Edit1.Text;
 b:=(StrToInt(Edit2.Text));
 c:=Edit3.Text;
 d:=Edit4.Text;
 e:=Edit5.Text;
 f:=(StrToInt(Edit6.Text));
StringGrid1.Cells[0,1]:= (a);
StringGrid1.Cells[1,1]:= IntToStr(b) ;
StringGrid1.Cells[2,1]:= (c);
StringGrid1.Cells[3,1]:= (d) ;
StringGrid1.Cells[4,1]:= (e) ;
StringGrid1.Cells[5,1]:= IntToStr(f) ;
if (b>1990) and (f<6000) then ShowMessage ('Ошибка ввода данных');
if (StringGrid1.Cells[4,1]='Доцент')
and (StringGrid1.Cells[4,1]='доцент')

then ShowMessage ('Данные заполены неверно!')
 else (StringGrid1.Cells [4,1]:='') ;




end;
end.
jorjanoo вне форума Ответить с цитированием
Старый 23.12.2018, 22:52   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от jorjanoo Посмотреть сообщение
как сделать так чтобы если данные не подходят под условие, строка даже не добавлялась
поставьте проверку условия до заполнения таблицы.

если речь идёт про условие:

Цитата:
Сообщение от jorjanoo Посмотреть сообщение
Код:
if (b>1990) and (f<6000) then ShowMessage ('Ошибка ввода данных');
то можно так:

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
a,c,d,e,s:string;
b,f:integer;
begin
 s:=Edit7.Text;
 a:=Edit1.Text;
 b:=(StrToInt(Edit2.Text));
 c:=Edit3.Text;
 d:=Edit4.Text;
 e:=Edit5.Text;
 f:=(StrToInt(Edit6.Text));
 if (b>1990) and (f<6000) then begin
         ShowMessage ('Ошибка ввода данных');
         exit; {выход из процедуры}
 end;
 StringGrid1.Cells[0,1]:= (a);
 StringGrid1.Cells[1,1]:= IntToStr(b) ;
 StringGrid1.Cells[2,1]:= (c);
 StringGrid1.Cells[3,1]:= (d) ;
 StringGrid1.Cells[4,1]:= (e) ;
 StringGrid1.Cells[5,1]:= IntToStr(f) ;
p.s.


а это написано неверно.
Цитата:
Сообщение от jorjanoo Посмотреть сообщение
Код:
if (StringGrid1.Cells[4,1]='Доцент')
and (StringGrid1.Cells[4,1]='доцент')
Ни одна строчка не может быть одновременно равна двум разным значениями.
Вы, наверное, хотели написать "ИЛИ" (вместо AND использовать OR )
А для чего это вообще нужно? Зачем стирать текст "Доцент" ?
А если напишут 'ДОЦЕНТ', то не надо стирать?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.12.2018, 22:58   #3
jorjanoo
Пользователь
 
Регистрация: 22.12.2018
Сообщений: 11
По умолчанию

Данные заполняются, офк, и выход там как-бы и не нужен, строчки вот остаются заполненными
Изображения
Тип файла: jpg delphi32_2018-12-23_22-57-46.jpg (80.5 Кб, 120 просмотров)
jorjanoo вне форума Ответить с цитированием
Старый 23.12.2018, 23:34   #4
jorjanoo
Пользователь
 
Регистрация: 22.12.2018
Сообщений: 11
По умолчанию

Я нашел решение
Код:
then begin (ShowMessage ('Ошибка ввода данных'));
StringGrid1.Cells [0,1]:='' ;
StringGrid1.Cells [1,1]:='' ;
StringGrid1.Cells [2,1]:='' ;
StringGrid1.Cells [3,1]:='' ;
StringGrid1.Cells [4,1]:='' ;
StringGrid1.Cells [5,1]:='' ;
теперь нужно думать как через цикл заполнять полностью таблицу
jorjanoo вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сделать так, чтобы в таблице несколько полей можно было заполнить только тогда, когда одно булевое поле будет истинной? СУБД mysql traktor2017 SQL, базы данных 1 26.03.2017 15:24
Как сделать так,что бы при введение,например 0;0 выдавалось сообщение,что точка находится на границе? TEIROP Visual C++ 4 08.11.2015 20:19
Как сделать, чтобы один элемент списка в ComboBox писался в несколько строк? Andr Общие вопросы Delphi 5 15.08.2007 22:24