我正在我的 FMX 应用程序中开发类似于 Microsoft Teams 的标记功能。
它在 Teams 中的外观如下:
现在在我的版本中,我还想向弹出窗口添加编辑字段和其他内容。
我开始尝试使用TPopup
,但问题是,如果您单击弹出窗口TEdit
内的 ,弹出窗口将关闭。由于 中的WndProc
代码FMX.Platform.Win
:
WM_ACTIVATE:
begin
if not ((TFmxFormState.Recreating in LForm.FormState) or (LForm.FormStyle = TFormStyle.Popup) or
WindowHandleToPlatform(LForm.Handle).FDisableDeactivate) then
begin
if LoWord(wParam) <> 0 then
begin
if HiWord(wParam) = 0 then
LForm.Activate;
// If the window is minimized, then do nothing.
end
else
begin
PrepareClosePopups;
LForm.Deactivate;
ClosePopupList; // This is called when clicking on edit on popup
end;
end;
Result := 0;
end;
ClosePopupList
在单击弹出窗口内部时调用TEdit
,此函数关闭弹出窗口。
因此我改用TForm
并解决了该问题,但在显示带有我的备忘录的表格后Show
不再具有焦点。
我希望将焦点放在备忘录上,除非我们点击弹出窗口内的编辑,在这种情况下,编辑应该获得焦点,弹出窗口应该保持打开状态。如果我点击弹出窗口外,则弹出窗口应该关闭。
有办法解决这个问题吗?