2012-02-02 6 views
1

В ExtJS 4.0.2a я мог изменить изображение курсора по сетке с помощью:Как изменить изображение курсора в ExtJS 4.1

body.setStyle('cursor','move'); 

Это не похоже на работу в 4.0.7 или 4.1. Я не получаю никакой ошибки css, но это дает неестественное отставание в точке, где должно произойти изменение. Может быть, это переопределяется?

UPDATE:

Я пытаюсь запустить это из сетки onitemmousedown события. Я обнаружил, что GridView получает класс «.x-unselectable», чтобы сделать текст сетки невыбранным (что я хочу). Однако в ExtJS 4.0.7 и 4.1 этот класс .x-unselectable имеет параметр cursor: default, который наследуется всеми строками и ячейками сетки и который переопределяет любые другие атрибуты стиля, которые я применяю к курсору. Это не было в 4.0.2a.

Если я нажимаю стиль указателя сетки, используя !important, курсор меняется только тогда, когда я получаю его точно поверх 1px строки между двумя строками, потому что строка все еще наследует настройку курсора. Я полагаю, что я мог бы переопределить стиль курсора для всех строк , а затем все ячейки, используя этот же метод, но кажется, что должен быть какой-то более чистый метод extjs.

ответ

2

Есть ли какая-то особая причина не просто использовать CSS?

<style> 
.MyTarget{ 
    cursor: pointer; 
} 

/*override the panel header cursor */ 
.x-form-field { 
    cursor: pointer; 
} 
</style> 
<div class="MyTarget">The cursor will be a pointer over the body here</div> 

// Some Ext to create a panel - the panel header will have the new cursor declared in the CSS 
+0

Мне нужно было это изменить непосредственно на мыши. Я попытался использовать обычный css с помощью метода extjs body.addCls ('class-name ...'); И хотя я вижу класс, примененный в firebug, курсор не меняется ... – Geronimo

+0

Как и по предложению Эрика, вы также попытались добавить! Важно для вашей декларации? 'Ext.getBody(). SetStyle (« cursor »,« move! Important »);' Чтобы сохранить сетку от рестайлинга курсора? – phatskat

+0

Мне удалось переопределить его в gridview с помощью '! Important ', к сожалению, каждая строка сетки наследует класс' .x-unselectable', который устанавливает 'cursor: default', он делает это, чтобы сделать текст невыбранным (что мне нужно), но это означает, что курсор меняется только тогда, когда я получаю его точно в верхней части строки 1px между двумя строками ... Предположим, я мог бы попробовать переопределить стиль курсора для всех строк, а затем все ячейки, используя этот же метод, но кажется, что должно быть что-то более чистое как часть extjs. – Geronimo

1

Я предполагаю, body обращается непосредственно к элементу DOM для тела. Вы пробовали

Ext.getBody().setStyle("cursor", "move"); 

Это будет обернуть тело как Ext.Element и дать вам все хорошие методы. Если это не сработает, я предлагаю открыть отладчик и войти в функцию setStyle, чтобы увидеть, что-нибудь странное, или поставить часы на body.style.cursor.

+0

У меня тело определено как Ext.getBody() не элемент DOM. Часы показывают, что курсор _is_ изменился на «move». Он должен быть переопределен в сетке или где-то ниже ее в версиях, выходящих за пределы 4.0.2. Возможно, есть способ отключить переопределение. – Geronimo

Смежные вопросы