Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.02.2011, 08:58
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию Очистить форму

Добрый день. Не большая проблема. Есть главная форма программы (Form1) из нее открываются другие формы (Form2),(Form3) и т.д.. Если я заполняю во второй форме едиты и комбобоксы и закрываю форму то они остаются заполнены пока не закрою главную форму (Form1). Как лучше сделать что бы при закрытии (Form2) очищались все введенные данные, без закрытия главной формы.
Заранее благодарю за помощь.
Ответить с цитированием
  #2  
Старый 21.02.2011, 09:04
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

В событии формы OnShow, очищать эти поля вручную.
Ответить с цитированием
  #3  
Старый 21.02.2011, 09:09
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

То есть прописывать на каждый компонент? А нет возможности сразу как бы всю форму очистить?
Ответить с цитированием
  #4  
Старый 21.02.2011, 09:35
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

ну как вариант

Код:
for i:=1 to 2 do
(form1.FindComponent('Edit'+inttostr(i)) as Tedit).Text:='';
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
  #5  
Старый 21.02.2011, 09:55
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

Неа. К сожалению этот вариант не подходит.
Ответить с цитированием
  #6  
Старый 21.02.2011, 10:21
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Чем именно не подходит? Имена полей не однотипные? Можно тогда просто по типу контрола чистить:
Код:
Var i: Integer;
begin
 for i := 0 to ControlCount - 1
 do if Controls[i].ClassType = TEdit
    then TEdit(Controls[i]).Clear;
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 21.02.2011, 10:34
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

Не подходит тем что у меня кроме едитов еще и комбобоксы используются. Может с тагами попробовать, чтоб знать какие содержание каких компонентов удалять?
Ответить с цитированием
  #8  
Старый 21.02.2011, 10:52
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
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  
Старый 21.02.2011, 10:53
iGeTT iGeTT вне форума
Прохожий
 
Регистрация: 23.12.2010
Адрес: Moscow
Сообщения: 38
Версия Delphi: 7 Lite
Репутация: 10
По умолчанию

Так удали тогда отдельно все едиты и все комбобоксы таким методом.
Ответить с цитированием
  #10  
Старый 21.02.2011, 11:17
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

Вот отыскал на просторах интернета, но тоже не хочет работать. Тут с Tag-ами
Код HTML:
procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin i:=0; while(i = form2.ComponentCount - 1) do begin if components[i].Tag = 1 then begin components[i].Free; continue; end; inc(i); end; end;
Я так понимаю что проверяется Tag компонента, и если равен 1 то очищается.
Ответить с цитированием
  #11  
Старый 21.02.2011, 11:56
stil stil вне форума
Новичок
 
Регистрация: 24.11.2010
Сообщения: 91
Репутация: 41
По умолчанию

Цитата:
Сообщение от fofka
Вот отыскал на просторах интернета, но тоже не хочет работать. Тут с Tag-ами
Код HTML:
procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin i:=0; while(i = form2.ComponentCount - 1) do begin if components[i].Tag = 1 then begin components[i].Free; continue; end; inc(i); end; end;
Я так понимаю что проверяется Tag компонента, и если равен 1 то очищается.
Ты уничтожаешь объекты на Form1 а условие цикла пишешь form2.ComponentCount - 1. Я обычно цикл For использую
Код:
For i:=form2.ComponentCount - 1 downto 0 do... 
Может уничтожешь дочернюю форму а когда нужно вновь создашь

Последний раз редактировалось stil, 21.02.2011 в 11:58.
Ответить с цитированием
  #12  
Старый 21.02.2011, 11:57
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

нет этот коду убивает все компоненты с тагом равным 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  
Старый 21.02.2011, 11:58
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
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  
Старый 21.02.2011, 13:09
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

Спасибо ВСЕМ большое за участие, и помощь. Все работает, все прекрасно.
Ответить с цитированием
  #15  
Старый 21.02.2011, 13:10
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

Спасибо ВСЕМ большое за советы и помощь. Все зараюотало. Сам не много сглупил.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:27.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter