![]() |
|
|
#1
|
||||
|
||||
|
Добрый день. Не большая проблема. Есть главная форма программы (Form1) из нее открываются другие формы (Form2),(Form3) и т.д.. Если я заполняю во второй форме едиты и комбобоксы и закрываю форму то они остаются заполнены пока не закрою главную форму (Form1). Как лучше сделать что бы при закрытии (Form2) очищались все введенные данные, без закрытия главной формы.
Заранее благодарю за помощь. |
|
#2
|
|||
|
|||
|
В событии формы OnShow, очищать эти поля вручную.
|
|
#3
|
||||
|
||||
|
То есть прописывать на каждый компонент? А нет возможности сразу как бы всю форму очистить?
|
|
#4
|
||||
|
||||
|
ну как вариант
Код:
for i:=1 to 2 do
(form1.FindComponent('Edit'+inttostr(i)) as Tedit).Text:=''; |
|
#5
|
||||
|
||||
|
Неа. К сожалению этот вариант не подходит.
![]() |
|
#6
|
||||
|
||||
|
Чем именно не подходит? Имена полей не однотипные? Можно тогда просто по типу контрола чистить:
Код:
Var i: Integer;
begin
for i := 0 to ControlCount - 1
do if Controls[i].ClassType = TEdit
then TEdit(Controls[i]).Clear;
end; |
|
#7
|
||||
|
||||
|
Не подходит тем что у меня кроме едитов еще и комбобоксы используются. Может с тагами попробовать, чтоб знать какие содержание каких компонентов удалять?
|
|
#8
|
||||
|
||||
|
Код:
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Edit1: TEdit;
ComboBox1: TComboBox;
ListBox1: TListBox;
Memo1: TMemo;
CheckBox1: TCheckBox;
RadioButton1: TRadioButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
...
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
for i:=0 to ControlCount-1 do
if Controls[i] is TWinControl then
SendMessage(TWinControl(Controls[i]).Handle, WM_SETTEXT, 0, 0);
// SendMessage(TWinControl(Controls[i]).Handle, WM_SETTEXT, 0, Integer(PChar('avatar 3d')));
end;![]() Последний раз редактировалось NumLock, 21.02.2011 в 10:54. |
|
#9
|
|||
|
|||
|
Так удали тогда отдельно все едиты и все комбобоксы таким методом.
|
|
#10
|
||||
|
||||
|
Вот отыскал на просторах интернета, но тоже не хочет работать. Тут с Tag-ами
Код HTML:
|
|
#11
|
|||
|
|||
|
Цитата:
Код:
For i:=form2.ComponentCount - 1 downto 0 do... Последний раз редактировалось stil, 21.02.2011 в 11:58. |
|
#12
|
||||
|
||||
|
нет этот коду убивает все компоненты с тагом равным 1 на форме.
Я вам уже дал рабочий код для едитов, если нужно еще и комбики, то так: Код:
Var i: Integer;
begin
for i := 0 to ControlCount - 1
do begin
if Controls[i].ClassType = TEdit
then TEdit(Controls[i]).Clear;
if Controls[i].ClassType = TComboBox
then TComboBox(Controls[i]).Clear;
end;
end; |
|
#13
|
||||
|
||||
|
Код:
var
i: Integer;
begin
for i := 0 to ControlCount - 1 do
if Controls[i].ClassType = TEdit then
TEdit(Controls[i]).Clear
else if Controls[i].ClassType = TComboBox then
TComboBox(Controls[i]).Clear;
end;добавлено позже пока писал уже ответили))) |
|
#14
|
||||
|
||||
|
Спасибо ВСЕМ большое за участие, и помощь. Все работает, все прекрасно.
![]() |
|
#15
|
||||
|
||||
|
Спасибо ВСЕМ большое за советы и помощь. Все зараюотало. Сам не много сглупил.
|