2015-01-10 1 views
1

Я работаю над текстовым приложением, которое включает в себя кнопку для увеличения размера текста выделенного текста в поле.Создание обработчика для увеличения размера шрифта

Ниже приводится обработчик, который я использую, он отлично работает, когда весь выбранный текст в настоящее время имеет тот же размер. Если часть текста другого размера, обработчик возвращает эту ошибку:

execution error at line 42 (Operators +: error in left operand), char 68

Обработчик:

on txtSizeUp 
    set the textSize of selectedText to the textSize of selectedText + 2 
end txtSizeUp 

Что мне нужно сделать, чтобы изменить размер независимо от разницы?

ответ

1

Измените свой обработчик, чтобы использовать selectedChunk вместо выбранногоText.

on txtSizeUp 
    set the textSize of the selectedChunk to the textSize of the selectedChunk + 1 
end txtSizeUp 

И для хорошей мерой, конечно:

on txtSizeDown 
    set the textSize of the selectedChunk to the textSize of the selectedChunk - 1 
end txtSizeDown 

Edit: Обработчики выше работают только если TextSize всего selectedChunk одно и то же. Вы хотите увеличить размер текста, даже если в нем есть разные размеры. (Я пропустил эту деталь в вашем исходном вопросе.)

Проблема в том, что функция the selectedChunk возвращает строку «mixed», когда в пределах выбора имеются разные размеры. Вот почему вы получили ошибку; Оператор set пытался добавить mixed + 1, несоответствие типа данных. Вот обработчик, который должен делать то, что вы хотите.

on txtSizeUp 
    put the effective textSize of the selectedChunk into tSize 
    if tSize is a number then 
    set the textSize of the selectedChunk to \ 
     the effective textSize of the selectedChunk + 1 
    else 
    lock screen 
    put the long name of the selectedField into tFld 
    put word 2 of the selectedChunk into tStartChar 
    put word 4 of the selectedChunk into tEndChar 
    repeat with x = tStartChar to tEndChar 
     set the textSize of char x of tFld to \ 
      the effective textSize of char x of tFld +1 
    end repeat 
    unlock screen 
    end if 
end txtSizeUp 

Будут и другие подходы, которые будут работать, но все они будут в какой-то мере охватывать выделенный текст.

+0

к сожалению не работал – MadPink

+0

Я проверил оба сценария успешно здесь. Можете ли вы рассказать нам больше об отказе? Появилось ли сообщение об ошибке, или вообще ничего не произошло? Вот одна вещь, чтобы проверить, находитесь ли вы в Windows: в инспекторе свойств кнопки, где вы выполняете скрипт, убедитесь, что флажок Focus With Keyboard (свойство traversalOn) НЕ проверен. Если он установлен, нажатие на кнопку приведет к удалению фокуса из поля, что сделает выделенную ячейку пустой и приведет к сбою сценария. – Devin

+0

Я получаю ту же ошибку, о которой я упоминал первоначально. Опять же, это отлично работает, когда выделенный текст имеет тот же размер. Если я выберу несколько строк, которые отличаются по размеру, например. строка 1 - 10 баллов, строка 2 - 12 баллов, затем я получаю ошибку в ошибке левого операнда. – MadPink

0

При установке TEXTSIZE, LC нуждается в выражении куска, как line 3 of fld 1 или word 2 to 4 of fld "yourField"

Фразы the selectedText решает сам текст выбора. Так что, если у вас была «моя собака блох» в поле, с «собакой» выбран, ваш код с просьбой:

set the textSize of "dog" to someValue 

Это не допускается. Двигатель не знал бы, что делать. Вам нужно изменить свой скрипт и свою методологию, чтобы сделать кусок, а не текстовые ссылки.

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

  • Нет связанных вопросов^_^