简单的gui设计问题

时间:2010-10-19 07:18:44

标签: delphi

我有一个非常简单的问题,但我找不到一个很好的方法来解决这个问题:

我有一个TEdit字段。当我进入这个编辑字段时,我想显示一个面板。 当我单击面板时,面板应该隐藏。 当我离开编辑字段时,面板也应该隐藏,但是我不能使用editField的onExit事件,因为这会在我点击之前隐藏面板。 我正在尝试一段时间来解决这个问题,但找不到优雅的方式...... 有任何想法吗?谢谢!

4 个答案:

答案 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;