Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Программа вылетает (delphi 7), свойство кнопки Enabled или Visibl   Найти похожие ветки 

 
Первокурсница ©   (2010-03-21 15:02) [0]

Доброго времени суток!
Программа:

unit laba3;

interface

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

type
 TForm1 = class(TForm)
   Button1: TButton;
   StringGrid1: TStringGrid;
   Edit1: TEdit;
   Edit2: TEdit;
   Label1: TLabel;
   procedure Button1Click(Sender: TObject);
   procedure Edit1Change(Sender: TObject);
   procedure Edit1KeyPress(Sender: TObject; var Key: Char);
   procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
   procedure Edit2KeyPress(Sender: TObject; var Key: Char);
   procedure Edit2Change(Sender: TObject);
   procedure StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
     const Value: String);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
  const
SIZE=20;
var
a: array[1..SIZE] of integer;
 Form1: TForm1;
 I,J: integer;
  h,k,n,m: integer;

implementation

{$R *.dfm}
procedure TForm1.Edit1Change(Sender: TObject);
begin
h:=0;
n:=StrToInt(Edit1.text);
If (n>20) OR (n<=0)
then begin ShowMessage("Выход за границы массива!");
    Edit1.Text:="20";
    end;
StringGrid1.ColCount:=n+1;
end;

procedure TForm1.Edit2Change(Sender: TObject);
begin
m:=StrToInt(Edit2.text);
if (2147483647 < StrToInt64(Edit2.Text)) or (-2147483647 > StrToInt64(Edit2.Text))
then
begin
 ShowMessage("Превышен размер числа!");
 Edit2.Text:="0";
end;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 case Key of
   "0".."9": ;
 else
   begin
     Key := #0;
     ShowMessage("Недопустимый элемент!");
   end;
   end;
   end;

   procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
   "0".."9": ;
 else
   begin
     Key := #0;
     ShowMessage("Недопустимый элемент!");
   end;
   end;
end;

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  h:=h+1;
  Label1.Caption:=IntToStr(h);
  for i:=1 to n-1 do
 a[i]:=StrToInt(StringGrid1.Cells[i,1]);
case Key of
   "0".."9": ;
 else
   begin
     Key := #0;
     ShowMessage("Недопустимый элемент!");
   end;
end;
end;

procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
 ARow: Integer; const Value: String);
begin
if (2147483647 < StrToInt64(Value)) or (-2147483647 > StrToInt64(Value))
then begin
 ShowMessage("Превышен размер числа!");
 for i:=1 to n do
 StringGrid1.Cells[i,j+1]:="";
end;
//if h=StrToInt(Edit1.Text) then Button1.Enabled:=True;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
found: boolean;
i: integer;
begin
{ввод числа элементов массива n<20}
{ввод массива }
{ввод искомого элемента массива}
{процедура поиска в массиве}
found:=false;
i:=1;
repeat
 if a[i]=m then
  found:=true
 else
  i:=i+1;
until (i>n) or (found = true);
if found=true then
 ShowMessage("Совпадение с элементом номер "+ IntToStr(i)+#13+
             "Поиск успешно завершен")
else
 ShowMessage("Заданный элемент не найден!");
end;
end.



Доброго времени суток! happy.gif
Программа:

unit laba3;

interface

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

type
 TForm1 = class(TForm)
   Button1: TButton;
   StringGrid1: TStringGrid;
   Edit1: TEdit;
   Edit2: TEdit;
   Label1: TLabel;
   procedure Button1Click(Sender: TObject);
   procedure Edit1Change(Sender: TObject);
   procedure Edit1KeyPress(Sender: TObject; var Key: Char);
   procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
   procedure Edit2KeyPress(Sender: TObject; var Key: Char);
   procedure Edit2Change(Sender: TObject);
   procedure StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
     const Value: String);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
  const
SIZE=20;
var
a: array[1..SIZE] of integer;
 Form1: TForm1;
 I,J: integer;
  h,k,n,m: integer;

implementation

{$R *.dfm}
procedure TForm1.Edit1Change(Sender: TObject);
begin
h:=0;
n:=StrToInt(Edit1.text);
If (n>20) OR (n<=0)
then begin ShowMessage("Выход за границы массива!");
    Edit1.Text:="20";
    end;
StringGrid1.ColCount:=n+1;
end;

procedure TForm1.Edit2Change(Sender: TObject);
begin
m:=StrToInt(Edit2.text);
if (2147483647 < StrToInt64(Edit2.Text)) or (-2147483647 > StrToInt64(Edit2.Text))
then
begin
 ShowMessage("Превышен размер числа!");
 Edit2.Text:="0";
end;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 case Key of
   "0".."9":;
 else
   begin
     Key := #0;
     ShowMessage("Недопустимый элемент!");
   end;
   end;
   end;

   procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
   "0".."9":;
 else
   begin
     Key := #0;
     ShowMessage("Недопустимый элемент!");
   end;
   end;
end;

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  h:=h+1;
  Label1.Caption:=IntToStr(h);
  for i:=1 to n-1 do
 a[i]:=StrToInt(StringGrid1.Cells[i,1]);
case Key of
   "0".."9":;
 else
   begin
     Key := #0;
     ShowMessage("Недопустимый элемент!");
   end;
end;
end;

procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
 ARow: Integer; const Value: String);
begin
if (2147483647 < StrToInt64(Value)) or (-2147483647 > StrToInt64(Value))
then begin
 ShowMessage("Превышен размер числа!");
 for i:=1 to n do
 StringGrid1.Cells[i,j+1]:="";
end;
//if h=StrToInt(Edit1.Text) then Button1.Enabled:=True;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
found: boolean;
i: integer;
begin
{ввод числа элементов массива n<20}
{ввод массива }
{ввод искомого элемента массива}
{процедура поиска в массиве}
found:=false;
i:=1;
repeat
 if a[i]=m then
  found:=true
 else
  i:=i+1;
until (i>n) or (found = true);
if found=true then
 ShowMessage("Совпадение с элементом номер "+ IntToStr(i)+#13+
             "Поиск успешно завершен")
else
 ShowMessage("Заданный элемент не найден!");
end;
end.

Преподаватель дал задание сделать Button1 недоступной или невидимой до тех пор пока не будут заполнены все ячейки StringGrid1. Подсказал что из процедуры Button1.Click нужно переместить всё что не связано непосредственно с кнопкой в Edit"ы и поставить в свойствах Button1 Enabled=False, а в тексте программы ввести счётчик и условие "если счётчик=кол-ву эл-тов то Enabled:=True" Я это сделала. Но как только пытаюсь щёлкнуть в Edit"ы или на StringGrid - программа вылетает с ошибкой "is not a valid integer value". С чем это связано? Я бы хотела доделать эту программу.


 
sniknik ©   (2010-03-21 15:31) [1]

> вылетает с ошибкой "is not a valid integer value". С чем это связано?
вероятно с незнанием английского.
http://delphimaster.net/view/15-1269080805/


 
Anatoly Podgoretsky ©   (2010-03-21 16:19) [2]

> Первокурсница  (21.03.2010 15:02:00)  [0]

Очень хорошо, можешь считать это сообщение, что грид не полностью заполнен.


 
Первокурсница ©   (2010-03-21 16:33) [3]

Спасибо =)



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

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.048 c
15-1264431625
dmk
2010-01-25 18:00
2010.08.27
Касперский ругается на форум


2-1269543236
Первокурсница
2010-03-25 21:53
2010.08.27
Delphi 7: строки, обратный порядок слов


15-1266830272
Игорь
2010-02-22 12:17
2010.08.27
Все что НЕ нужно начинающему программисту


2-1274355596
Jacksotnik
2010-05-20 15:39
2010.08.27
Помогите составить SQL запрос


15-1266571665
ANB
2010-02-19 12:27
2010.08.27
Госдума отказалась включать транспортный налог в стоимость топлив