Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2011, 05:29   #1
maris01
 
Регистрация: 07.08.2011
Сообщений: 5
По умолчанию Восстановление Edit по умолчанию

Подскажите пожалуйста, есть ли возможность восстановления по умолчанию всех полей edit одним кликом ?
maris01 вне форума Ответить с цитированием
Старый 07.08.2011, 06:16   #2
HyperZen
Пользователь
 
Аватар для HyperZen
 
Регистрация: 20.07.2010
Сообщений: 45
По умолчанию

Код:
procedure TForm1.btn1Click(Sender: TObject);
var
 i: Integer;
begin
For i:= 0 to Form1.ComponentCount - 1 do
 if Form1.Components[i] is TEdit then
  (Form1.Components[i] as TEdit).Text := '';
end;
Плохого человека должно быть мало...
HyperZen вне форума Ответить с цитированием
Старый 07.08.2011, 06:23   #3
maris01
 
Регистрация: 07.08.2011
Сообщений: 5
По умолчанию

Спасибо, но хотелось бы чтобы там было не пусто, а значения по умолчанию, которые были в начале работы программы- числа, слова и тд.И может еще подскажете- при нетронутых пользователем полях при нажатии кнопки - выскакивала бы мессага.

Последний раз редактировалось maris01; 07.08.2011 в 07:08.
maris01 вне форума Ответить с цитированием
Старый 07.08.2011, 09:54   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не уверен на 100%, но, имхо, нельзя получить значение, которое Вы задали в Edit в дизайнере (хотя, повторю, возможно я и ошибаюсь и доступ к этим значениям можно получить каким-то хитрым образом...)

Поэтому предлагаю такое решение.
Есть событие, которое возникает 1 раз при создании формы.
Это событие onCreate.
в этом событии написать сохранение всех значений Edit`ов в любую структуру данных. Например, по простому в TStringList.
Ну, дальше уже понятно - по нажатию кнопки два цикла.
1-й - сравниваете сохранённые значения с текущими, если они все "нетронутые" (или есть хоть одно "нетронутое" - это как Вам нужно по логике...) - выдаёте мессагу и выходите.
иначе - ещё один цикл и заполняете значения полей из сохранённой структуры.


p.s. код несложный, основу перебора Вам дал HyperZen
но, если возникнут сложности, пишите, набросаю примерчик...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.08.2011, 11:33   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в этом событии написать сохранение всех значений Edit`ов в любую структуру данных.
А я обычно не мелочусь, и все пихаю в ИНИ файлы
Код:
unit Unit1;

interface

uses     inifiles,
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ButtonScreenShoot: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i:TIniFile;s:TStringList;q:integer;c:TComponent;
begin
 i:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'ini.ini');
 s:=TStringList.Create;
 i.ReadSectionValues('controls',s);
 for q:=0 to s.Count-1 do begin
  c:=FindComponent(s.Names[q]);
  if c<>nil then begin
   TEdit(c).Text:=s.Values[s.Names[q]];
  end;
 end; i.Free;s.Free;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var i:TIniFile;q:integer;
begin
 i:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'ini.ini');
 for q:=0 to Componentcount-1 do begin
  if Components[q] is TEdit then begin
   i.WriteString('controls',Components[q].Name,TEdit(Components[q]).Text);
  end;
 end; i.Free;
end;
end.
Может и глупо, зато работает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.08.2011, 12:34   #6
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

В копилку мировой глупости, загружаем форму заново и считываем поле Text у едитов:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  c: Integer;
  E: TEdit;
begin
  with (NewInstance() as TForm) do try
    //
    Create(nil);
    for c := 0 to ComponentCount - 1 do
      if Components[c] is TEdit then
	(Self.Components[c] as TEdit).Text := (Components[c] as TEdit).Text;
  finally
    Free();
  end;
end;
Вобще, сама идея привязки к мусору, который случайно был задан в DesignTime — крайне порочная, имхо.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 07.08.2011 в 12:37.
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование строки из Edit в другой Edit. Ibanez Wizard Win Api 3 29.03.2011 02:46
Конструктор по умолчанию. Jane-sad Помощь студентам 1 23.11.2010 11:52
Восстановление шаблона по умолчанию... Busine2009 Microsoft Office Word 1 04.07.2009 22:57
Открыть по умолчанию beemoto Общие вопросы Delphi 25 19.05.2009 21:18
Конструктор по умолчанию Rembo Общие вопросы C/C++ 9 30.07.2008 09:54