Ru-Board.club
← Вернуться в раздел «Программы»

» Autoplay Media Studio

Автор: servint
Дата сообщения: 13.10.2007 20:03
tavria2

Цитата:
Вызов события On Audio не может никак повлиять на активность окна, это что-то в самом коде. Выкладывай код или проект, для разбора полетов.


Сейчас скажу что в коде. Там чтение и запись тектовиков, чтение и запись глобальных переменных, смена лэйбла, перезагрузка страницы. Может что-то из этого убирает фокус с окон?
Автор: tavria2
Дата сообщения: 13.10.2007 20:32
servint

Цитата:
Может что-то из этого убирает фокус с окон?

Ни одна из вышеперечисленных операций у меня не вызвала потерю фокуса... Выложи проект, так будет проще найти причину.
Автор: servint
Дата сообщения: 13.10.2007 20:38
tavria2

А.. ещё в коде стоит обновление листбокса и выделение в нём некой строчки, наверно это и убирает фокус... Мне нужно сделать чтобы при открытии программы из трея перезагружалась страница, как это можно реализовать?
И как можно вернуть фокус потерявшему активность окну?
Автор: tavria2
Дата сообщения: 14.10.2007 00:17
servint

Цитата:
А.. ещё в коде стоит обновление листбокса и выделение в нём некой строчки, наверно это и убирает фокус...

Нет не убирает и давай не будем гадать на кофейной гуще, если не хочешь светить код проекта, тогда ищи сам.

Цитата:
Мне нужно сделать чтобы при открытии программы из трея перезагружалась страница, как это можно реализовать?
И как можно вернуть фокус потерявшему активность окну?

Global Functions
Код: -- Ф-ция возвращает: true - окно отображено или false - окно скрыто
function IsWindowShow()
local cResult = DLL.CallFunction(_SystemFolder.."\\user32.dll", "IsWindowVisible", Application.GetWndHandle(), DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL)
if (cResult ~= "0") then
return true
else    
return false
end
end

