Problem in retreiveng textbox string in uicontrol created dialog
1 次查看(过去 30 天)
显示 更早的评论
Hello,
I have the following function, which creates a dialog with two textboxex (Textbox1 and Textbox2 and a checkbox). I would like two things to happen as I type text in Textbox 1:
- toggle the checkbox
- programatically copy the text from Textbox1 to Textbox2
Toggling the checkbox always works, however programatically copying the same text in Textbox 2 only works if I add a breakpoint in the Textbox_callback function. If I do not add this breakpoint, then Textbox2 will only display the "original text" text each time I change the text in Textbox1.
What am I doing wrong?
function choosedialog
d = dialog('Position',[300 300 250 200],'Name','Serial Number');
Textbox1 = uicontrol('Parent',d,...
'Style','edit',...
'Position',[20 100 210 40],...
'String','original text',...
'KeyPressFcn',@Textbox_callback);
ck1 = uicontrol('Parent',d,...
'Style','checkbox',...
'Position',[20 150 210 40],...
'String','Checkbox');
Textbox2 = uicontrol('Parent',d,...
'Style','edit',...
'Position',[20 40 210 40],...
'String','');
%focus automatically on textbox
uicontrol(Textbox1);
% Wait for d to close before running to completion
uiwait(d);
function Textbox_callback(Textbox1,event)
ck1.Value = ~ck1.Value;
Textbox2.String = Textbox1.String;
end
end
3 个评论
Walter Roberson
2019-9-6
Every time you step through, the dialog loses focus, which is the trigger to update the String property.
Adam Danz
2019-9-9
Thanks, Walter.
I imagine a callback function that could first change the focus to, say, the main figure, then execute a timer that would copy the string from textbox1 to textbox2 after a fraction of second delay, and then change the focus back to the first textbox. That way the focus is changed on each key stroke and the delayed timer, if timed properly, could do the copy-paste work after the trigger, while the focus is returned to the main textbox.
采纳的回答
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Migrate GUIDE Apps 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!