Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

ширина и высота колонок и строк в ТЗ на форме

ширина и высота колонок и строк в ТЗ на форме
Я
   inkvizitr
 
13.11.18 - 09:29
Возможно ли задать ширину и высоту колонок и строк в ТЗ на форме? тут решился написать для себя обработку сапер, немного бывает свободного времени, не пойму как программно задать размеры колонок и строк, ниже текст кода

&НаКлиенте
Процедура Играть(Команда)
    КолонкиИгровогоПоля = Колонки;
    СтрокиИгровогоПоля = Строки;
    БомбыНаИгровомПоле = КолБомб;
    СгенерироватьИгровоеПоле(КолонкиИгровогоПоля, СтрокиИгровогоПоля, БомбыНаИгровомПоле);
КонецПроцедуры

&НаСервере
Процедура СгенерироватьИгровоеПоле(Колонки, Строки, Бомбы)
    ТЗИгровогоПоля = СформируемИгровоеПолеСБомбами(Колонки, Строки, Бомбы);
     ПоместитьТЗИгровогоПоляВРеквизитФормы(ЭтаФорма, "ИгровоеПоле", ТЗИгровогоПоля);
    
    ЗначениеВРеквизитФормы(ТЗИгровогоПоля, "ИгровоеПоле");
КонецПроцедуры    
    
Функция СформируемИгровоеПолеСБомбами(Колонки, Строки, Бомбы)
    
    ТЗИгровогоПоля = Новый ТаблицаЗначений;
    
    // Создаю колонки игрового поля

    Для ИндексКолонки = 1 По Строки Цикл
        ТЗИгровогоПоля.Колонки.Добавить("К" + ИндексКолонки);
    КонецЦикла;    
    
    // Создаю строки игрового поля

    Для ИндексСтрока = 0 По Строки Цикл
        НоваяСтрока = ТЗИгровогоПоля.Добавить();
        Для ИндексКолонки = 0 ПО Колонки - 1 Цикл
            НоваяСтрока.Установить(ИндексКолонки, 0);
        КонецЦикла;    
    КонецЦикла;

    // Подключаю генератор

    ГенСлучЧисел = Новый ГенераторСлучайныхЧисел;
    КолВоБомб = 10;
    РазмерПоля_Х = Строки;
    РазмерПоля_У = Колонки;
    // Разбрасываю по полю бомбы

    СчГенБомб = 1;    
    Пока СчГенБомб <= КолВоБомб Цикл
        
        // Ищим свободную ячейку и вставляем бомбу

        Пока Истина Цикл        
            БомбаПоХ = ГенСлучЧисел.СлучайноеЧисло(0, РазмерПоля_Х - 1);
            БомбаПоУ = ГенСлучЧисел.СлучайноеЧисло(0, РазмерПоля_У - 1);            
            Если ТЗИгровогоПоля[БомбаПоХ][БомбаПоУ] = 0 Тогда                           
                ТЗИгровогоПоля[БомбаПоХ][БомбаПоУ] = Истина;  
                СчГенБомб = СчГенБомб + 1;
                Прервать;// Бомбу вставили, цель достигнута

            КонецЕсли;             
        КонецЦикла;
    КонецЦикла;
    
    Возврат ТЗИгровогоПоля;
    
КонецФункции    

&НаСервере
Процедура ПоместитьТЗИгровогоПоляВРеквизитФормы(Форма, ИмяРеквизитаФормы, ТаблицаЗначений)
    МассивДобавляемыхРеквизитов = Новый Массив;
    МассивДобавляемыхПолей = Новый Массив;
    Для каждого Колонка Из ТаблицаЗначений.Колонки Цикл
        Колонка.Ширина = 2;
        МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения,ИмяРеквизитаФормы , Колонка.Заголовок));  
        НоваяКолонка = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), Элементы[ИмяРеквизитаФормы]);
        МассивДобавляемыхПолей.Добавить(НоваяКолонка);
    КонецЦикла;
    
    ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);

    Для каждого ПолеФормы Из МассивДобавляемыхПолей Цикл
        ПолеФормы.Заголовок = ПолеФормы.Имя; 
        ПолеФормы.ПутьКДанным = ИмяРеквизитаФормы +"."+ПолеФормы.Имя; 
        ПолеФормы.Вид = ВидПоляФормы.ПолеВвода;
        ПолеФормы.Ширина = 2;
    КонецЦикла; 
КонецПроцедуры
 
 
   inkvizitr
 
1 - 13.11.18 - 09:49
Разобрался, спасибо

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует