Ожидание действий пользователя - cansel

wizard

Client
Регистрация
04.10.2011
Сообщения
989
Благодарностей
584
Баллы
93
Предлагаю в кубике Ожидание действий пользователя использовать выход по ошибке
Screenshot_21.jpg
сейчас можно только нажать продолжить, и выполнение пойдет дальше,
но на самом деле, было бы логично иметь две кнопки продолжить и отмена
1111.jpg

и использовать весь функционал кубиков
 
  • Спасибо
Реакции: serg32

sitnem

Client
Регистрация
03.12.2016
Сообщения
123
Благодарностей
78
Баллы
28
Хмм, а может сделать возможность добавлять сразу несколько кнопок, а потом через switch выбирать нужную ветку? Зачем ограничиться двумя :-)
 
  • Спасибо
Реакции: Wide и molotok

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113

molotok

Client
Регистрация
17.04.2015
Сообщения
733
Благодарностей
358
Баллы
63
Предлагаю еще сделать поле для ввода сообщения.


Это может пригодится, когда после ручного действия( когда будут кнопки успех\не успех или свич), нужно быстро сделать заметку к действию. Нажал не успех и в поле вписал почему.

Лично мне очень нехватает данной функции, приходится делать еще окошно наC#, в котором и реализован нужный функционал, но это очень неудобно. Так как во многопотоке нужно искать, какое окошко к какому браузеру принадлежит.
 

molotok

Client
Регистрация
17.04.2015
Сообщения
733
Благодарностей
358
Баллы
63
Еще желательно сделать чтобы можно было копировать(вручную скоприровать) текст из комментария к действию.

Например я использую это поле в момент проверки адреса доставки, на странице оформления товара в магазине.
Бот вводит адрес довставки, потом проверяет правильность, иногда сайт корректирует адрес - это приводит к остановкер шаблона и ожидания ручного действия. Вручную проверяется адрес (я его записываю в комментарии к ожиданию), было бы очень удобно, если этот адрес можно было скопировать из комментария и использовать на сайте.
 

wizard

Client
Регистрация
04.10.2011
Сообщения
989
Благодарностей
584
Баллы
93

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 304
Благодарностей
5 421
Баллы
113
Пробовал я эту фичу для ввода смс при авторизации. Все же Windows.Forms лучше и практичнее в этом плане. Минус там только один, сложно задать таймаут. В остальном тема класс.
 
  • Спасибо
Реакции: wizard

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
Пробовал я эту фичу для ввода смс при авторизации. Все же Windows.Forms лучше и практичнее в этом плане. Минус там только один, сложно задать таймаут. В остальном тема класс.
создал бы тему с вопросом, как добавить таймер на вин форму. уверен накидают решений, так как в визуал студии это делается в один клик. значит и в зенно форму можно прикрутить и обработчик закрытия формы тоже.
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 304
Благодарностей
5 421
Баллы
113
создал бы тему с вопросом, как добавить таймер на вин форму. уверен накидают решений, так как в визуал студии это делается в один клик. значит и в зенно форму можно прикрутить и обработчик закрытия формы тоже.
Да ну, не особо критичная задача была. Тут поиском закривается 98% вопросов)) лайки только успевай ставить))
 

wizard

Client
Регистрация
04.10.2011
Сообщения
989
Благодарностей
584
Баллы
93
вот C#
форма с таймером:
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
System.Windows.Forms.Form F = new System.Windows.Forms.Form();
F.Text = "ЗАГОЛОВОК ОКНА";// текст заголовка
F.TopMost = true;// по верх всех окон
F.Size=new System.Drawing.Size(400, 150);// размеры окна
F.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;;// позиция окна


//Лейбл showtime
System.Windows.Forms.Label label = new System.Windows.Forms.Label();
label.Text = "timer 3 сек";
label.Location = new System.Drawing.Point(160,60);
label.AutoSize=true;
F.Controls.Add(label);

