我有一个非常简单的问题,但我找不到一个很好的方法来解决这个问题:
我有一个TEdit字段。当我进入这个编辑字段时,我想显示一个面板。 当我单击面板时,面板应该隐藏。 当我离开编辑字段时,面板也应该隐藏,但是我不能使用editField的onExit事件,因为这会在我点击之前隐藏面板。 我正在尝试一段时间来解决这个问题,但找不到优雅的方式...... 有任何想法吗?谢谢!
答案 0 :(得分:1)
嗯, 是一个棘手的问题。您是否考虑使用onEnter
事件为每个控件隐藏面板,除了面板和编辑字段?
换句话说,退出编辑字段并进入面板时,面板不会隐藏自身,但 一旦执行完工作就会隐藏自己。
退出编辑字段并输入面板以外的任何字段也会导致面板隐藏。
这些都不是由编辑字段onExit
驱动的,更多是由您输入的其他字段驱动的。它很复杂,但它可能会起作用。请参阅下表了解条件及其相关操作:
onExit onEnter panelAction
------- ------- -----------
panel nothing nothing hide panel
edit field nothing show panel nothing
all others nothing hide panel nothing
答案 1 :(得分:0)
您可以在Panel的OnClick事件和EditField的OnExit事件中使用Form的 ActiveControl 属性
答案 2 :(得分:0)
实际上你可以使用onExit因为面板不可聚焦,所以当你点击面板(用d7测试)时你的编辑仍然是集中的。
它要么是这个,要么我不太清楚你需要什么。如果是最新的情况,请尝试像之前建议的gabr那样改写;)
欢呼声, ģ
答案 3 :(得分: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;