Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
ВнизКак очистить Edit, StringGrid? Найти похожие ветки
← →
Евгения (2005-03-09 19:59) [0]Здравствуйте. У меня небольшая проблемка. Мне необходимо,чтобы при нажатии на Button у меня очищались Edit и StringGrid, т.е. удалялась из них информация, введеная ранее.
Дело в том, что при условиях Edit1.Text:=""; Edit2.Clear при нажатии на Button вылезает ошибка: "...EConvertError... is not a valid integer value..."
А как убрать все из StringGrid, я вообще не знаю.
Что же мне делать? Пожалуйста, помогите.
Спасибо.
← →
Virgo_Style © (2005-03-09 20:10) [1]Из StringGrid - в цикле, а что касается Edit - скорее всего у тебя в OnChange идет конверсия StrTo???(Edit?.Text);
← →
Zeqfreed © (2005-03-09 20:14) [2]Евгения (09.03.05 19:59)
Было бы неплохо увидеть еод обработчика события OnClick кнопки.
← →
ламер_ (2005-03-09 20:38) [3]И не только OnClick кнопки, но и OnChange обоих Едитов
← →
begin...end © (2005-03-09 20:42) [4]> Евгения (09.03.05 19:59)
> А как убрать все из StringGrid, я вообще не знаю.
Чтобы очистить StringGrid, можно каждой ячейке присвоить пустую строку.
← →
ламер_ (2005-03-09 20:51) [5]
> Чтобы очистить StringGrid, можно каждой ячейке присвоить
> пустую строку.
Не обязательно, .Rows( или .Cols) - это TStrings, а у них есть стандартный метод Clear.
← →
ламер_ (2005-03-09 20:52) [6]Блин !!! НЕЛЬЗЯ-ААААА. Написал, и только потом сообразил. Ни в коем случае не воспринимать [5]!!!
← →
Евгения (2005-03-09 21:02) [7]const nn=50 ;
type matrix_a = array [1..nn,1..nn] of real;
type matrix_b = array [1..nn] of real;
procedure TForm8.Button1Click(Sender: TObject);
var a: matrix_a; b,x,x0: matrix_b;
i,j,k,max_it:integer; s,eps: real; q: Boolean;
begin
n:=StrToInt(Edit1.Text);
max_it:=StrToInt(Edit2.Text);
eps:=StrToFloat(Edit5.Text);
Memo1.Clear;
for i:=1 to n do for j:=1 to n do a[i,j]:=StrToFloat(sgM.Cells[i-1,j-1]);
for i:=1 to n do b[i]:=StrToFloat(sgV.Cells[0,i-1]);
for i:=1 to n do x0[i]:=0;
j:=0; q:=False;
repeat
for i:=1 to n do begin
s:=0; for k:=1 to n do if i<>k then s:=s+a[k,i]*x0[k];
if a[i,i]=0 then
begin
ShowMessage("Ïîïðîáóéòå åù¸ ðàç (äåëåíèå íà íîëü)");
Exit;
end;
x[i]:=(b[i]-s)/a[i,i]; end;
for i:=1 to n do
begin
if abs(x[i]-x0[i])>eps then q:=False else q:=True; x0[i]:=x[i]; end;
inc(j);
until (j=max_it) or q;
Memo1.Lines.Add("Èòåðàöèé: "+IntToStr(j));
if q=False then Memo1.Lines.Add("Çàäàííàÿ òî÷íîñòü íå äîñòèãíóòà");
for i:=1 to n do Memo1.Lines.Add("x["+IntToStr(i)+"]="+FloatToStrF(x0[i],ffgeneral,4,5));
Label6.Visible:=true;
Memo1.Visible:=true;
end;
procedure TForm8.Edit1Change(Sender: TObject);
var
z : Byte;
begin
z:=StrToInt(Edit1.Text);
sgM.RowCount:=z;
sgM.ColCount:=z;
sgV.RowCount:=z;
//sgR.RowCount:=z;
sgM.Visible:=true;
sgV.Visible:=true;
Label1.Visible:=true; Label4.Visible:=true;
Label2.Visible:=true; Label3.Visible:=true;
Label5.Visible:=true;
Edit2.Visible:=true; Edit5.Visible:=true;
Form8.Height:=436; Form8.Width:=542;
Button2.Visible:=true; BitBtn1.Visible:=true;
end;
procedure TForm8.Button2Click(Sender: TObject);- Вот в этой процедурке это должно произойти
begin
Button1.Visible:=false; BitBtn1.Visible:=false;
Edit1.Visible:=false; Edit2.Visible:=false;
Edit3.Visible:=false; Memo1.Visible:=false;
Label1.Visible:=false; Edit5.Visible:=false;
Label2.Visible:=false; Label3.Visible:=false;
Label4.Visible:=false; Label5.Visible:=false;
Label6.Visible:=false; Button2.Visible:=false;
sgM.Visible:=false; sgV.Visible:=false;
Button5.Visible:=false;
Form8.Height:=96; Form8.Width:=297;
end;
procedure TForm8.N3Click(Sender: TObject);
var i,j:word;
s:string;
begin
Edit4.Visible:=true; Label1.Visible:=true;
full_random(c); d:=c;
for i:=0 to sgV.RowCount-1 do
for j:=0 to sgV.ColCount-1 do
begin
str(c[i,j]:6:0,s); sgV.Cells[j,i]:=s
end;
end;
← →
Virgo_Style © (2005-03-09 21:07) [8]
procedure TForm8.Edit1Change(Sender: TObject);
var
z : Byte;
begin
z:=StrToInt(Edit1.Text);
sgM.RowCount:=z;
Вот оно. Можно до этого сделатьif Trim(Edit1.Text)="" then exit;
или по-другому, зависит от логики программы.
А еще лучше сделать нормальную обработку исключения try..except.
← →
Virgo_Style © (2005-03-09 21:08) [9]И здесь тоже.
procedure TForm8.Button1Click(Sender: TObject);
var a: matrix_a; b,x,x0: matrix_b;
i,j,k,max_it:integer; s,eps: real; q: Boolean;
begin
n:=StrToInt(Edit1.Text);
max_it:=StrToInt(Edit2.Text);
eps:=StrToFloat(Edit5.Text);
Memo1.Clear;
← →
Zeqfreed © (2005-03-09 21:10) [10]Virgo_Style © (09.03.05 21:08) [9]
Я нигде не удлядел упамянания о том, что ошибка происходит при изменении текста Edit"а. Говорилось только про Button. Сори, если ошибся.
Евгения (09.03.05 21:02) [7]
На какой строке ошибка? Если в Button1Click, то вероятно в Edit1,Edit2 или Edit5 введено не число или число ведено не корректно.
← →
Zeqfreed © (2005-03-09 21:12) [11]Прошу прощения за такое ужасающее кол-во опечаток. Видимо пора баиньки.
← →
Virgo_Style © (2005-03-09 21:21) [12]
> Я нигде не удлядел упамянания о том, что ошибка
> происходит при изменении текста Edit"а
Очистка Edit - это его изменение, не так ли?
← →
ламер_ (2005-03-09 21:25) [13]Adding 2 [5] Нет, оказуется, можно. Только не Rows.Clear, а Rows.Text:="" :Use Text to get or set all the strings in the TStrings object in a single string delimited by carriage return
Если правильно понял, то в Edit1Change первые строки:try
z:=StrToInt(Edit1.Text);
except
z:=0;
end;
В этом случае StringGrid"ы очищать не нужно - количество ячеек автоматом установится в 0. Проверил - значения не сохраняются.
← →
Zeqfreed © (2005-03-09 21:30) [14]Virgo_Style © (09.03.05 21:21) [12]
Ну я же сказал, что пора мне баиньки.
Евгения (09.03.05 21:02)
Следует поместить все операции преобразования текста в числа в блок защищенного режима. См. [13]
← →
ламер_ (2005-03-09 21:43) [15]2 [14] Zeqfreed: Дадада. Те же я@ца, только в профиль.
Для каждого StrToInt - блок Try..Except..End.
2 Евгения : только будь готова к тому, что при запуске под Delphi все равно будет выскакивать ошибка - это нормально, F9 и далее.
← →
Virgo_Style © (2005-03-09 21:51) [16]
> Для каждого StrToInt
Так-таки и для каждого? Хотя это проще, чем вникать в идеологию, но такая метОда мне кажется сомнительной. Просто потому, что есть StrToIntDef и StrToFloatDef.
> только будь готова к тому
Tjjls - Debugger - Language Exceptions - Stop On Delphi Exceptions - выключено.
← →
Virgo_Style © (2005-03-09 21:52) [17]> Tjjls = Tools, тоже баиньки пора :-)
← →
ламер_ © (2005-03-09 21:58) [18]Нууу...
> есть StrToIntDef
Не знал, но на то я и ламер_:)). Действительно, так гораздо проще.
← →
Евгения (2005-03-09 21:59) [19]Огромное спасибо всем, кто принял участие в решении моей проблемы.
С уважением, Евгения.
← →
begin...end © (2005-03-09 22:01) [20]А ещё есть TryStrToInt и TryStrToFloat.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.036 c