Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Вопросы по AFL Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
Orange2000



Зарегистрирован: 15.10.2009
Сообщения: 185

СообщениеДобавлено: Чт Янв 12, 2017 8:48 pm Ответить с цитатой Вернуться к началу

Ну тупанул с вопросом) сорь)

Вот сам разобрался:
BuyStop = ValueWhen(Buy, L);
ShortStop = ValueWhen(Short, H);
Посмотреть профиль Отправить личное сообщение
Swell



Зарегистрирован: 18.01.2013
Сообщения: 117

СообщениеДобавлено: Пт Фев 10, 2017 5:44 pm Ответить с цитатой Вернуться к началу

Здравствуйте.
Никто не подскажет. Мне нужно вывести диалоговое окно с радиокнопками с помощью vbs (другого варианта я не вижу). Код на vbs выглядит так:

Set MyForm = WScript.CreateObject("System.Windows.Forms.Form")
Set RadioButton1 = WScript.CreateObject("System.Windows.Forms.RadioButton")
Set RadioButton2 = WScript.CreateObject("System.Windows.Forms.RadioButton")
Set Button1 = WScript.CreateObject("System.Windows.Forms.Button")

With RadioButton1
.Parent = MyForm
.Checked = true
.Left = 12
.Top = 12
.Width = 110
.Height = 17
'.TabStop = true
.Text = "Восх"
End With

With RadioButton2
.Parent = MyForm
.Checked = true
.Left = 12
.Top = 35
.Width = 110
.Height = 17
.Text = "Нисх"
End With

with Myform
.Width = 160
.Height = 125
.Text = "Ввод"
.AutoSize = true
.FormBorderStyle = 5 'FixedToolWindow
End With

With Button1
.Parent = MyForm
.Left = 12
.Top = 160
.Width = 85
.Height = 23
'.TabStop = true
.Text = "Ok"
.DialogResult = 1
End With

MyForm.ShowDialog()

If RadioButton1.Checked Then Result = RadioButton1.Text
If RadioButton2.Checked Then Result = RadioButton2.Text

При запуске из файла с расширением .vbs он работает. Но если его вставить в AFL, то не работает. Выдаёт ошибку 424 (возможно не распознаёт объект).
В чём причина, и можно ли как-нибудь это решить?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пт Фев 10, 2017 10:12 pm Ответить с цитатой Вернуться к началу

Ёёё. Создать форму из AFL? Фигасе... Я пас. У меня даже твой код vbs не работает.
Я бы реализовывал это плагином.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Swell



Зарегистрирован: 18.01.2013
Сообщения: 117

СообщениеДобавлено: Пт Фев 10, 2017 10:23 pm Ответить с цитатой Вернуться к началу

У меня тоже первоначально не работал, пока я не набрал в командной строке такую команду:
%WINDIR%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe System.Windows.Forms.dll /codebase
Это надо для того, чтобы сборка System.Windows.Forms стала доступной через COM-интерфейсы. (Естественно надо обладать правами администратора)
После этого всё заработало. Только почему-то это не работает из под AFL.
Хотя код тот же самый... Обидно (
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пт Фев 10, 2017 10:51 pm Ответить с цитатой Вернуться к началу

Запуск вышеупомянутой команды в cmd не помог. Все равно не работает...

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Swell



Зарегистрирован: 18.01.2013
Сообщения: 117

СообщениеДобавлено: Пт Фев 10, 2017 11:07 pm Ответить с цитатой Вернуться к началу

У тебя 64-х битная система?
Если да, то тогда такая команда (с небольшим отличием):
%WINDIR%\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe System.Windows.Forms.dll /codebase

И обязательно надо быть под администратором!
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пт Фев 10, 2017 11:36 pm Ответить с цитатой Вернуться к началу

Попробуй безо всякого VBS. Просто вот так
Код:

MF = CreateStaticObject("System.Windows.Forms.Form");
MF.Width = 160;
MF.Height = 125;
MF.Text = "Ввод";
MF.AutoSize = True;

MF.ShowDialog();

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Swell



Зарегистрирован: 18.01.2013
Сообщения: 117

СообщениеДобавлено: Сб Фев 11, 2017 8:53 am Ответить с цитатой Вернуться к началу

Да, действительно работает.
Хотя странно, мне всегда казалось, что vbs для этих целей предпочтительнее. Мне как-то надо было обращаться к Excel файлу из AFL, так только на vbs это и получилось. А здесь всё наоборот. Как-то неожиданно..
Посмотреть профиль Отправить личное сообщение
Swell



Зарегистрирован: 18.01.2013
Сообщения: 117

СообщениеДобавлено: Сб Фев 11, 2017 6:21 pm Ответить с цитатой Вернуться к началу

У меня ещё есть вопрос. А есть ли в AFL перехват ошибок? Что-то вроде "On Error Resume Next" в vbs.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Фев 12, 2017 6:08 pm Ответить с цитатой Вернуться к началу

Ну типа отладки есть. См _TRACE()

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
trashfx



Зарегистрирован: 27.06.2015
Сообщения: 90

СообщениеДобавлено: Пн Фев 13, 2017 2:18 pm Ответить с цитатой Вернуться к началу

Swell писал(а):
Здравствуйте.
Никто не подскажет. Мне нужно вывести диалоговое окно с радиокнопками с помощью vbs (другого варианта я не вижу). Код на vbs выглядит так:

Set MyForm = WScript.CreateObject("System.Windows.Forms.Form")
Set RadioButton1 = WScript.CreateObject("System.Windows.Forms.RadioButton")
Set RadioButton2 = WScript.CreateObject("System.Windows.Forms.RadioButton")
Set Button1 = WScript.CreateObject("System.Windows.Forms.Button")

With RadioButton1
.Parent = MyForm
.Checked = true
.Left = 12
.Top = 12
.Width = 110
.Height = 17
'.TabStop = true
.Text = "Восх"
End With

With RadioButton2
.Parent = MyForm
.Checked = true
.Left = 12
.Top = 35
.Width = 110
.Height = 17
.Text = "Нисх"
End With

with Myform
.Width = 160
.Height = 125
.Text = "Ввод"
.AutoSize = true
.FormBorderStyle = 5 'FixedToolWindow
End With

With Button1
.Parent = MyForm
.Left = 12
.Top = 160
.Width = 85
.Height = 23
'.TabStop = true
.Text = "Ok"
.DialogResult = 1
End With

MyForm.ShowDialog()

If RadioButton1.Checked Then Result = RadioButton1.Text
If RadioButton2.Checked Then Result = RadioButton2.Text

При запуске из файла с расширением .vbs он работает. Но если его вставить в AFL, то не работает. Выдаёт ошибку 424 (возможно не распознаёт объект).
В чём причина, и можно ли как-нибудь это решить?



EnableScript()

Код:
EnableScript( "vbscript" );
<%
Function Radio()
   Set MyForm = CreateObject("System.Windows.Forms.Form")
   Set RadioButton1 = CreateObject("System.Windows.Forms.RadioButton")
   Set RadioButton2 = CreateObject("System.Windows.Forms.RadioButton")
   Set Button1 = CreateObject("System.Windows.Forms.Button")

   With RadioButton1
   .Parent = MyForm
   .Checked = true
   .Left = 12
   .Top = 12
   .Width = 110
   .Height = 17
   '.TabStop = true
   .Text = "Восх"
   End With

   With RadioButton2
   .Parent = MyForm
   .Checked = true
   .Left = 12
   .Top = 35
   .Width = 110
   .Height = 17
   .Text = "Нисх"
   End With

   with Myform
   .Width = 160
   .Height = 125
   .Text = "Ввод"
   .AutoSize = true
   .FormBorderStyle = 5 'FixedToolWindow
   End With

   With Button1
   .Parent = MyForm
   .Left = 12
   .Top = 160
   .Width = 85
   .Height = 23
   '.TabStop = true
   .Text = "Ok"
   .DialogResult = 1
   End With

   MyForm.ShowDialog()

   If RadioButton1.Checked Then Result = RadioButton1.Text
   If RadioButton2.Checked Then Result = RadioButton2.Text
End function
%>

script = GetScriptObject();

if( ParamTrigger( "Show VBS dialog", "CLICK HERE" ) )
   script.Radio();



But instead of upper better use
Код:
ShellExecute( "Scripts\\RadioButtons.vbs", "", "", 0 );


As for debugging.... AFL editor has inbuilt debugger!
https://www.amibroker.com/guide/h_debugger.html
But it is not for jscript & vbscript.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Фев 14, 2017 10:36 am Ответить с цитатой Вернуться к началу

!!!!!

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
AlexLan73



Зарегистрирован: 25.06.2012
Сообщения: 87

СообщениеДобавлено: Вт Фев 14, 2017 11:16 am Ответить с цитатой Вернуться к началу

Подскажите пожалуйста, у меня пример не работает, выдает error 19
if( ParamTrigger( "Show VBS dialog", "CLICK HERE" ) )
script.Radio();
ругается на script.Radio();
В чем может быть проблема?
Посмотреть профиль Отправить личное сообщение
Swell



Зарегистрирован: 18.01.2013
Сообщения: 117

СообщениеДобавлено: Вт Фев 14, 2017 2:25 pm Ответить с цитатой Вернуться к началу

trashfx, спасибо.
Как я понял, проблема в том, что в Ami не распознаётся слово WScript (ни в AFL, ни в vbs).
Т.о. получается, что это можно сделать и на AFL, и на vbs.
По поводу ShellExecute( "Scripts\\RadioButtons.vbs", "", "", 0 ); я тоже думал, но здесь непонятно, каким образом передавать результат работы программы обратно в AFL.

Очень жаль конечно, что в AFL не предусмотрено встроенных средств организации пользовательского интерфейса... Приходится прибегать к таким нестандартным методам...
Посмотреть профиль Отправить личное сообщение
Swell



Зарегистрирован: 18.01.2013
Сообщения: 117

СообщениеДобавлено: Вт Фев 14, 2017 11:22 pm Ответить с цитатой Вернуться к началу

AlexLan73, причина может быть в том, что ты не дал команду, о которой я писал Олегу...
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen