Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.97/75: Рейтинг темы: голосов - 75, средняя оценка - 4.97
6 / 6 / 3
Регистрация: 14.11.2015
Сообщений: 21
GraphABC

Обработчик событий нажатия кнопок мыши внутри цикла. Не работает

14.11.2015, 15:40. Показов 13940. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Товарищи, подскажите. Уже весь мозг сломал. Проблема в следующем:

я использую модуль graphABC, который с помощью цикла (for, repeat, while - без разницы) выводит на экран какое-то изображение. Необходимо по нажатию либо клавиши с клавиатуры, либо кнопки мыши закончить этот цикл.
Чтобы было понятее, приведу тестовую программу:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
program Test;
 
uses
  GraphABC;
 
procedure MouseDown(x, y, m: integer);
begin
  repeat
    SetPixel(round(random(600)), round(random(400)), clBlack); 
  until m = 2; // m=2  при нажатии правой кнопки мыши
end;
 
begin
  OnMouseDown := MouseDown;
end.
То есть обработчик событий управляет процедурой MouseDown с 3 параметрами (x, y - координаты курсора, m - код нажатой кнопки мыши (0-не нажата, 1 - лкм, 2-пкм).

Если внутри данной процедуры нет цикла, то всё работает (например, если внутри этой процедуры будет какой-нибудь if m=2 then WriteLn('Нажата правая кнопка мыши'); То есть, программа запускается, срабатывает обработчик события нажатия кнопки мыши, который запускает процедуру MouseDown, внутри которой при условии, что нажата правая кнопка, будет выведено сообщение о нажатии правой кнопки). А вот если присутствует цикл, то пока он не завершится, не сможет сработать обработчик события нажатия кнопки мыши, и, соответственно, ничего не будет происходить.
И даже если внутри цикла добавить OnMouseDown := MouseDown, то это никак не изменит ситуацию...


Так как же мне сделать выход из цикла??
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.11.2015, 15:40
Ответы с готовыми решениями:

Обработчик событий нажатия кнопок мыши внутри цикла
Товарищи, подскажите. Уже весь мозг сломал. Проблема в следующем: я использую модуль graphABC, который с помощью цикла (for, repeat,...

Обработчик событий мыши
Ребят, требуется помощь по PABC.Net! Я вот недавно познакомился с модулем Events. Подскажите , если не трудно. Дело в том , что в...

Обработчик событий мыши
Доброе утро, форумчане! На сайте есть боковое меню, которое реагирует на скролинг, т.е. при прокрутке вниз скрывается, при возврате...

20
9 / 9 / 11
Регистрация: 22.10.2015
Сообщений: 81
15.11.2015, 16:04
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
program Test;
 
uses
  GraphABC;
 
procedure MouseDown(x, y, m: integer);
var i, a :integer;
begin
while 1> i do begin
  repeat
    SetPixel(round(random(600)), round(random(400)), clBlack); 
  until m = 2; // m=2  при нажатии правой кнопки мыши
  i := i+ 1;
end;
 
begin
  OnMouseDown := MouseDown;
end;
end.
0
6 / 6 / 3
Регистрация: 14.11.2015
Сообщений: 21
15.11.2015, 20:35  [ТС]
Так ничего не изменилось. Добавлен ещё один цикл (зачем?), но выйти из цикла во время его выполнения нажатием кнопки мыши всё также невозможно...
0
9 / 9 / 11
Регистрация: 22.10.2015
Сообщений: 81
15.11.2015, 20:40
Ну программа то заканчивается.
0
6 / 6 / 3
Регистрация: 14.11.2015
Сообщений: 21
16.11.2015, 00:22  [ТС]
Так смысл не в том, чтобы закончить программу. Можно было после Until указать условие, которое приекратит программу через какое-то количество итераций.
Мне нужно закончить цикл в любое время нажатием какой-нибудь кнопки. Не получается... По крайней мере, при использовании модуля GraphABC... Такое чувство, что глюк в этом модуле.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
16.11.2015, 08:20
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
uses
  GraphABC;
var f:boolean;
procedure MouseDown(x, y, m: integer);
begin
f:=false;
end;
 
begin
f:=true;
repeat
SetPixel(round(random(600)), round(random(400)), clBlack);
OnMouseDown := MouseDown;
until not f;
end.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33404 / 21514 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
16.11.2015, 10:15
Даже больше того, не нужно в цикле присвоение обработчика:
Pascal
1
2
3
4
5
  f := true;
  OnMouseDown := MouseDown; // этого достаточно
  repeat
    SetPixel(round(random(600)), round(random(400)), clBlack);
  until not f;
1
6 / 6 / 3
Регистрация: 14.11.2015
Сообщений: 21
16.11.2015, 13:36  [ТС]
Спасибо! Из цикла уже выходит, дальше буду соображать!

Добавлено через 12 минут
Всё равно есть заминка...

Дело в том, что процедура, в которой есть цикл, у меня сама должна вызываться нажатием кнопки мыши. То есть вот типа такого:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
uses
  GraphABC;
var f:boolean;
 
procedure MouseDown(x, y, m: integer);
begin
f:=false;
end;
 
 procedure Md (a, b, c:integer);
 begin
 f := true;
  OnMouseup := MouseDown; // этого достаточно
  repeat
    SetPixel(round(random(600)), round(random(400)), clBlack);
  until not f
  end;
  
begin
OnMouseDown:=Md;
end.
Получается, что программа начинается, пока не будет нажата кнопка мыши, ничего не произойдёт, но как только она будет нажата, начнёт выполняться процедура "Md", содержащая пресловутый цикл. И вот дальше уже из этого цикла не выйти. Такое чувство, что присутствующий в этой процедуре "OnMouseDown := MouseDown" игнорируется. Вопрос - почему?
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
16.11.2015, 13:57
А ты напиши точно, что хочешь получить, а какие-то сопли по стене..
0
6 / 6 / 3
Регистрация: 14.11.2015
Сообщений: 21
16.11.2015, 14:49  [ТС]
Почему сопли - вполне конкретно всё. А если бы хотел получить именно это?..

Суть в том, что изначально на экране есть меню с кнопками. Меню - отдельная процедура. При нажатии соответствующей кнопки (из тела программы вызывается OnMouseDown := Menu, и в Menu проверяются координаты x, y) из Menu запускается процедура отрисовки графика (пишу программу - гармонограф. Задаются 3 частоты и выводится их "взаимодействие". Иногда очень красивые рисунки получаются. Можно вращать получившийся график). Этот график должен рисоваться непрерывно (анимация), но в определённый момент должна быть возможность выйти из анимации (чтобы задать другие частоты, например).

Получается, что основная программа вызывает Menu (OnMouseDown := Menu) и передаёт в Menu координаты нажатия кнопки мыши; Menu при совпадении координат нажатия с координатами кнопки вызывает процедуру анимации графика (в которой, конечно, есть циклы). И уже из процедуры анимации не выйти. Никакие OnMouseDown := [процедура с выходом] не работают из неё.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
16.11.2015, 14:54
Ну сделай их на разные кнопки мыши или выход на OnKeyPress
0
6 / 6 / 3
Регистрация: 14.11.2015
Сообщений: 21
16.11.2015, 15:04  [ТС]
В том и дело, что если внутри цикла прописать OnMouseDown (и обрабатывать потом другую кнопку мыши) или OnKeyPress тоже пробовал - ничего не работает. Как будто бы не работает только из процедур, которые сами были вызваны обработчиком событий. Глюк это или моё незнание чего-то?..
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33404 / 21514 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
16.11.2015, 15:09
Цитата Сообщение от SinclairLtd Посмотреть сообщение
Глюк это или моё незнание чего-то?..
Это непонимание основ событийного программирования. Смотри, что происходит: ты назначил обработчик нажатия на кнопку, который назначает какой-то другой обработчик (это вполне нормально), и запускает цикл. Вот запуск цикла внутри обработчика - это уже ненормально. Потому что не завершится обработчик, пока работает цикл (соответственно, все другие события, в том числе и то, которое - по твоей задумке - должно этот цикл прервать, просто не произойдут).
0
6 / 6 / 3
Регистрация: 14.11.2015
Сообщений: 21
16.11.2015, 15:51  [ТС]
Ну а как же мне тогда быть? Ведь:
1) Menu, по идее, должно вызываться обработчиком событий OnMouseDown из тела программы. Так ведь?
2) В процедуре, которая запускается изнутри Menu мне тоже нужен обработчик событий мыши. Но внутри Menu (которая уже была вызвана обработчиком событий) не работают уже никакие другие обработчики событий. И если в Menu встречается цикл, то из него уже не выйти при помощи обработчика, т.к. он не работает.

