How to update editbox uicontrol string during keypressfcn?
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi,
I have an editbox uicontrol that has a KeyPressFunction that would need to read what has been typed into the uicontrol. How can I make the KeyPressFunction to read the typed text? If I use
get(gcbo,'String')
it returns the string from before pressing any keys / since the last Callback event (in other words whatever the string was after I last pressed enter or clicked away from the editbox).
I want for the editbox to read the string when I press the downarrow key and act according to what has been written.
Thanks in advance, EK
0 commentaires
Réponse acceptée
Grzegorz Knor
le 13 Jan 2012
Try this code as a workaround:
function test
close all
uicontrol('Style','Edit','String','matlab','KeyPressFcn',@clbck)
function clbck(src,evnt)
if isequal(evnt.Key,'downarrow')
import java.awt.Robot;
import java.awt.event.KeyEvent;
robot=Robot;
robot.keyPress(KeyEvent.VK_ENTER);
pause(0.01)
robot.keyRelease(KeyEvent.VK_ENTER);
disp(get(src,'String'));
end
Plus de réponses (2)
ALLAEDINE AH
le 10 Avr 2012
Hi guys! What if i wanted to enter only numbers, ie: 39 OR 1.2 ?
0 commentaires
Mitchell
le 23 Mai 2012
This is straightforward, on the callback of the edit control do:
number = str2double(get(@myControl,'String'));
if(isnan(number))
set(@myControl,'String',defaultValue);
end
Also, if the str2double command was successful you could update defaultValue to number so that every time a non-numeric is entered the value will be replaced by the last numeric value.
0 commentaires
Voir également
Catégories
En savoir plus sur String Parsing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!