Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как убрать фокус с кнопки


Автор: kent 17.9.2005, 12:11
Как убрать фокус с кнопки, т. е. когда я запускаю программу фокус сразу же прорисовывается
на кнопке, как его можно убрать при запуске программы...

Автор: Payne 17.9.2005, 12:27
Следующий кусок кода должен помочь:

Код

procedure TForm1.FormCreate (sender: TObject);
begin
  Button1.ControlState := [csFocusing]
end;

Автор: Quadr0 17.9.2005, 12:45
...

Автор: kent 17.9.2005, 13:02
Объявил процедуру в классах, написал в исполнении, но почему то не запускается - выдает Error ->Expected '=' but '(' found
Добавлено @ 13:08
Как правильно её оформить в модуле?

Автор: Payne 17.9.2005, 13:16
2QuadrO:
Но почему-то первый вариант снимает фокус, а твой - наоборот, не снимает.
Для примера я поставил на форме label, а в обработке нажатия кнопки написал:

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := 'Кнопка нажата';
end;

Юзая свой вариант, я удостоверился, что при нажатии Enter при запуске программы, надпись не появляется, т.е. на кнопке фокуса нет. При использовании же твоего варианта нажимаем Enter и надпись появляется, т.е. фокус на кнопке.
Да, и извините за ошибку - не csFocused, а csFocusing. Без обид, но сначала проверяй код, как он работает...

Автор: Poseidon 17.9.2005, 13:24
kent
1) Код в студию!
2) Один топик, один вопрос!

Автор: kent 17.9.2005, 13:25
Разобрался я с оформлением, но это не то что нужно, надо чтобы не после ентера фокус снимался, а сразу же после запуска программы...

Автор: Akella 17.9.2005, 13:41
Код

Button1.Default := False;

Автор: kent 17.9.2005, 13:49
Цитата(dsergey @ 17.9.2005, 13:41)
Код

Button1.Default := False;

Попробовал и твой вариант все равно фокус не снимается.... smile

Автор: Poseidon 17.9.2005, 13:54
kent, тебе уже дали ответ!

Цитата(Payne @ 17.9.2005, 12:27)
Код

procedure TForm1.FormCreate (sender: TObject);
begin
  Button1.ControlState := [csFocusing]
end;


Автор: kent 17.9.2005, 13:57
Цитата(Poseidon @ 17.9.2005, 13:54)
kent, тебе уже дали ответ!

Цитата(Payne @ 17.9.2005, 12:27)
Код

procedure TForm1.FormCreate (sender: TObject);
begin
  Button1.ControlState := [csFocusing]
end;

Так я его пробовал, не помогает...

Автор: FRAGNATIC 17.9.2005, 13:59
а трудно при создании формы фокус передать другому контролу типа
Form1.SetFocusedControl()

Автор: Poseidon 17.9.2005, 14:00
Цитата(kent @ 17.9.2005, 13:57)
не помогает...
Плохо значит пробовал! Мне помогает, Payne помогает, а тебе не помогает! Это как? Или хочешь что-то не то, что написал!

Автор: FRAGNATIC 17.9.2005, 14:01
или Button2.SetFocus;
Добавлено @ 14:03
Цитата
Button1.ControlState := [csFocusing]

и мне помогает) ток этот код не оч прикольный в том плане что после него кнопка ваще фокус не сохроняет)))))
но в томже оброботчике нажатия кнопки это мона подправить)))

Автор: kent 17.9.2005, 14:20
Цитата(Poseidon @ 17.9.2005, 14:00)
[/QUOTE] Плохо значит пробовал! Мне помогает, Payne помогает, а тебе не помогает! Это как? Или хочешь что-то не то, что написал!

Все пробовал как надо можешь сам убедиться, см. аттач...

Автор: Poseidon 17.9.2005, 14:45
Ну и где в твоем аттаче ЭТО?

Вот, лови:


PS. Каждый програмvист должен написать свой калькулятор smile

Автор: kent 17.9.2005, 15:01
У меня было написано:
Код

procedure TMainForm.MainFormCreate (sender: TObject);
begin
     ZeroBitBtn.ControlState := [csFocusing] ;
end;

ты дописал ещё:
Код

procedure TMainForm.FormCreate(Sender: TObject);
begin
ZeroBitBtn.ControlState := [csFocusing];
end;

и фокус пропал.... smile
Спасибо за помошь, но я не пойму в чем разница между первой и второй процедурой....

Автор: kent 17.9.2005, 15:46
Спасибо всем кто помогал!!! smile

Автор: kent 17.9.2005, 16:36
Цитата(kent @ 17.9.2005, 15:01)
У меня было написано:
Код

procedure TMainForm.MainFormCreate (sender: TObject);
begin
     ZeroBitBtn.ControlState := [csFocusing] ;
end;

ты дописал ещё:
Код

procedure TMainForm.FormCreate(Sender: TObject);
begin
ZeroBitBtn.ControlState := [csFocusing];
end;

и фокус пропал.... smile

Терь я догнал что разницы никакой нет, если процедура:
Код

procedure TMainForm.MainFormCreate (sender: TObject);

то надо в файле .dfm дописать строчку
Код

OnCreate = MainFormCreate

А если:
Код

procedure TMainForm.FormCreate(Sender: TObject);

то пишем там
Код

OnCreate = FormCreate

smile

Автор: Payne 17.9.2005, 17:06
Цитата(kent @ 17.9.2005, 14:46)
Спасибо всем кто помогал!!!

Надеемся, что разобрался smile .
И... всегда пожалуйста!

Автор: Quadr0 17.9.2005, 22:09
...

Автор: Payne 18.9.2005, 09:09
Quadr0, хм, возможно... Нужно будет в этом лучше разобраться smile .

Автор: Akella 19.9.2005, 12:28
smile ДА, ПРОСТО НУЖНО БЫЛО НА ВСЕХ КНОПКАХ ПОСТАВИТЬ TABSTOP := FALSE

Автор: Poseidon 19.9.2005, 16:53
dsergey, точно smile
Все гениальное просто smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)