Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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("&#207;&#238;&#239;&#240;&#238;&#225;&#243;&#233;&#242;&#229; &#229;&#249;&#184; &#240;&#224;&#231; (&#228;&#229;&#235;&#229;&#237;&#232;&#229; &#237;&#224; &#237;&#238;&#235;&#252;)");
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("&#200;&#242;&#229;&#240;&#224;&#246;&#232;&#233;: "+IntToStr(j));
if q=False then Memo1.Lines.Add("&#199;&#224;&#228;&#224;&#237;&#237;&#224;&#255; &#242;&#238;&#247;&#237;&#238;&#241;&#242;&#252; &#237;&#229; &#228;&#238;&#241;&#242;&#232;&#227;&#237;&#243;&#242;&#224;");
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.035 c
14-1109753342
NeyroSpace
2005-03-02 11:49
2005.03.27
Нужен эмулятор медленного компьютера для запуска


1-1111061635
Быстрый Шу
2005-03-17 15:13
2005.03.27
Приведение типа Variant


14-1110173906
begin...end
2005-03-07 08:38
2005.03.27
С Днём рождения! 7 марта


1-1110954693
lehich
2005-03-16 09:31
2005.03.27
проверить вхождение подстроки в строку


8-1101796474
СЕМЕН
2004-11-30 09:34
2005.03.27
Задолбил TJPEGIMAGE





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский