2010-10-19 3 views
0

У меня есть очень простая задача, но я не нашел хороший способ, как я должен решить эту проблему:Простая задача создания графического интерфейса

У меня есть поле TEdit. Когда я вхожу в это поле редактирования, я хочу показать панель. Когда я нажимаю на панель, панель должна скрываться. Когда я покидаю поле редактирования, панель также должна скрываться, но я не могу использовать событие onExit для editField, потому что это скроет панель, прежде чем я могу ее щелкнуть. Я экспериментирую какое-то время, чтобы решить эту проблему, но не могу найти элегантный способ ... Любые идеи? благодаря!

+2

Можете ли вы перефразировать вопрос, пожалуйста? Как написано сейчас, мне это не имеет смысла. Вы говорите: «Когда я покидаю поле редактирования, панель также должна скрывать« но »не может использовать onExit ... потому что это скроет панель, прежде чем я ее кликнуть». В первом предложении есть намек на то, что нет необходимости нажимать на панель, а второй - на щелчок. Тем не менее, щелчок будет скрывать панель в любом случае, так почему необходимо отслеживать выход из поля редактирования? – gabr

+0

ОК, может быть, она была новичком в дельфи. – XBasic3000

ответ

0

Вы можете использовать ActiveControl свойство формы в OnClick случае панели и OnExit случае EditField

+0

Хорошая идея, благодаря! Я попробую.. – flinkiy1

1

Ну, это is a сложный. Рассматривали ли вы скрытие панели с событием onEnter для каждого элемента управления кроме панели и поля редактирования?

Другими словами, панель не скроется при выходе из поля редактирования и введите панель, но она будет скрыть себя, как только она выполнит свою работу.

Выход из поля редактирования и ввода любого поля, кроме панели, также приведет к скрыть панель.

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

   onExit onEnter  panelAction 
       ------- -------  ----------- 
panel   nothing nothing  hide panel 
edit field nothing show panel nothing 
all others nothing hide panel nothing 
+0

Привет, Pax, спасибо за ваше предложение - я уже это считал, но я надеюсь, что есть «более умное» решение ... – flinkiy1

+3

Эй, у меня есть смутное чувство, что меня оскорбляют там :-) – paxdiablo

0

на самом деле вы можете использовать OnExit, потому что панель не является целесообразна, поэтому ваше редактирование по-прежнему фокусируется при нажатии на панель (проверено с помощью d7).

это либо это, либо я не понял, что вам нужно. если последний случай, попробуйте перефразировать как Gabr предполагалось ранее;)

приветствий, G

0

я проверить вашу проблему. проверьте это.

procedure TForm1.Edit1Enter(Sender: TObject); 
begin 
    Panel1.Visible := true; 
end; 

procedure TForm1.Edit1MouseLeave(Sender: TObject); 
begin 
    Panel1.Hide; 
end; 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    Edit1.TabStop := False; 
    Panel1.Visible := False; 
end; 

procedure TForm1.Panel1Click(Sender: TObject); 
begin 
(Sender as TPanel).Visible := false; 
end; 
Смежные вопросы