Не работает вот такой код (смысл - чтобы цикл был не в самой процедуре, вызванной обработчиком событий):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses
  GraphABC;
 
procedure Cicle;
begin
  repeat
    SetPixel(round(random(600)), round(random(400)), clBlack); 
  until false;
  end;
 
procedure MouseDown(x, y, m: integer);
begin
Cicle;
if m=2 then halt;
end;
 
begin
  OnMouseDown := MouseDown;
end.
Выдаёт ошибку "Ожидалась переменная" и такой код: (смысл в том, что быть может, продедура MouseDown сама стала обработчиком событий, который может вызвать другую процедуру)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
program Test;
 
uses
  GraphABC;
 
procedure Cicle(a, b, c:integer);
begin
halt;
  end;
 
procedure MouseDown(x, y, m: integer);
begin
  repeat
  MouseDown:=Cicle;
    SetPixel(round(random(600)), round(random(400)), clBlack); 
  until false;
 
end;
 
begin
  OnMouseDown := MouseDown;
end.
Добавлено через 7 минут
Почему при написании консольного приложения при помощи модуля CRT, вообще никаких проблем не было бы - там есть хорошие функции Keypressed, ReadKey, которые работают всегда, везде, в любом цикле, делая выход из цикла вообще не проблемой.
А в GraphABC подобных функций нет, только дурацкие обработчики, работающие один раз на всю программу...

P.S. модуль CRT в совокупности с GraphABC использовать не представляется возможным, т.к. функции ReadKey и Keypressed считывают нажатия из консольного окна, а не из графического.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33404 / 21514 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
16.11.2015, 17:17
Цитата Сообщение от SinclairLtd Посмотреть сообщение
Почему при написании консольного приложения при помощи модуля CRT, вообще никаких проблем не было бы
Потому что там программирование не событийное, а процедурное, то есть, инструкции выполняются в строго определенном порядке. Если KeyPressed - значит, вот именно сейчас проверить, не была ли нажата кнопка, а не зарегистрировать событие нажатия на кнопку, и ожидать его, в это время занимаясь другими делами.

Событийное программирование имеет свою специфику, и ее нужно понимать, прежде, чем браться писать программы. Она отличается от специфики процедурного программирования.
0
6 / 6 / 3
Регистрация: 14.11.2015
Сообщений: 21
16.11.2015, 17:25  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Событийное программирование имеет свою специфику, и ее нужно понимать, прежде, чем браться писать программы. Она отличается от специфики процедурного программирования.
Скажем так, я начал писать программу в надежде в процессе разобраться с тонкостями.
Когда учился в универе, то не было PascalABC, программировали на Turbo Pascal-е. Там только под DOS. Сейчас возникла необходимость написать программу, работающую в Windows, к моей радости оказалось, что есть PascalABC, предоставляющий такую возможность. Но в процессе столкнулся с трудностями.

volvo, если вы понимаете основы событийного программирования, то скажите, что мне сделать, чтобы реализовать то, что нужно? Как из тела программы по событию вызвать процедуру, а в ней по событию выходить из цикла? Или что нужно сделать с программой, чтобы реализовать задумку? Меню сделать не вызываемой процедурой, а в теле программы? Но тогда как нажимать на кнопки в меню, ведь нужна OnMouseDown, чтобы определить координаты клика мышки.
0
0 / 0 / 3
Регистрация: 10.03.2017
Сообщений: 39
22.03.2017, 09:06
Всю прорисовку вынес в отдельную процедуру в новом потоке, благодаря чему она никому не мешает.
Процедура считывания клика мыши изменяет межпроцедурную переменную, которая постоянно считывается циклом while в процедуре prnt
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
program Test;
 
uses
  GraphABC, system.threading;
var
  paint: thread;
  f: boolean;
 
procedure prnt();
begin
  while true do
  begin
    if f = true then
      SetPixel(round(random(600)), round(random(400)), clBlack);
  end;
end;
 
procedure MouseDown(x, y, m: integer);
begin
  if m = 1 then
    f := true
  else
    f := false;
end;
 
begin
  OnMouseDown := MouseDown;
  paint := new thread(prnt);
  paint.start;
end.
Добавлено через 41 минуту
Цитата Меню сделать не вызываемой процедурой, а в теле программы? Но тогда как нажимать на кнопки в меню, ведь нужна OnMouseDown, чтобы определить координаты клика мышки.

вот так?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
program Test;
 
uses
  GraphABC, system.threading;
var
  f: boolean;
  c: boolean;
 
procedure paint(y: integer);
begin
  Moveto(100, y + 40);
  lineto(10, y + 40);
  LineTo(10, y);
  LineTo(100, y);
  lineto(100, y + 40);
end;
 
procedure MouseDown(x, y, m: integer);
begin
  if (x in [10..100]) and (y in [10..50]) then
    if f = false then
    begin
      paint(50);
      paint(90);
      TextOut(15, 55, '1');
      TextOut(15, 95, '2');
      f := true;
    end
    else
    begin
      f := false;
      FillRectangle(10,51,105,135);
      FillRectangle(300,300,600,600);
    end;
    if (x in [10..100]) and (y in [51..90]) and (f=true) then
    begin
    FillRectangle(300,300,600,600);
    textout(400,400,'1');
    end;
     if (x in [10..100]) and (y in [91..130]) and (f=true) then
    begin
    FillRectangle(300,300,600,600);
    textout(400,400,'2
    ');
    end;
end;
 
begin
  SetFontSize(20);
  OnMouseDown := MouseDown;
  Moveto(100, 50);
  lineto(10, 50);
  LineTo(10, 10);
  LineTo(100, 10);
  lineto(100, 50);
  TextOut(15, 15, 'Меню');
end.
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
22.03.2017, 10:17
Тривиальный пример:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
uses GraphABC;
 
const
  clFone = rgb(0,65,100);
 
type
  tMenu = record
    x, y, w, h : Integer;
    inf : String;
    Action : procedure;
  end;
 
procedure theEnd := Window.Close;
 
var Main := 0;
var Points : Integer;
 
procedure Game;
begin
  Main := 1;
  Window.Clear(clBlack);
  Points := 10;
  Window.Caption := Points.ToString;
end;
 
const
  aMainMenu : array of tMenu = (
    (x : 200; y : 100; w : 100; h : 30; inf : 'Игра' ; Action : Game  ),
    (x : 200; y : 140; w : 100; h : 30; inf : 'Выход'; Action : theEnd)
  );
 
procedure Show(a : tMenu);
begin
  Pen.Color   := rgb(0,0,128);
  Brush.Color := rgb(32,32,128);
  Font.Color  := rgb(255,255,0);
  Font.Name   := 'Times New Roman';
  Font.Style  := fsBold;
  Font.Size   := 14;
  Rectangle(a.x, a.y, a.x + a.w, a.y + a.h);
  DrawTextCentered(a.x, a.y, a.x + a.w, a.y + a.h, a.inf);
end;
 
 
procedure MainMenu;
begin
  WIndow.Clear(clFone);
  foreach var item in aMainMenu do
    Show(item);
end;
 
procedure SelectMain(X, Y, M : Integer);
begin
  case Main of
    0 : foreach var item in aMainMenu do
          if (X > item.x) and (X < item.x + item.w) and (Y > item.y) and (Y < item.y + item.h) then
            item.Action;
    1 : begin
          Brush.Color := clRandom;
          Pen.Color := clWhite; //Brush.Color;
          Circle(X, Y, Random(10, 20));
          
          Points -= 1;
          Window.Caption := Points.ToString;
          if Points = 0 then
            begin
              Window.Caption := 'Game over!';
              Main := 0;
              MainMenu;
            end;
        end;
  end;
end;
 
begin
  Window.Width := 600;
  Window.Height := 300;
  Window.CenterOnScreen;
  MainMenu;
  OnMouseDown := SelectMain;
end.
Или с переопределением метода:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
uses GraphABC;
 
const
  clFone = rgb(0,65,100);
 
type
  tMenu = record
    x, y, w, h : Integer;
    inf : String;
    Action : procedure;
  end;
 
procedure theEnd := Window.Close;
procedure SelectMain(X, Y, M : Integer); forward;
procedure MainMenu; forward;
 
var Points : Integer;
 
procedure GameSelect(X, Y, M : Integer);
begin
  Brush.Color := clRandom;
  Pen.Color := clWhite; //Brush.Color;
  Circle(X, Y, Random(10, 20));
  
  Points -= 1;
  Window.Caption := Points.ToString;
  if Points = 0 then
    begin
      Window.Caption := 'Game over!';
      MainMenu;
    end;
end;
 
procedure Game;
begin
  OnMouseDown := GameSelect;
  Window.Clear(clBlack);
  Points := 10;
  Window.Caption := Points.ToString;
end;
 
const
  aMainMenu : array of tMenu = (
    (x : 200; y : 100; w : 100; h : 30; inf : 'Игра' ; Action : Game  ),
    (x : 200; y : 140; w : 100; h : 30; inf : 'Выход'; Action : theEnd)
  );
 
procedure Show(a : tMenu);
begin
  Pen.Color   := rgb(0,0,128);
  Brush.Color := rgb(32,32,128);
  Font.Color  := rgb(255,255,0);
  Font.Name   := 'Times New Roman';
  Font.Style  := fsBold;
  Font.Size   := 14;
  Rectangle(a.x, a.y, a.x + a.w, a.y + a.h);
  DrawTextCentered(a.x, a.y, a.x + a.w, a.y + a.h, a.inf);
end;
 
procedure MainMenu;
begin
  OnMouseDown := SelectMain;
  Window.Clear(clFone);
  foreach var item in aMainMenu do
    Show(item);
end;
 
procedure SelectMain(X, Y, M : Integer);
begin
  foreach var item in aMainMenu do
    if (X > item.x) and (X < item.x + item.w) and (Y > item.y) and (Y < item.y + item.h) then
      item.Action;
end;
 
begin
  Window.Width := 600;
  Window.Height := 300;
  Window.CenterOnScreen;
  MainMenu;
end.
1
0 / 0 / 3
Регистрация: 10.03.2017
Сообщений: 39
22.03.2017, 21:53
Цитата Сообщение от JuriiMW Посмотреть сообщение
Тривиальный пример:
Ну и к чему он? Если читаете тему, то читайте полностью.
Нас просили разобраться с кодом и самого первого сообщения, а не писать свой!
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
23.03.2017, 07:07
Nikita2007, это всё к тому, что
— ТС изначально не правильно стал использовать метод
— перед вашим ответом ТС пишет „я начал писать программу в надежде в процессе разобраться с тонкостями.
— далее вы приводите пример программы, но не используете объектную модель, которую не смогли довести до логического конца
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.03.2017, 07:07
Помогаю со студенческими работами здесь

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

Много кнопок и один обработчик событий
Есть ли какой-то способ одним обработчиком событий воздействовать на множество кнопок, находящихся в массиве? Или для каждой кнопки писать...

Обработчик событий для нескольких кнопок
Доброго времени суток! У меня есть toolStrip, и на нём есть кнопка, по нажатию этой кнопки, добавляю ещё кнопку web = new...

Обработчик событий для динамических кнопок
Всем доброго времени суток. Суть вопроса такая: Необходимо сделать настраиваемую систему АРМ. То есть захожу в настройки, добавляю...

Обработчик событий нажатия на мыш/клавиатуру
Нужно ловить глобально нажатие клавиш(тоесь события нажатия на всех программах/рабочем столе). Программа находится в трейбаре. Как можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru