How to update editbox uicontrol string during keypressfcn?

14 visualizaciones (últimos 30 días)
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

Respuesta aceptada

Grzegorz Knor
Grzegorz Knor el 13 de En. de 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

Más respuestas (2)

ALLAEDINE AH
ALLAEDINE AH el 10 de Abr. de 2012
Hi guys! What if i wanted to enter only numbers, ie: 39 OR 1.2 ?

Mitchell
Mitchell el 23 de Mayo de 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.

Categorías

Más información sobre String Parsing en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by