Author Topic: Библиотеки пользовательских подпрограмм  (Read 41011 times)

0 Members and 3 Guests are viewing this topic.

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Re: Библиотеки пользовательских подпрограмм
« Reply #15 on: September 21, 2016, 12:21:38 AM »
Так ты на Рейгана трудишься здесь? ;D

Рейганы, Ротшильды, всё одно ..) А ваще прикольный факт, что самих англичан меньше двух процентов среди всех англоговорящих.
А в Premier League англичан ещё меньше, сдулись они по всем позициям, как старый футбольный мяч.  :'(

Cleoss

  • Активный участник
  • ***
  • Posts: 260
  • Автоматизируй это!
    • View Profile
По ходу, с привязкой нажатие Энтера не жмётся? Наверно, надо помуздыкаться с постмессиджем, найти там нужный код для передачи.

VGK

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Не могу разобраться с окошками, кнопками и иконками
Вы пишете
Параметр flag может быть комбинацией следующих значений:

десятичное значение      Отображаемые кнопки                     0x
                 0              Кнопка OK                               0x0
 ....
                 4              Кнопки Да и Нет                         0x4
                5              Кнопки Повтор и Отмена                  0x5
         6              Кнопки Отмена, Повторить, Продолжить    0x6
   
десятичное значение      Отображаемая иконка                     0x
     0              (Нет) 
...
а при флаге 4160 окно с кнопкой ОК и иконкой ИНФО
как это скомбинировано ?
не могу сделать окно с иконкой ИНФО и тремя кнопками
Отмена, Повторить, Продолжить

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Отмена, Повторить, Продолжить  - десятичное значение 6
иконка информация                                                            64

Итоговый флаг 6+64 = 70

[spoiler]
Code: [Select]
    // десятичное значение      Отображаемые кнопки                     0x
    //           0              Кнопка OK                               0x0
    //           1              Кнопки OK и Отмена                      0x1
    //           2              Кнопки Прервать, Повтор и Пропустить    0x2
    //           3              Кнопки Да, Нет и Отмена                 0x3
    //           4              Кнопки Да и Нет                         0x4
    //           5              Кнопки Повтор и Отмена                  0x5
    //           6              Кнопки Отмена, Повторить, Продолжить    0x6
   
    // десятичное значение      Отображаемая иконка                     0x
    //           0              (Нет)                                   0x0
    //          16              Иконка "стоп"                           0x10
    //          32              Иконка "знак вопроса"                   0x20
    //          48              Иконка "предупреждение"                 0x30
    //          64              Иконка "информация", с 'i' в кружке     0x40
   
    // десятичное значение      Выделенная кнопка по умолчанию          0x
    //           0              Первая кнопка                           0x0
    //         256              Вторая кнопка                           0x100
    //         512              Третья кнопка                           0x200
   
    // десятичное значение      Модальность                             0x
    //           0              Приложение (Application)                0x0
    //        4096              Системная, поверх всех окон             0x1000
    //        8192              Блокирует родительское окно             0x2000
   
    // десятичное значение      Другое                                  0x
    //      262144          имеет атрибут "поверх всех окон"            0x40000
    //      524288     Заголовок и текст выравниваются по правому краю  0x80000
[/spoiler]

Если нужно ещё добавить параметров, например,    "Системная, поверх всех окон"  то  ещё  +4096


VGK

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Спасибо, отлично
а фразу
Параметр flag может быть комбинацией следующих значений
лучше заменить на типа такую
Если необходима комбинация параметров то флаг должен быть равен сумме десятичных значений ... :)

« Last Edit: June 01, 2017, 07:49:47 PM by VGK »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Ммм. Эта формулировка не моя, она полностью выдрана из справки.
И на самом деле она правильная, ведь параметр flag это флаговая/битовая переменная

Младшие 3 бита выделены под "Отображаемые кнопки "
5,6 и 7 биты  - "Отображаемая иконка "
9,10  - "Выделенная кнопка по умолчанию"
и т.д.
Переменная в итоге это комбинация включенных битов

В 16-ричной системе ещё наглядней, под неё и сделано. Каждый разряд свой подраздел параметров


VGK

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Есть необходимость выбора элементов из большого списка.
Написал сценарий. Он выводит большой список элеменов с чекбоксами на экран по 10 штук, до последнего, записывает состоние чекбоксов, создает список выбранных.
1. Может я перемудрил и можно сценарий упростить ?
2. Некорректно работает режим жирного шрифта ($w_flag = 110), где ошибка ?
Code: (clickermann) [Select]
#include "Window.cms"
//==============================================================================
//LOGCLEAR
$input_file = "Buildings.txt"           // Исходные данные - большой список
$output_file = "Buildings_selected.txt" // Результат - список выбранных
TFREADARR($input_file, $items_all)
TFREADARR("item_flags_all.txt", $itemsflags_all)
TFCLEAR ("item_flags_all.txt", 1)
IF(ARRSIZE($itemsflags_all) < ARRSIZE($items_all))
   FOR($i = ARRSIZE($itemsflags_all) , $i < ARRSIZE($items_all))
      ARRPUSH($itemsflags_all, 0)
   END_CYC
END_IF
//##############################################################################
//Вывод текста на экран по 10 строк с чекбоксами
FOR($a, $a < INT ((ARRSIZE($items_all) / 10)+1))
   $n = $check * 10
   FOR($i = $n, (($i < $n+10) AND ($i < ARRSIZE($items_all)))
      ARRPUSH($items, $items_all[$i])
      ARRPUSH($itemsflags, $itemsflags_all[$i])
   END_CYC
   Window_checkbox_flags(110, "Выберите пункты :", 35)
//   Window_checkbox_flags(110, "Выберите пункты :", 35) //жирным шрифтом текст не помещается ?
   STRSEPARATE ($flags, ",", $item_flags)
   STRSEPARATE($text, "|", $selecteditems)
   $flags = $item_flags[0]
   FOR($i=0, $i < ARRSIZE($item_flags))
      $flags = STRCONCAT($flags, ",", $item_flags[$i])
      IF($item_flags[$i] = 1)                       // Запись выбранных в массив
         ARRPUSH($Selected, $selecteditems[$i])
      END_IF
   END_CYC
//==============================================================================
//  Подговка ответа
   IF(ARRSIZE($Selected) > 0)
      $otv = $Selected[0]
      FOR($i=1, $i < ARRSIZE($Selected))
         $otv = STRCONCAT($otv, "\n", $Selected[$i])
      END_CYC
      $text = STRCONCAT("Выбраны пункты:\n\n", $otv)
      IF($return = -1)
         $hint = "Состояние чекбоксов не изменено"
         HINTPOPUP($hint, "ВНИМАНИЕ")
      END_IF
   ELSE
      $text = "Вы ничего не выбрали"
   END_IF
//==============================================================================
   TFWRITEARR ($output_file, $Selected) // Запись списка выбранных
   UNDEFINE($items)
   UNDEFINE($itemsflags)
   UNDEFINE($Selected)
   INC($check)  // следующие 10 строк
END_CYC
//##############################################################################
TFWRITEARR ("item_flags_all.txt", $item_flags) // запись состояния чекбоксов
//==============================================================================
//  Вывод списка выбранных на экран
Window_2(64, "", 10)
HALT

VGK

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Как раз я и ничего не прятал
Вопрос задан в теме, где Window.cms от Vint обсуждается
И ответить на вопрос, очевидно, сможет только автор темы.
« Last Edit: December 03, 2017, 10:28:34 AM by VGK »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Вроде бы нормально работает. Что там упрощать.
В 16 строке только добавить значение по умолчантию
FOR($a=0, ...


С флагом 110 у меня работает (см. скрины). Здесь может влиять версия винды, а главное установленная тема, шрифты в ней и т.п.
Что происходит, как проявляется некорректная работа?



VGK

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Спасибо
По поводу:
2. Некорректно работает режим жирного шрифта ($w_flag = 110), где ошибка ?
Извините, не правильно сформулировал, правильно:
Работает отлично !
Единственное - не полностью отображаются в окне длинные пункты при выборе жирного шрифта ($w_flag = 110)
Кстати у Вас на картинках тоже так
Еще раз спасибо, и обычный шрифт подходит, не будем тратить больше на это время.

kamal

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Ух подыму старую тему.
Vint спасибо пользуюсь.
Подскажи пожалуйста можно ли как нибудь указать позицию окна на экране, чтоб он не по середине открывался а к примеру справа внизу?

Сексуальный украинец

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Подскажи пожалуйста можно ли как нибудь указать позицию окна на экране, чтоб он не по середине открывался а к примеру справа внизу?
А навіщо це потрібно?
Є стандартні команди програми, щодо зміщення потрібного вікна в потрібний кут, скористайтеся ними.
Ще не вмерла Україна ...

kamal

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Если ты про это - WNDPOS (hwnd, x, y) , то да, как вариант, но не оч удобно.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Подскажи пожалуйста можно ли как нибудь указать позицию окна на экране, чтоб он не по середине открывался а к примеру справа внизу?
Могу только переделать с заданием координат в ini.


kamal

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Подскажи пожалуйста можно ли как нибудь указать позицию окна на экране, чтоб он не по середине открывался а к примеру справа внизу?
Могу только переделать с заданием координат в ini.

Я был бы очень и очень признателен!
« Last Edit: April 09, 2020, 11:21:28 PM by kamal »