-- Ф-ция возвращает handle окна имеющего фокус
function GetFocus()
local cResult = DLL.CallFunction(_SystemFolder.."\\user32.dll", "GetFocus","", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
return cResult
end

-- Ф-ция устанавливает фокус в окно с указанным handle
function SetFocus(hWnd)
local cResult = DLL.CallFunction(_SystemFolder.."\\user32.dll", "SetFocus", hWnd, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
return cResult
end
Автор: Drusus
Дата сообщения: 14.10.2007 09:22
tavria2
По поводу прыгающего списка листбокса в моём проекте (если была сделана вертикальная прокрутка и выбран какой-то элемент в середине окна листбокса, то список прыгает вниз и выбранный элемент становится нижним).
Это, похоже, тоже связано с передачей фокуса странице, потому что в проектах, где операций с фокусом нет, листбокс не прыгает. Можно ли как-то список зафиксировать?
Автор: servint
Дата сообщения: 14.10.2007 15:50
tavria2

Спасибо!!

Есть ещё проблема:

Есть папка, в которой находятся 20 файлов с разными расширениями (расширения повторяются). Нужно подсчитать сколько каких расширений в папке, т.е вывести число текстовиков, жпегов и тд., и их размер (сколько весят все жпеги и т.д). Проблема в том, что файлы меняются и расширения тоже. Т.е запрограммировать расширения заранее невозможно.
А программировать все известные расширения можно с ума сойти! Поэтому может есть какой-то другой вариант? Буду очень признателен!
Автор: tavria2
Дата сообщения: 14.10.2007 23:02
Drusus

Цитата:
Можно ли как-то список зафиксировать?

Я пока затрудняюсь ответить на этот вопрос, нужно время для детального анализа.

servint
Код: tExt = {}; -- таблица расширений
tCount = {}; -- таблица кол-ва
tSize = {}; -- таблица размеров

cPath = "C:\\MyFolder\\"; -- путь к файлам
tFiles = File.Find(cPath, "*.*", false, false, nil, nil); -- таблица файлов

if (tFiles) then -- если есть файлы
local nIdx = 1; -- индекс (по умолчанию)
for n, cFile in tFiles do -- в цикле перебираем имена файлов
-- если расширение текущего имени файла не найдено в таблице расширений tExt
if (String.Find(Table.Concat(tExt, ",", 1, TABLE_ALL), String.SplitPath(cFile).Extension, 1, false) == -1) then
tExt[nIdx] = String.SplitPath(cFile).Extension; -- добавляем расширение в таблицу расширений tExt
nIdx = nIdx + 1; -- наращиваем индекс
end
end
end

if (Table.Count(tExt) ~= 0) then -- если таблица расширений не пустая
for n, cExt in tExt do -- в цикле перебираем расширения файлов
local nSize = 0; -- размер (по умолчанию)
local tMaskFiles = File.Find(cPath, "*"..cExt, false, false, nil, nil); -- таблица имен файлов соответствующих маске
tCount[n] = Table.Count(tMaskFiles); -- добавляем кол-во файлов соответствующих маске в таблицу кол-ства
if (Table.Count(tCount) ~= 0) then -- таблица кол-ства не пустая
for i, cFile in tMaskFiles do -- в цикле перебираем имена файлов соответствующих маске
nSize = nSize + File.GetSize(cFile); -- накапливаем размер файлов соответствующих маске
end
end
tSize[n] = nSize; -- добавляем накопительный размер в таблицу размеров
end
end

local cInfo ="ТИП\t\tКОЛ-ВО\t\tРАЗМЕР\r\n"; -- инфо (шапка)
for n=1, Table.Count(tExt) do
cInfo = cInfo..tExt[n].."\t\t"..tCount[n].."\t\t"..tSize[n].."\r\n"; -- формируем строку инфо
end    
Dialog.Message("Инфо", cInfo); -- вывод инфо на экран
Автор: tavria2
Дата сообщения: 15.10.2007 10:01
Drusus

Цитата:
если была сделана вертикальная прокрутка и выбран какой-то элемент в середине окна листбокса, то список прыгает вниз и выбранный элемент становится нижним

Это нормальное поведение для ListBox, при программном выделении элемента он делает прокрутку, чтобы этот элемент был в зоне видимости. То что он делает прокрутку даже, если выделенный элемент уже в зоне видимости - это его недостаток.
Автор: Drusus
Дата сообщения: 15.10.2007 20:01
tavria2
Похоже, это даже не листбокс виноват, а системный то ли глюк, то ли фича... Внимательно проверил, всё же во всех проектах с листбоксом это присутствует, перескакивает в момент перехода к следующему треку. Поначалу не заметил.
И оказывается, даже в TotalCommander то же самое: зайти в большую папку (например, C:\Windows), прокрутить за середину списка, зайти в любую подпапку и вернуться - эта подпапка будет ниже, чем была.
Люблю я Майкрософт странною любовью, не победит её рассудок мой...
Автор: Andrey_Wlodimirovich
Дата сообщения: 16.10.2007 00:36
Ребз вот у меня такая штука: хочу чтоб при наличии ключа в реестре делалось то и то, а условие не могу наисать т.е. есть у меня в реестре:

Код: Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Some\Programme\1.0]
"LE"="yes"

Автор: GOOSE
Дата сообщения: 16.10.2007 08:55
To All
Новая статья в блоге о новой версии. В ней будет поддержка форматированного текста в объекте Параграф!
Уже по-русски.
Автор: Kindly
Дата сообщения: 16.10.2007 17:05

Цитата:
поддержка форматированного текста в объекте Параграф!

круто, разработчики, наверное, так компенсировали поддержку подсветки синтаксиса.
Автор: tavria2
Дата сообщения: 16.10.2007 17:53
Andrey_Wlodimirovich
См. справку Registry.GetValueNames, там есть пример.
Автор: GOOSE
Дата сообщения: 16.10.2007 17:58
Kindly
Привет, немного не понял, ты о какой подсветке?
Она же есть вроде бы? Слабенькая, но есть
Автор: Kindly
Дата сообщения: 16.10.2007 18:15
GOOSE, ну это как это? Я tavria2 задавал этот вопрос раньше, там нужно в виде html и еще, гемора много вобщем.

Вообще я хотел что-то: if word == begin then color (blue) и чтобы подсветка была динамической.
Автор: GOOSE
Дата сообщения: 16.10.2007 18:55
Kindly понятно
Я думал ты про подсветку кода при программинге
Автор: firstdock
Дата сообщения: 16.10.2007 19:36
немного запутался

подскажите где найти ошибку или где прочитать подробно об этом


Код: if (result == Button.IsEnabled("Button3")) then
Button.SetEnabled("Button4", false);
Button.SetVisible("Button4", false);
else
Button.SetEnabled("Button4", true);
Button.SetVisible("Button4", true);
end

Автор: GOOSE
Дата сообщения: 17.10.2007 08:35
firstdock
А чего ты хочешь достичь?
Автор: Lexua
Дата сообщения: 17.10.2007 10:59
firstdock
Наверное это хочешь

Цитата:
result = Button.IsEnabled("Button3")
if result then
Button.SetEnabled("Button4", false);
Button.SetVisible("Button4", false);
else
Button.SetEnabled("Button4", true);
Button.SetVisible("Button4", true);
end
Автор: firstdock
Дата сообщения: 17.10.2007 12:41
мне нужно чтобы нажатием на одну кнопку включалась и визуализировалалсь другая, при нажатии ещё раз обратный эффект.
Автор: GOOSE
Дата сообщения: 17.10.2007 15:44
firstdock попробуй так:

Код:
--Вкладка OnClick кнопки 1
bres = Button.IsEnabled("Button2"); --присваиваем булевое значение переменной bres

if bres == true then --если кнопка 2 активна, то
Button.SetEnabled("Button2", false); --делаем ее неактивной
elseif bres == false then --если кнопка 2 неактивна, то
Button.SetEnabled("Button2", true); --делаем ее активной
end
Автор: firstdock
Дата сообщения: 17.10.2007 16:30
спасибо этот код рабочий.
Автор: GOOSE
Дата сообщения: 17.10.2007 16:40
firstdock, рабочий, но избыточный
Вот так тоже работает

Код:
if Button.IsEnabled("Button2") then --Если кнопка 2 активна
Button.SetEnabled("Button2", false); --то делаем ее неактивной
else --Если иначе
Button.SetEnabled("Button2", true); --То делаем ее активной
end
Автор: servint
Дата сообщения: 17.10.2007 17:44
tavria2

Спасибо за пример! Честно говоря, даже как-то стыдно стало, ведь мог же сам докумекать!
И опять у меня вопрос, к счастью для него пример не нужен.

Я знаю, что есть функция перезагрузки компа. А можно ли как-то выключить комп, или погрузить его в спящий режим?
Может быть есть какая-то недокументированная функция?
Автор: tavria2
Дата сообщения: 17.10.2007 19:03
servint
См. здесь.
Автор: Zloy_Gelud
Дата сообщения: 17.10.2007 22:26
2All
А можно при стандартном стиле проекта при клике на кнопку "Закрыть" выполнять другое действие, например перйти на другую страницу..?
Пытался делать так, но не выходит:

Код: function QueryAllowProjectClose()
if (Application.GetCurrentPage() ~= "Page1") then
    nBut = Dialog.Message("Выход", "Вы установили все, что хотели?", MB_YESNO, MB_ICONQUESTION, MB_DEFBUTTON1);
             if (nBut == IDYES) then
        return true;
            else
         return false;
            end
    else
        Page.Jump("Page4");
        return false;
    end
end
Автор: firstdock
Дата сообщения: 17.10.2007 23:25

Код: if Button.IsEnabled("Button2") then --Если кнопка 2 активна
Button.SetEnabled("Button2", false); --то делаем ее неактивной
else --Если иначе
Button.SetEnabled("Button2", true); --То делаем ее активной
end
Автор: tavria2
Дата сообщения: 18.10.2007 00:26
Zloy_Gelud

Цитата:
А можно при стандартном стиле проекта при клике на кнопку "Закрыть" выполнять другое действие, например перйти на другую страницу..?
Пытался делать так, но не выходит:

Да, есть заморочки с QueryAllowProjectClose(), предлагаю следующее: Вместо вызова действия Page.Jump("Page4"); - вызвать таймер с интервалом 100 мсек, а в таймере сделать переход страницы и остановку таймера.
Автор: firstdock
Дата сообщения: 18.10.2007 06:22
ещё вопрос на счёт извлечение диска

Код: drives = Drive.Enumerate();
all_drives = Table.Concat(drives, "\r\n");
error = Application.GetLastError();
if (error ~= 0) then
result = Drive.GetType(drives[x]);
if (result == 5) then -- ищем drive_type == DRIVE_CDROM
Drive.Eject(drives[x]);
end
end
Автор: GOOSE
Дата сообщения: 18.10.2007 13:38
servint
Есть пример с dll-кой DLLPCPower.apz
Смотри у меня в разделе "Примеры для 6 версии"

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Symantec Endpoint Protection - SEP


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.