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

» Indigo Rose AutoPlay Media Studio

Автор: Zloy_Gelud
Дата сообщения: 26.10.2012 19:30
tavria2 -- чорт. А я то думал нужно оформить стиль отличный от виндового..

Добавлено:
Так, стоп.. А разве к Input не применяется стиль оформления винды без танцев с бубнами?
Автор: KerberX
Дата сообщения: 26.10.2012 19:39
Flat не подходит, показывается какая то жирная чёрная полоса. Некрасиво.
Автор: tavria2
Дата сообщения: 26.10.2012 20:21
Zloy_Gelud

Цитата:
Так, стоп.. А разве к Input не применяется стиль оформления винды без танцев с бубнами?

В стиле Input, да и не только в Input, а так же замечено в стиле Progress присутствует никому не нужный флаг WS_BORDER, который портит всю картину.
ИМХО этот флаг не используют со времен Win95, а разработчики IR кажется умышлено портят стиль, надеясь на то, что пользователи будут просить об изменениях стилей, а это будет способствовать выпуску нового билда AMS (не бесплатного)...

Автор: Zloy_Gelud
Дата сообщения: 26.10.2012 20:26
tavria2

Цитата:
а разработчики IR кажется умышлено портят стиль, надеясь на то, что пользователи будут просить об изменениях стилей, а это будет способствовать выпуску нового билда AMS (не бесплатного)...

Автор: bigbrain
Дата сообщения: 26.10.2012 22:07
Zloy_Gelud, подскажи, пожалуйста, а что за нормальные SQL плагины?
Есть еще плагин SQLite3 Action Plugin бесплатный, но там написано, что это тоже Lua SQL

Автор: KerberX
Дата сообщения: 26.10.2012 22:20
А как тогда у прогресса убрать кромку?
Автор: tavria2
Дата сообщения: 26.10.2012 22:50
KerberX

Цитата:
А как тогда у прогресса убрать кромку?

Global Functions
Код: function SetProgressStyle(sProgressName)
local GWL_STYLE = -16;

local WS_CHILD = 0x40000000;
local WS_VISIBLE = 0x10000000;

local hWnd = Progress.GetProperties(sProgressName).WindowHandle;
local nStyle = WS_CHILD + WS_VISIBLE;
DLL.CallFunction("user32.dll", "SetWindowLongA", hWnd..","..GWL_STYLE..","..nStyle, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);

-- перерисовка Progress
local tSize = Progress.GetSize(sProgressName);
Progress.SetSize(sProgressName, tSize.Width, tSize.Height + 1);
Progress.SetSize(sProgressName, tSize.Width, tSize.Height);
end
Автор: Zloy_Gelud
Дата сообщения: 26.10.2012 23:48
bigbrain

Цитата:
а что за нормальные SQL плагины?

Стандартный SQLite или SQLite3. Все удобней использовать их с нормальной справкой и примерами.
Автор: bigbrain
Дата сообщения: 28.10.2012 00:22
Zloy_Gelud, подскажи, пожалуйста, как решить вопрос с объединением таблиц и копированием данных из одной в другую.
Используется две таблицы:
1) Chem_data
2) Codes_data
Нужно скопировать поле index1_main_j из таблицы 2 в поле index1_main таблицы 1


Код: UPDATE Chem_data SET index1_main = (SELECT Codes_data.index1_main_j, Chem_data.index1_main
FROM Codes_data, Chem_data
WHERE Codes_data.code_prob_j = Chem_data.code_prob);
Автор: bigbrain
Дата сообщения: 28.10.2012 02:26
Нашел решение, может не очень красивое, но рабочее.
Выполнить запрос SELECT, который в скобках.
Вывести его результаты в Grid
Выполнить UPDATE (первая часть запроса), подставляя в цикле значения из Grid путем перебора ячеек каждой строки )))

Только после всего этого мне не понятна разница в:
1) SQLite плагин (для версии SQLite2)
2) SQLite3 плагин (для версии SQLite3)
3) SQLite3 встроенный, который выбирается в меню Project --> Support

В чем между ними принципиальная разница?
Например, в SQLite3 (3) есть Action Autocommit, принимающий значения true и false.
В SQLite (1) такого нет, но чтобы получить такой же результат можно выполнить SQLite.Query(db, "begin;", nil); - стандартная команда SQLite. Это будет аналог Autocommit - false
Преимущество SQLite3 (3) я так понял в том, что там просто менять тип базы данных и написанный код будет работать хоть со SQLite, хоь с MySQL, хоть с Oracle, при соблюдении определенных ограничений.
просто меняй

Код: SQL, err = SQLite3:connect("mydb.db", "", "");
на SQL, err = MySQL:connect("mydb.db", "", ""); и вот уже проект работает на MySQL
Автор: NickTa87
Дата сообщения: 28.10.2012 12:17
Ребята, а есть ли возможность через скрипты выровнять текст по ширине? Потому как сама программа "выравнивания по ширине" не предполагает

Добавлено:
И ещё ребята вопрос можно ли объект "область ввода" ограничить вводом только одной буквы, как это записать в скрипте?
Автор: Zloy_Gelud
Дата сообщения: 28.10.2012 13:27
bigbrain -- к сожалению в SQLite я не очень силен..

NickTa87

Цитата:
есть ли возможность через скрипты выровнять текст по ширине?

Нельзя

Цитата:
И ещё ребята вопрос можно ли объект "область ввода" ограничить вводом только одной буквы, как это записать в скрипте?

В настройках объекта Input mask равен ?
Автор: tavria2
Дата сообщения: 28.10.2012 13:48
NickTa87

Цитата:
Ребята, а есть ли возможность через скрипты выровнять текст по ширине?

Нужно указывать в каком объекте.
В Input - нельзя, а в RichText - можно, назначив свойству Alignment нужное значение.
Автор: ActiveColors
Дата сообщения: 01.11.2012 00:51
Как в ams сделать запоминание действий? Подробнее:
есть параграф, которая по умолчанию видим, запускаю программу, в программе делаю параграф не видимой. Как сделать, чтобы после перезагрузки программы данный параграф, который скрыл в запущенной программе, остался скрытым?
Автор: bigbrain
Дата сообщения: 01.11.2012 09:31
ActiveColors, нужно добавить функцию сохранение настроек.
Все, что нужно запомнить программе нужно записать в настройки.
Это можно сделать двумя путями - сохранить в реестр (более надежно) или в текстовый файл (для портативной версии).
При загрузке программы читаешь настройки и присваиваешь переменным.
А в свойствах нужных объектов, например, параграфа (имеется в виду отдельно взятый объект параграф, расположенный на странице) вместо конкретных значений указываешь соответствующие переменные.
Автор: ActiveColors
Дата сообщения: 01.11.2012 13:15
bigbrain, можете показать на коде?
Автор: Robby
Дата сообщения: 01.11.2012 15:07
ActiveColors
Простейший пример реализации скрытия/показа объекта параграф с сохранением свойства видимости в ini файл: Temp2.apz
Автор: sjdb45
Дата сообщения: 03.11.2012 01:15
Zloy_Gelud
Хотел бы спросить у вас следующее:
Как то годик назад делал установщик программ по вашей конструкции и в даный момент столкнулся с одной проблемой.
Значит стоит так:Page1 - on preload:

Код:
local tDirs = Folder.Find(_SourceFolder.."PROGRAMS", "*", false, nil);
if tDirs then
for i = 1, #tDirs do
ListBox.AddItem("ListBox1", String.Mid(tDirs[i], String.ReverseFind(tDirs[i], "\\", false) + 1, -1), tDirs[i]);
end
end
Автор: Zloy_Gelud
Дата сообщения: 03.11.2012 08:11
sjdb45

Цитата:
однако открывается сама папка с вложенными установщиками

По идее такого не должно быть, если существует параметр setup6 в INI-файле. Т.е.
Цитата:
INIFile.GetValue(sWorkDir.."\\install.ini", "info", "setup6")

не должно быть равно пустой строке "".
Автор: sjdb45
Дата сообщения: 03.11.2012 16:15
Zloy_Gelud
Нет пустых строк.
в папке если нет 6 установщиков то идёт только Setup1 = setup.exe, там где три установщика идёт только setup 1. 2. 3... пустых setup = нету.
Сам в недоумении не зная на что и грешить.

Проблема решилась каким то странным путем, добавлением Paragraph.SetText("Paragraph1", "");
хотя она там абсолютно не нужна
Если под шестой строчкой команды добавить какую нибудь бессмысленную команду то все работает.

Код:
Shell.Execute(sWorkDir.."\\"..INIFile.GetValue(sWorkDir.."\\install.ini", "info", "setup6"), "open", "", "", SW_SHOWNORMAL, true);
Paragraph.SetText("Paragraph1", "");
Page.Redraw();
end
Автор: Zloy_Gelud
Дата сообщения: 03.11.2012 19:09
sjdb45 -- какой-нить русификатор случайно не установлен?
Автор: sjdb45
Дата сообщения: 03.11.2012 19:54
Zloy_Gelud
Да нет, всегда пользуюсь английской версией продукта.

Добавлено:
Zloy_Gelud

Обидно одно, что ini файл не хочет обрабатывать команды на запуск установщика с ключами setup.exe /S ну и с другими ключами. А вообще нельзя ли заставить что-бы AMS обрабатывал команды с ключами из ini файла?
Автор: Zloy_Gelud
Дата сообщения: 03.11.2012 21:19
sjdb45

Цитата:
А вообще нельзя ли заставить что-бы AMS обрабатывал команды с ключами из ini файла?

Покажи как у тебя выглядит значение параметра setup6 из INI-файла.
Автор: sjdb45
Дата сообщения: 03.11.2012 21:53
Setup6 я ставлю если имеется для этого необходимость. если в папке 1 простой установщик то обхожусь только setup1.
вот как выглядят install.ini в рабочих папках с учетом имеющихся установщиков в них.


Код:
[info]
setup1 = run1.exe
setup2 = run2.exe
setup3 = run3.exe
setup4 = run4.exe
setup5 = run5.exe
setup6 = run6.exe
Автор: Zloy_Gelud
Дата сообщения: 03.11.2012 22:23
sjdb45 -- попробуй так:

Код: _getArgs = function (s)
assert(type(s) == 'string')
local tRet = {};
s = String.TrimLeft(s, nil);
local nPos = String.Find(s, ' ');
if (nPos ~= -1) then
return String.Mid(s, 1, (nPos - 1)), String.Mid(s, (nPos + 1), -1);
end
return s;
end

File.RunEx = function (s)
local sFileName, sArgs = _getArgs(s);
if sArgs then
File.Run(sWorkDir.."\\"..sFileName, sArgs, "", SW_SHOWNORMAL, true);
else
File.Run(sWorkDir.."\\"..sFileName, "", "", SW_SHOWNORMAL, true);
end
end
-----------------------------------------------------------------------------
local sRun1 = INIFile.GetValue(sWorkDir.."\\install.ini", "info", "setup1");
if sRun1 ~= '' then
File.RunEx(sRun1);
end
Автор: sjdb45
Дата сообщения: 03.11.2012 23:18
Zloy_Gelud
Ты Волшебник!
всё отлично работает даже не надеялся на такую фичу в AMS.
А возможно что-бы ещё другие секции в ini файле обрабатывались? ну что-бы install.ini брал следующий setup2,3 и т.д.

Вопрос снят, так как работает хоть и с дватцатью. стоит только мозгу включить

Добавлено:
Zloy_Gelud
Вот что-бы было всё в шоколаде,
мог бы ты подсказать где копать на счет подсчёта выбраных приложений из листбокса..
Скажем так, в листбоксе выбираем приложения и в Label отмечалось количество выбранного.
К примеру чтобы выглядело так

if ListBox.IsItemSelected("ListBox1", 1) then
Label.SetText("Label1","1")
end

но это конечно совсем не то что нужно.
Хотел бы что-бы был настоящий счет всего выбранного.
Автор: Zloy_Gelud
Дата сообщения: 04.11.2012 09:57
sjdb45

Цитата:
в листбоксе выбираем приложения и в Label отмечалось количество выбранного.


Код: local tChecked = ListBox.GetChecked("ListBox1", BST_CHECKED);
if tChecked then
Label.SetText("Label1", "Будет установлено ".. #tChecked.. " программ");
else
Label.SetText("Label1", "Вы ничего не выбрали");
end
Автор: ActiveColors
Дата сообщения: 04.11.2012 12:31
Robby
То что нужно. Спасибо)
Автор: sjdb45
Дата сообщения: 04.11.2012 13:51
Zloy_Gelud
В общем всё в буквальном смысле получается четко и шоколадно!
Всё точь в точь как я хотел. Огромное спасибо!!!
И ещё одна маленькая деталь которую хотелось бы довести до хорошего состояния.
Вот что-бы в проекте делать невидимые кнопки есть масса способов, первый и самый простой через оболочку.
Второй который делаю я это поиск чего либо в "_SourceFolder". или где-то ещё...
Вот так:

Код:
are_ya_there = File.DoesExist(_SourceFolder.."\\1.jpg");
if are_ya_there == true then
Button.SetVisible("Button1", false);
Автор: Zloy_Gelud
Дата сообщения: 05.11.2012 11:54
sjdb45

Код: local tButtons = INIFile.GetValueNames("menu.ini", "BUTTONS");
if tButtons then
for n, sButtonName in pairs(tButtons) do
if INIFile.GetValue("menu.ini", "BUTTONS", sButtonName) == '0' then
Button.SetVisible(sButtonName, false);
elseif INIFile.GetValue("menu.ini", "BUTTONS", sButtonName) == '1' then
Button.SetVisible(sButtonName, false);
end
end
end

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980

Предыдущая тема: память не может быть written


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