How to update editbox uicontrol string during keypressfcn?

7 vues (au cours des 30 derniers jours)
Eero Kuusi
Eero Kuusi le 13 Jan 2012
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

Réponse acceptée

Grzegorz Knor
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
  1 commentaire
Eero Kuusi
Eero Kuusi le 18 Jan 2012
Thank you, this workaround worked perfectly!

Connectez-vous pour commenter.

Plus de réponses (2)

ALLAEDINE AH
ALLAEDINE AH le 10 Avr 2012
Hi guys! What if i wanted to enter only numbers, ie: 39 OR 1.2 ?

Mitchell
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.

Community Treasure Hunt

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

Start Hunting!

Translated by