2015-02-06 4 views
0

Я хотел бы использовать 2 элемента TEdit и кнопку для этого. Как я могу проверить, есть ли у всех Правка какое-либо текстовое значение. После этого я хочу активировать кнопку.Необходимо включить кнопку, когда текст введен в полях редактирования

Основная форма Событие Onshow: Btn1.Enabled: = false;

если Edit1.text + Edit2.text имеет значение, то btn1.enabled: = true?

Спасибо за помощь!

ответ

7

Вы using actions? Если нет, вы должны это рассмотреть.

Add a TActionList to your application если у вас его еще нет. Затем добавьте к нему TAction. Задайте свойства действия так, чтобы он напоминал кнопку. (I.e., установите заголовок и переместите обработчик события OnClick кнопки обработчику .) Назначьте свойство кнопки Action, чтобы обратиться к новому объекту действия.

И наконец, обработайте событие действия OnUpdate. В нем активируйте или отключите действие по мере необходимости. Кнопка (и любые другие элементы управления, которые вы позже решили связать с тем же действием) будет updated accordingly.

procedure TSteveForm.ButtonActionUpdate(Sender: TObject); 
begin 
    TAction(Sender).Enabled := (Edit1.Text <> '') and (Edit2.Text <> ''); 
end; 

Это выглядит очень похоже на обработку в OnChange события управления редактирования, но его различия становятся очевидными, когда сценарий изменения:

  1. Если добавить или удалить редактирования элементов управления, вы должны изменить только эта одна процедура, чтобы кнопка была включена правильно. Если вы обращаетесь с событиями OnChange, вам необходимо изменить процедуру и присвоить ее каждому новому объекту управления OnChange.
  2. Не все элементы управления имеют удобное событие OnChange, которое позволяет вам узнать, когда что-то изменилось. Действия 'OnUpdate событий освобождают вас от необходимости точно знать, когда обновление подходит. Они работают, пока программа не работает и по требованию.
+0

Ударьте меня на ответ, прежде чем я смогу вернуться, чтобы отредактировать мою. Upvoted. –

3

Используйте событие Edit1.OnChange и установите его для обработки Edit2.OnChange. Код обработчика событий прост:

procedure TForm1.Edit1Change(Sender: TObject); 
begin 
    Btn1.Enabled := (Edit1.Text <> '') and (Edit2.Text <> ''); 
end; 
+0

Спасибо, ребята, очень! – Steve88

+0

Лично я скорее увижу действия, используемые для этого. Это делает код более декларативным. –

Смежные вопросы