Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизПрограмма вылетает (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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.065 c