gpt4 book ai didi

delphi - 使两个TEdits互斥

转载 作者:行者123 更新时间:2023-12-03 19:44:03 25 4
gpt4 key购买 nike

我有两个用于指定文件路径的TEdit框,一个用于UNC路径,另一个用于本地路径。但是,我希望这样,如果用户只能在一个框中输入文本。如果他们在一个框中输入文本,则应清除另一个。我应该怎么做呢?另外,不确定我是否应该使用OnEnter,OnChange或其他方法。

最佳答案

您可以非常简单地完成此操作。创建一个OnChange处理程序,然后使用“对象检查器”的“事件”选项卡将其分配给两个TEdit。然后,您可以使用类似以下的内容:

procedure TForm1.EditChanged(Sender: TObject); //Sender is the edit being changed
begin
if Sender = UNCEdit then // If it's is the UNCEdit being changed
begin
LocalPathEdit.OnChange := nil; // Prevent recursive calling!
LocalPathEdit.Text := ''; // Clear the text
LocalPathEdit.OnChange := EditChanged; // Restore the event handler
end;
else
begin
UNCEdit.OnChange := nil;
UNCEdit.Text := '';
UNCEdit.OnChange := EditChanged;
end;
end;


可以稍微简化一下,但是对其他人来说可读性不强。最终,也可以使用try..find对其进行保护,尽管实际上仅不需要清除编辑的文本内容。

procedure TForm1.EditChanged(Sender: TObject);
var
TmpEdit: TEdit;
begin
if Sender = UNCEdit then
TmpEdit := LocalPathEdit
else
TmpEdit := UNCEdit;
TmpEdit.OnChange := nil;
try
TmpEdit.Text := '';
finally
TmpEdit.OnChange := EditChanged;
end;
end;

关于delphi - 使两个TEdits互斥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8853188/

25 4 0