//Лейбл2
System.Windows.Forms.Label label2 = new System.Windows.Forms.Label();
label2.Text = "ПРОДОЛЖИТЬ СБОР ДАННЫХ ???";
label2.Location = new System.Drawing.Point(100,20);
label2.AutoSize=true;
F.Controls.Add(label2);



//создаем кнопку ДА
System.Windows.Forms.Button button = new System.Windows.Forms.Button();
//задаем имя чекбоксам
button.Text = "ДА";
//положение в окне
button.Location = new System.Drawing.Point(40,50);
//размер кнопочки
button.Size=new System.Drawing.Size(100, 40);
//кидаем на форму
F.Controls.Add(button);
//Описание события, улавливающее нажатие Enter в текстбоксе
button.Click+= delegate(object sender, System.EventArgs e)
{
//говорим в какую переменную положить button
project.Variables["rezult"].Value = button.Text;
F.Close();
};


//создаем кнопку НЕТ
System.Windows.Forms.Button button2 = new System.Windows.Forms.Button();
//задаем имя чекбоксам
button2.Text = "НЕТ";
//положение в окне
button2.Location = new System.Drawing.Point(250,50);
//размер кнопочки
button2.Size=new System.Drawing.Size(100, 40);
//кидаем на форму
F.Controls.Add(button2);
//Описание события, улавливающее нажатие Enter в текстбоксе
button2.Click+= delegate(object sender, System.EventArgs e)
{
//говорим в какую переменную положить button2
project.Variables["rezult"].Value = button2.Text;
F.Close();
};

F.Load += delegate (object s, EventArgs v) {
timer.Interval = 3000; //время ожидания
timer.Tick += new EventHandler(delegate (object _s, EventArgs _v){
timer.Stop();
//здесь обработка полей формы
F.Close();
});
timer.Start();
};
F.ShowDialog();
return 0;

форма с чекбоксом:
//http://zennolab.com/discussion/threads/alert-c.7860/page-2

var dialogForm = new System.Windows.Forms.Form { Size = new Size(450, 110), ShowIcon = false, Name = "DialogForm", Text = @"Форма",
                FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog, MinimizeBox = false, MaximizeBox = false };

// создаём контрол
var checkbox = new System.Windows.Forms.CheckBox { Name = "CheckBox", Text = "Чек бокс" };
dialogForm.Controls.Add(checkbox);
checkbox.Location = new Point(12, 12);

// событие Check
checkbox.CheckedChanged += (delegate
{
    /* ВОТ ЗДЕСЬ ОБРАБОТКА СОБЫТИЯ Т.Е. ТЕЛО МЕТОДА. К ПРИМЕРУ */
    if (checkbox.Checked) System.Windows.Forms.MessageBox.Show("Значение изменилось на true", "Обработка события CheckedChanged");
    else System.Windows.Forms.MessageBox.Show("Значение изменилось на false", "Обработка события CheckedChanged");
} );

// показываем форму
var dialogResult = dialogForm.ShowDialog();

форма с текстовым полем:
//http://zennolab.com/discussion/threads/alert-c.7860/#post45706

// создаём форму с указанным значением
var dialogForm = new System.Windows.Forms.Form { Size = new Size(450, 110), ShowIcon = false, Name = "DialogForm", Text = @"Сообщение",
                FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog, MinimizeBox = false, MaximizeBox = false };
         
// поле ввода
var textBox = new System.Windows.Forms.TextBox { Name = "InputText", Size = new Size(410, 20) };
// кладём не форму
dialogForm.Controls.Add(textBox);
// положение на форме
textBox.Location = new Point(12, 12);

// кнопка отмены
var okButton = new System.Windows.Forms.Button { Name = "OKButton", Text = @"OK", Size = new Size(75, 23) };
// кладём не форму
dialogForm.Controls.Add(okButton);
// положение на форме
okButton.Location = new Point(269, 38);
// обработка события
okButton.Click += (delegate { dialogForm.DialogResult = System.Windows.Forms.DialogResult.OK; });

// кнопка отмены
var cancelButton = new System.Windows.Forms.Button { Name = "CancelButton", Text = @"Отмена", Size = new Size(75, 23)};
// кладём не форму
dialogForm.Controls.Add(cancelButton);
// положение на форме
cancelButton.Location = new Point(347, 38);
// обработка события
cancelButton.Click += (delegate { dialogForm.DialogResult = System.Windows.Forms.DialogResult.Cancel; });

// показывем форму
var dialogResult = dialogForm.ShowDialog();
// если не было отмены диалога
if (dialogResult != System.Windows.Forms.DialogResult.Cancel) return textBox.Text;
return 0;

Но это все не то. надо в стандартном кубике - так удобнее и понятнее
особенно когда в многопотоке - поди разбери что откуда - а в стандартном кубике удобнее
 
Последнее редактирование:

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 304
Благодарностей
5 421
Баллы
113
вот C#
форма с таймером:
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
System.Windows.Forms.Form F = new System.Windows.Forms.Form();
F.Text = "ЗАГОЛОВОК ОКНА";// текст заголовка
F.TopMost = true;// по верх всех окон
F.Size=new System.Drawing.Size(400, 150);// размеры окна
F.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;;// позиция окна


//Лейбл showtime
System.Windows.Forms.Label label = new System.Windows.Forms.Label();
label.Text = "timer 3 сек";
label.Location = new System.Drawing.Point(160,60);
label.AutoSize=true;
F.Controls.Add(label);

//Лейбл2
System.Windows.Forms.Label label2 = new System.Windows.Forms.Label();
label2.Text = "ПРОДОЛЖИТЬ СБОР ДАННЫХ ???";
label2.Location = new System.Drawing.Point(100,20);
label2.AutoSize=true;
F.Controls.Add(label2);



//создаем кнопку ДА
System.Windows.Forms.Button button = new System.Windows.Forms.Button();
//задаем имя чекбоксам
button.Text = "ДА";
//положение в окне
button.Location = new System.Drawing.Point(40,50);
//размер кнопочки
button.Size=new System.Drawing.Size(100, 40);
//кидаем на форму
F.Controls.Add(button);
//Описание события, улавливающее нажатие Enter в текстбоксе
button.Click+= delegate(object sender, System.EventArgs e)
{
//говорим в какую переменную положить button
project.Variables["rezult"].Value = button.Text;
F.Close();
};


//создаем кнопку НЕТ
System.Windows.Forms.Button button2 = new System.Windows.Forms.Button();
//задаем имя чекбоксам
button2.Text = "НЕТ";
//положение в окне
button2.Location = new System.Drawing.Point(250,50);
//размер кнопочки
button2.Size=new System.Drawing.Size(100, 40);
//кидаем на форму
F.Controls.Add(button2);
//Описание события, улавливающее нажатие Enter в текстбоксе
button2.Click+= delegate(object sender, System.EventArgs e)
{
//говорим в какую переменную положить button2
project.Variables["rezult"].Value = button2.Text;
F.Close();
};

F.Load += delegate (object s, EventArgs v) {
timer.Interval = 3000; //время ожидания
timer.Tick += new EventHandler(delegate (object _s, EventArgs _v){
timer.Stop();
//здесь обработка полей формы
F.Close();
});
timer.Start();
};
F.ShowDialog();
return 0;

форма с чекбоксом:
//http://zennolab.com/discussion/threads/alert-c.7860/page-2

var dialogForm = new System.Windows.Forms.Form { Size = new Size(450, 110), ShowIcon = false, Name = "DialogForm", Text = @"Форма",
                FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog, MinimizeBox = false, MaximizeBox = false };

// создаём контрол
var checkbox = new System.Windows.Forms.CheckBox { Name = "CheckBox", Text = "Чек бокс" };
dialogForm.Controls.Add(checkbox);
checkbox.Location = new Point(12, 12);

// событие Check
checkbox.CheckedChanged += (delegate
{
    /* ВОТ ЗДЕСЬ ОБРАБОТКА СОБЫТИЯ Т.Е. ТЕЛО МЕТОДА. К ПРИМЕРУ */
    if (checkbox.Checked) System.Windows.Forms.MessageBox.Show("Значение изменилось на true", "Обработка события CheckedChanged");
    else System.Windows.Forms.MessageBox.Show("Значение изменилось на false", "Обработка события CheckedChanged");
} );

