1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Измерение массива, мультистрока edittext.

Тема в разделе "MAXScript", создана пользователем Alexander Ledenev, 17 янв 2015.

Модераторы: Savin Denis
  1. Alexander Ledenev

    Alexander Ledenev Активный участник

    С нами с:
    12.06.2009
    Сообщения:
    14
    Симпатии:
    4
    Баллы:
    7
    Здравствуйте, меня волнуют три вопроса:
    1) как узнать количество измерений в массиве (одномерный, двумерный и т.д.)?
    2) как вывести две строки в EditText?
    3) (См. прикрепленное изображение) Есть таблица, построенная с помощью EditText, 8 Х 8 ячеек, у каждого элемента задано имя по принципу: var1, var2, var3, var4. Как заполнить каждый элемент таблицы единицами, не записывая присвоение к каждому элементу вручную?

    Пример:
    TestRollout.var1.text = 1
    TestRollout.var2.text = 1
    TestRollout.var3.text = 1
    ...
    TestRollout.var64.text = 1


    Есть ли менее утомительное решение задачи, чем пример выше? Нельзя ли это сделать с помощью цикла?
     

    Вложения:

  2. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Напишите сами такую функцию, которая рекурсивно проверяет класс элементов массива.
    Код:
    rollout test "Test"
    (
    edittext t height:(18*2)
    on test open do t.text="Line1\nLine2"
    );createdialog test
    Код:
    rollout test "Test"
    (
    edittext var1
    edittext var2
    edittext var3
    on test open do
    for i=1 to 3 do execute ("test.var"+i as string+".text=\"1\"")
    );createdialog test
     
    Alexander Ledenev нравится это.
  3. Alexander Ledenev

    Alexander Ledenev Активный участник

    С нами с:
    12.06.2009
    Сообщения:
    14
    Симпатии:
    4
    Баллы:
    7
    Большое спасибо! Все получилось. Единственное, не понял момент в третьем ответе:
    Код:
    .text=\"1\""
    Пытался вместо единицы вставить переменную и выдает ошибку конвертации типа переменной (integer -> string)
    Код:
    execute ("test.var"+i as string+".text=" + var as string)
     
  4. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Вариант 1:
    Код:
    execute ("test.var"+i as string+".text=\"" + var as string +"\"")
    Вариант 2:
    Код:
    execute ("test.var"+i as string+".text=" + var as string+" as string")
     
    Alexander Ledenev нравится это.
  5. Владислав Бодюл

    Владислав Бодюл Активный участник

    С нами с:
    08.03.2011
    Сообщения:
    44
    Симпатии:
    2
    Баллы:
    12
    Как вариант, можно ещё так:

    Код:
    rollout unnamedRollout "Untitled" width:56 height:200
    (
        editText var1 "" pos:[8,8] width:40 height:16
        editText var2 "" pos:[8,32] width:40 height:16
        editText var3 "" pos:[8,56] width:40 height:16
        editText var4 "" pos:[8,80] width:40 height:16
        editText var5 "" pos:[8,104] width:40 height:16
        editText var6 "" pos:[8,128] width:40 height:16
        editText var7 "" pos:[8,152] width:40 height:16
        editText var8 "" pos:[8,176] width:40 height:16
      
        on unnamedRollout open do
        (
            for i in unnamedRollout.controls where (substring i.name 1 3) == "var" do
            (
                i.text = "1"
            )
        )
    )
    CreateDialog unnamedRollout
    
     
    Alexander Ledenev нравится это.
  6. Alexander Ledenev

    Alexander Ledenev Активный участник

    С нами с:
    12.06.2009
    Сообщения:
    14
    Симпатии:
    4
    Баллы:
    7
    igorznag и Владислав, большое спасибо за помощь!
     
Модераторы: Savin Denis

Поделиться этой страницей