¿Es posible crear un objeto en una GUI cuya posición pueda definir con la posición del cursor (arrastrar al hacer clic) configurando su propiedad 'Posición' en la posición del cursor? ¿Qué función debo usar?Arrastrar y soltar en la GUI
Respuesta
Puede usar la función SELECTMOVERESIZE para activar el movimiento y el cambio de tamaño para su objeto GUI. Luego puede hacer clic y arrastrar el objeto con el mouse. Es tan simple como esto:
set(hObject,'ButtonDownFcn','selectmoveresize');
Lo que no es tan simple es si el objeto GUI es una uicontrol object, en cuyo caso tendrá que desactivar el objeto estableciendo el 'Enable'
property a 'off'
o 'inactive'
con el fin de tener la 'ButtonDownFcn'
función ejecutar en lugar de la función 'Callback'
. Esto es cierto incluso si no ha definido una devolución de llamada para el objeto.
Probablemente también necesite agregar un medio a su GUI para activar y desactivar el movimiento y el cambio de tamaño del objeto, tal vez un botón adicional o un elemento de menú que puede seleccionar. Para mostrar cómo puede hacer esto con un botón, aquí hay un ejemplo simple que crea una figura con un cuadro de texto editable y un botón que activa y desactiva la capacidad de mover y cambiar el tamaño del cuadro de texto editable:
function GUI_example
hFigure = figure('Position',[100 100 200 200],... %# Create a figure
'MenuBar','none',...
'ToolBar','none');
hEdit = uicontrol('Style','edit',... %# Create a multi-line
'Parent',hFigure,... %# editable text box
'Position',[10 30 180 160],...
'Max',2,...
'String',{'(type here)'});
hButton = uicontrol('Style','pushbutton',... %# Create a push button
'Parent',hFigure,...
'Position',[50 5 100 20],...
'String','Turn moving on',...
'Callback',@button_callback);
function button_callback(hSource,eventData) %# Nested button callback
if strcmp(get(hSource,'String'),'Turn moving on')
set(hSource,'String','Turn moving off'); %# Change button text
set(hEdit,'Enable','inactive',... %# Disable the callback
'ButtonDownFcn','selectmoveresize',... %# Turn on moving, etc.
'Selected','on'); %# Display as selected
else
set(hSource,'String','Turn moving on'); %# Change button text
set(hEdit,'Enable','on',... %# Re-enable the callback
'ButtonDownFcn','',... %# Turn off moving, etc.
'Selected','off'); %# Display as unselected
end
end
end
Nota: aunque la documentación enumera el 'Selected'
property como de solo lectura, pude modificarlo sin problemas. Debe ser un error tipográfico en la documentación.
Puede crear un eje invisible en su GUI y trazar los objetos que desee allí. Luego, puede usar DRAGGABLE desde File Exchange para permitir el arrastre de objetos por todos lados.
- 1. Swing arrastrar y soltar
- 2. ItemsControl Arrastrar y soltar
- 3. ¿Arrastrar y soltar polyfill?
- 4. ipad arrastrar y soltar
- 5. Arrastrar y soltar en Treeview
- 6. Arrastrar y soltar en MobileSafari?
- 7. Arrastrar y soltar con columpio
- 8. Arrastrar y soltar usando SendMessage
- 9. UICollectionView efectiva arrastrar y soltar
- 10. Trello arrastrar y soltar efecto
- 11. Arrastrar y soltar con Ember.js
- 12. jstree mover, arrastrar y soltar
- 13. desactivar texto arrastrar y soltar
- 14. Javascript Arrastrar y soltar cuadrícula
- 15. arrastrar y soltar objetos personalizados
- 16. arrastrar y soltar controles winform
- 17. Implementar la función de arrastrar y soltar
- 18. Arrastrar y soltar desde Thunderbird
- 19. HTML5 Arrastrar y soltar nodos
- 20. Arrastrar y soltar en MVVM con ScatterView
- 21. arrastrar y soltar en winforms o wpf
- 22. HTML Arrastrar y soltar en dispositivos móviles
- 23. Error en Delphi VCL Arrastrar y soltar?
- 24. Arrastrar y soltar + dibujo personalizado en Android
- 25. Arrastrar y soltar archivos en WPF
- 26. Arrastrar y soltar formas en el lienzo
- 27. Archivo Arrastrar y soltar en Firefox (v10)
- 28. Implementar arrastrar y soltar en Gingerbread
- 29. Usando arrastrar y soltar en sitios web?
- 30. Arrastrar y soltar no funciona en Mac
¡Gracias por la respuesta rápida! ¿Podría decirme de dónde proviene la función para obtener sus argumentos de entrada? – straits
@ Adam: ¿Qué función? SELECTMOVERESIZE no toma ningún argumento como entrada. – gnovice
La función button_callback toma en hSource y eventData. – straits