// показываем форму
var dialogResult = dialogForm.ShowDialog();

форма с текстовым полем:
//http://zennolab.com/discussion/threads/alert-c.7860/#post45706

// создаём форму с указанным значением
var dialogForm = new System.Windows.Forms.Form { Size = new Size(450, 110), ShowIcon = false, Name = "DialogForm", Text = @"Сообщение",
                FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog, MinimizeBox = false, MaximizeBox = false };
      
// поле ввода
var textBox = new System.Windows.Forms.TextBox { Name = "InputText", Size = new Size(410, 20) };
// кладём не форму
dialogForm.Controls.Add(textBox);
// положение на форме
textBox.Location = new Point(12, 12);

// кнопка отмены
var okButton = new System.Windows.Forms.Button { Name = "OKButton", Text = @"OK", Size = new Size(75, 23) };
// кладём не форму
dialogForm.Controls.Add(okButton);
// положение на форме
okButton.Location = new Point(269, 38);
// обработка события
okButton.Click += (delegate { dialogForm.DialogResult = System.Windows.Forms.DialogResult.OK; });

// кнопка отмены
var cancelButton = new System.Windows.Forms.Button { Name = "CancelButton", Text = @"Отмена", Size = new Size(75, 23)};
// кладём не форму
dialogForm.Controls.Add(cancelButton);
// положение на форме
cancelButton.Location = new Point(347, 38);
// обработка события
cancelButton.Click += (delegate { dialogForm.DialogResult = System.Windows.Forms.DialogResult.Cancel; });

// показывем форму
var dialogResult = dialogForm.ShowDialog();
// если не было отмены диалога
if (dialogResult != System.Windows.Forms.DialogResult.Cancel) return textBox.Text;
return 0;

Но это все не то. надо в стандартном кубике - так удобнее и понятнее
особенно когда в многопотоке - поди разбери что откуда - а в стандартном кубике удобнее
Надо было конкурс шаблонов дождатся, че же ты. Примного благодарен. Можно было бы вывести в отдельную тему.
теги(пост выше): Таймаут c#, время выполения c# прервать C# по времени си шарп windows.Forms виндовс формс окно чекбокс в окне винда форма ожидание действий
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 304
Благодарностей
5 421
Баллы
113
вот C#
форма с таймером:
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
System.Windows.Forms.Form F = new System.Windows.Forms.Form();
F.Text = "ЗАГОЛОВОК ОКНА";// текст заголовка
F.TopMost = true;// по верх всех окон
F.Size=new System.Drawing.Size(400, 150);// размеры окна
F.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;;// позиция окна


//Лейбл showtime
System.Windows.Forms.Label label = new System.Windows.Forms.Label();
label.Text = "timer 3 сек";
label.Location = new System.Drawing.Point(160,60);
label.AutoSize=true;
F.Controls.Add(label);

//Лейбл2
System.Windows.Forms.Label label2 = new System.Windows.Forms.Label();
label2.Text = "ПРОДОЛЖИТЬ СБОР ДАННЫХ ???";
label2.Location = new System.Drawing.Point(100,20);
label2.AutoSize=true;
F.Controls.Add(label2);



//создаем кнопку ДА
System.Windows.Forms.Button button = new System.Windows.Forms.Button();
//задаем имя чекбоксам
button.Text = "ДА";
//положение в окне
button.Location = new System.Drawing.Point(40,50);
//размер кнопочки
button.Size=new System.Drawing.Size(100, 40);
//кидаем на форму
F.Controls.Add(button);
//Описание события, улавливающее нажатие Enter в текстбоксе
button.Click+= delegate(object sender, System.EventArgs e)
{
//говорим в какую переменную положить button
project.Variables["rezult"].Value = button.Text;
F.Close();
};


//создаем кнопку НЕТ
System.Windows.Forms.Button button2 = new System.Windows.Forms.Button();
//задаем имя чекбоксам
button2.Text = "НЕТ";
//положение в окне
button2.Location = new System.Drawing.Point(250,50);
//размер кнопочки
button2.Size=new System.Drawing.Size(100, 40);
//кидаем на форму
F.Controls.Add(button2);
//Описание события, улавливающее нажатие Enter в текстбоксе
button2.Click+= delegate(object sender, System.EventArgs e)
{
//говорим в какую переменную положить button2
project.Variables["rezult"].Value = button2.Text;
F.Close();
};

F.Load += delegate (object s, EventArgs v) {
timer.Interval = 3000; //время ожидания
timer.Tick += new EventHandler(delegate (object _s, EventArgs _v){
timer.Stop();
//здесь обработка полей формы
F.Close();
});
timer.Start();
};
F.ShowDialog();
return 0;

форма с чекбоксом:
//http://zennolab.com/discussion/threads/alert-c.7860/page-2

var dialogForm = new System.Windows.Forms.Form { Size = new Size(450, 110), ShowIcon = false, Name = "DialogForm", Text = @"Форма",
                FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog, MinimizeBox = false, MaximizeBox = false };

// создаём контрол
var checkbox = new System.Windows.Forms.CheckBox { Name = "CheckBox", Text = "Чек бокс" };
dialogForm.Controls.Add(checkbox);
checkbox.Location = new Point(12, 12);

// событие Check
checkbox.CheckedChanged += (delegate
{
    /* ВОТ ЗДЕСЬ ОБРАБОТКА СОБЫТИЯ Т.Е. ТЕЛО МЕТОДА. К ПРИМЕРУ */
    if (checkbox.Checked) System.Windows.Forms.MessageBox.Show("Значение изменилось на true", "Обработка события CheckedChanged");
    else System.Windows.Forms.MessageBox.Show("Значение изменилось на false", "Обработка события CheckedChanged");
} );

// показываем форму
var dialogResult = dialogForm.ShowDialog();

форма с текстовым полем:
//http://zennolab.com/discussion/threads/alert-c.7860/#post45706

// создаём форму с указанным значением
var dialogForm = new System.Windows.Forms.Form { Size = new Size(450, 110), ShowIcon = false, Name = "DialogForm", Text = @"Сообщение",
                FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog, MinimizeBox = false, MaximizeBox = false };
       
// поле ввода
var textBox = new System.Windows.Forms.TextBox { Name = "InputText", Size = new Size(410, 20) };
// кладём не форму
dialogForm.Controls.Add(textBox);
// положение на форме
textBox.Location = new Point(12, 12);

// кнопка отмены
var okButton = new System.Windows.Forms.Button { Name = "OKButton", Text = @"OK", Size = new Size(75, 23) };
// кладём не форму
dialogForm.Controls.Add(okButton);
// положение на форме
okButton.Location = new Point(269, 38);
// обработка события
okButton.Click += (delegate { dialogForm.DialogResult = System.Windows.Forms.DialogResult.OK; });

// кнопка отмены
var cancelButton = new System.Windows.Forms.Button { Name = "CancelButton", Text = @"Отмена", Size = new Size(75, 23)};
// кладём не форму
dialogForm.Controls.Add(cancelButton);
// положение на форме
cancelButton.Location = new Point(347, 38);
// обработка события
cancelButton.Click += (delegate { dialogForm.DialogResult = System.Windows.Forms.DialogResult.Cancel; });

// показывем форму
var dialogResult = dialogForm.ShowDialog();
// если не было отмены диалога
if (dialogResult != System.Windows.Forms.DialogResult.Cancel) return textBox.Text;
return 0;

Но это все не то. надо в стандартном кубике - так удобнее и понятнее
особенно когда в многопотоке - поди разбери что откуда - а в стандартном кубике удобнее
А это че значит? В общем не осилил. Код с полем и кнопками сильно отличается от того, что с таймером.
 

Вложения

Последнее редактирование:

wizard

Client
Регистрация
04.10.2011
Сообщения
989
Благодарностей
584
Баллы
93
  • Спасибо
Реакции: Mikhail B.

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)