Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/30: Рейтинг темы: голосов - 30, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 60
Delphi 6-7

Передача в процедуру любого визуального объекта через одну переменную

06.02.2019, 02:05. Показов 6662. Ответов 84

Студворк — интернет-сервис помощи студентам
Написал небольшую прогу и заморочился с полным ресайзом всех объектв и шрифтов на форме при резайзе самой формы. Написал, работает, но процедура ресайза просто ГИГАНСКАЯ и не умещается в экран и постоянно в ней одно и тоже, типа этого:
Delphi
1
2
3
4
5
6
7
8
9
10
  ButSel.Width:=Round(Panel1.Left*0.8);
  ButSel.Height:=ButSel.Width div 2;
  ButSel.Left:=Round(Panel1.Left*0.1);
  ButSel.Top:=Panel1.Top;
  ButSel.Font.Size:=Round(ButSel.Width/16);
  Ed1.Width:=ButSel.Left*2;
  Ed1.Height:=ButSel.Left*2;
  Ed1.Left:=Panel1.Left Div 2 - Ed1.Width div 2;
  Ed1.Top:=ButSel.Top+ButSel.Height*2;
  Ed1.Font.Size:=Round(Ed1.Width*0.55);
Этот пример конечно не особо наглядный, тут я то к одному, то к другому привязываюсь, но не суть.
Попытался написать доп. процедуру чтобы было типа:
Delphi
1
2
3
  ResizeF(ButSel,0.3,0.14,0.65,0.65,0);
  ResizeF(Ed1,0.3,0.14,0.65,0.65,0);
  ResizeF(Panel1,0.3,0.14,0.65,0.65,0);
Всё было бы хорошо, но вот все объекты разных типов и универсальная процедура для 10 типов разных объектов затянет строк на 70, выглядит оно вот так тупо:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure ResizeF(Me: TObject; L,U,X,Y,FS:real);
begin
   If (Me is TLabel) then begin
    (Me as TLabel).Left:=Round(Form1.Width * L);
    (Me as TLabel).Top:=Round(Form1.Height * U);
    (Me as TLabel).Width:=Round(Form1.Width * X);
    (Me as TLabel).Height:=Round(Form1.Height * Y);
    If FS>0 Then (Me as TLabel).Font.Size:=Round((Me as TLabel).Width * FS);
   end;
   If (Me is TPanel) then begin
    (Me as TPanel).Left:=Round(Form1.Width * L);
    (Me as TPanel).Top:=Round(Form1.Height * U);
    (Me as TPanel).Width:=Round(Form1.Width * X);
    (Me as TPanel).Height:=Round(Form1.Height * Y);
    If FS>0 Then (Me as TPanel).Font.Size:=Round((Me as TPanel).Width * FS);
  end;
// и так далее до бесконечности разнообразия типов........
Каким типом обозвать переменную "Me" чтобы она была "съедобна" для компилятора с любым визуальным типом.
Чтобы в процедуру и "кнопку" и "панель" и "метку" передать можно было и не расписывать по 7 строк для каждого предполагаемого типа.
Заранее ГРОМАДНОЕ СПАСИБО!

P.S. Если у кого есть и другие мысли, методы, способы по полному ресайзу всех объектов на форме при ресайзе самой формы, очень буду признателен за инфу, почитаю, изучу обязательно. Даже если они вообще с другим подходом. Чтоб форма как картинка больше-меньше, а всё на месте осталось и с нужными пропорциями. Спасибо, спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.02.2019, 02:05
Ответы с готовыми решениями:

Передача любого объекта в метод
Добрый день. Подскажите, пожалуйста. Есть метод: при изменении состояния checkBox'а изменяется доступность к текстовому полю на форме. ...

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

Передача объекта в процедуру
Привет всем. Есть такая проблема: не могу передать объект в процедуру в Excel VBA. Есть собственный класс Class1. Почему не работает...

84
Модератор
 Аватар для D1973
9935 / 6472 / 2458
Регистрация: 21.01.2014
Сообщений: 27,442
Записей в блоге: 3
07.02.2019, 08:07
Студворк — интернет-сервис помощи студентам
klass2323, я где-то пропустил это или Вы нигде не указывали свою версию Дельфи, на которой работаете?
И, кстати, кнопки всегда этим отличались: цвет шрифта на них произвольно менять нельзя, поэтому, чтобы голову не греть, если нужна кнопка с цветными буквами - возьмите компонент BitButton.
Ну а так конечно странная ситуация... Может, тестовый пример сделаете, где бы это поведение можно было увидеть наглядно, и этот минимальный проект сюда выставите?
0
882 / 404 / 173
Регистрация: 20.10.2016
Сообщений: 1,828
07.02.2019, 08:10
Цитата Сообщение от D1973 Посмотреть сообщение
klass2323, я где-то пропустил это или Вы нигде не указывали свою версию Дельфи, на которой работаете?
Седьмая, было в теме

Для лейблов смена цвета точно работать должна работать, неоднократно таким баловался. Хотя вот менять цвет у лейбла с Enabled = false не приходилось.
0
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 60
07.02.2019, 09:04  [ТС]
Цитата Сообщение от Nanotentacle Посмотреть сообщение
Не работает при Enabled = true или при Enabled = false? Или вообще не работает?
Короче выяснил что у меня тупо не работают цвета шрифта только на кнопках TButton. На всём остальном работает и на кнопках TBitBtn, тоже работает. Поменяю на BitBtn кнопки и вопрос снят. Пробовал обычные кнопки раскрасить и на другом компе, там делфи 4 года назад ставил - то же самое.
Эксперимент провел, на форме поставил Fort.color:=clred и на всех объектах наследование включил ParentFont:=true. всё раскрасилось кроме обычных кнопок. Что-то наверно с модулем или фиг знает с чем, ну то не суть, не важно, другие кнопки есть и ладно, но всё же странно, на этот глюк столько времени потратить которого нет. А вот если Enabled:=False поставить, то только серый цвет и тогда уже меняй, не меняй, ни на чем работать не будет.

Так вот проблема с сквозным кликом осталась и пока не решилась. Может настройки есть какие для этого, но я не знаю.
Пытаюсь как-то вызвать событие OnClick родителя, это бы реально помогло, но не пойму как это правильно записать. Компилятор вредный собака, не хочет есть что дают! А дают типа sender.parent.OnClick, но что-то не так... Разбираюсь пока.

Добавлено через 19 минут
Цитата Сообщение от D1973 Посмотреть сообщение
klass2323, я где-то пропустил это или Вы нигде не указывали свою версию Дельфи, на которой работаете?
Делфи 7 у меня. Вроде не писал, за меня Веревкин написал.
Странно, но на этом компе действительно не работал цвет текста ни на чём, у меня программно было введено. Вот загрузил чистую форму и потом обратно проект свой и лейблы засветились, ничего не делал. Фантастика блин. У меня делфи третьи сутки открыт, может заглючило что...
Ну с кнопками да, другие возьму и всё.
0
882 / 404 / 173
Регистрация: 20.10.2016
Сообщений: 1,828
07.02.2019, 09:27
Цитата Сообщение от klass2323 Посмотреть сообщение
Так вот проблема с сквозным кликом осталась и пока не решилась.
Подробнее: что за сквозной клик?

Цитата Сообщение от klass2323 Посмотреть сообщение
А дают типа sender.parent.OnClick
Sender - это TObject. У TObject нет события OnClick. Надо приводить к правильному типу.
0
Модератор
 Аватар для D1973
9935 / 6472 / 2458
Регистрация: 21.01.2014
Сообщений: 27,442
Записей в блоге: 3
07.02.2019, 09:34
Цитата Сообщение от klass2323 Посмотреть сообщение
Пытаюсь как-то вызвать событие OnClick родителя
Именно родителя? Т.е. компонента типа Panel, GroupBox и т.д. - компонента-контейнера? Тогда не надо изобретать велосипед: просто в инспекторе объектов для нужного Label выберите событие OnClick родителя...
Миниатюры
Передача в процедуру любого визуального объекта через одну переменную  
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
07.02.2019, 09:49
Цитата Сообщение от klass2323 Посмотреть сообщение
Делфи 7 у меня. Вроде не писал, за меня Веревкин написал.
Верёвкин удивлён тем, что D7 ты до сих пор не снёс. Не трать на неё время, поставь Рио.
0
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 60
07.02.2019, 10:19  [ТС]
Цитата Сообщение от Nanotentacle Посмотреть сообщение
Подробнее: что за сквозной клик?
У меня динамически созданные панельки в качестве кнопок и работали они просто превосходно, но в процессе я добавил надписи на эти "кнопки" в виде текста на трёх разных TLabel (созданных тоже динамически)на каждой "кнопке" TPanel.
Так вот всё работает пока не попадешь мышкой на метки которые частично закрывают "кнопки" и соответственно перехватывают на себя событие OnClick. Так вот надо у меток отобрать событие и перенаправить на "кнопку" которая под меткой соответственно. Метки припаренчены к "кнопкам". Пример реальный приводить не могу, полностью привести я весь форум засру, а урывками непонятно получается где какой тип и так далее.

ButMas[X,Y].LaMaxLoad.Parent:=ButMas[X,Y].But;

ButMas[X,Y].LaMaxLoad это TLabel
ButMas[X,Y].But это TPanel
Хотя это вообще не важно, нужно просто клик передать родителю и всё.
Я уже верчу-верчу эти обращения всякие, но оно то не компилируется или ошибку выдаёт потом.
Мне кажется я вообще не то пишу.
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.Clicks(Sender: TObject);
begin
  TControl(Sender).Click;//НЕ ТОТ ТИП
end;
...
  TMyCtrls(Sender).Click;// компилируется но потом ошибка
 
 (Sender as TButton).Click;//компилируется и наверно работает, но оно мне не надо такое
 (Sender as TPanel).Click;// не компилируется что за прикол то? У панелей точно есть событие OnClick!
А вообще кто такой Sender? Это объект на котором наш объект или это наш объект, что-то я запутался?

Добавлено через 6 минут
D1973, Если б всё так просто,.. нет никаких инспекторов. Всё динамическое.
0
Модератор
 Аватар для D1973
9935 / 6472 / 2458
Регистрация: 21.01.2014
Сообщений: 27,442
Записей в блоге: 3
07.02.2019, 10:26
Цитата Сообщение от klass2323 Посмотреть сообщение
У меня динамически созданные панельки в качестве кнопок
т.е. событие OnClick для каждой такой панели Вы тоже задаете динамически, правильно? Но тогда, если учесть, что:
Цитата Сообщение от klass2323 Посмотреть сообщение
я добавил надписи на эти "кнопки" в виде текста на трёх разных TLabel (созданных тоже динамически)
то что Вам мешает в момент создания этих меток назначить им для события OnClick ту же самую процедуру, что и для панели?
0
882 / 404 / 173
Регистрация: 20.10.2016
Сообщений: 1,828
07.02.2019, 10:30
Цитата Сообщение от D1973 Посмотреть сообщение
просто в инспекторе объектов для нужного Label выберите событие OnClick родителя...
небольшое дополнение: надо помнить, что Sender в этой ситуации - это Label, и для работы Sender или не использовать, или работать с Sender.Parent.
0
Модератор
 Аватар для D1973
9935 / 6472 / 2458
Регистрация: 21.01.2014
Сообщений: 27,442
Записей в блоге: 3
07.02.2019, 10:54
Лучший ответ Сообщение было отмечено klass2323 как решение

Решение

Цитата Сообщение от Nanotentacle Посмотреть сообщение
для работы Sender или не использовать, или работать с Sender.Parent
просто проверку делать на то, кто конкретно вызвал событие...
Delphi
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
//метод, выполняемый при клике на панели или на метке на панели
procedure TForm1.PanelClick(Sender: TObject);
var O: TObject;
begin
 if (Sender is TLabel) then O := (Sender as TLabel).Parent else O := Sender;
 (O as TPanel).Left := (O as TPanel).Left + 1;
end;
 
//создание панели и метки на ней
procedure TForm1.Button1Click(Sender: TObject);
var P: TPanel;
    L: TLabel;
begin
  P := TPanel.Create(self);
  P.Parent := self;
  P.Left := 50;
  P.Top := 50;
  P.Caption := '';
  P.Visible := true;
  P.OnClick := PanelClick;
  L := TLabel.Create(P);
  L.Parent := P;
  L.Left := 10;
  L.Top := 10;
  L.Caption := 'AAAAAAAAA';
  L.OnClick := PanelClick;
end;
1
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 60
07.02.2019, 10:58  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
т.е. событие OnClick для каждой такой панели Вы тоже задаете динамически, правильно? Но тогда, если учесть, что:

то что Вам мешает в момент создания этих меток назначить им для события OnClick ту же самую процедуру, что и для панели?
Как бы да и нет одновременно
Дело в том что в процедуре панели там тоже всё через ж... как у меня обычно.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//Так создаются панели-"кнопки"
  For y:=1 to 4 do For x:=1 to 4 do
  Begin
    a:=TPanel.Create(Form1);  a.Parent:=aa; /"a"
    a.Name:='Pan'+IntTostr(x)+IntTostr(y); //В имени каждой панели зашифрованы координаты панели в массиве
    ButMas[X,Y].But:=a;
  end;
 
// А вот так изымается адрес ячейки массива из имени сработавшей панели и обработка уже конкретно клика
// Там по сути выделить и снять выделение с кнопки
 
procedure TForm1.BtCl(Sender: TObject);
Var x,y:integer; S:string;
begin
   s:= (Sender AS TPanel).Name;
   x:=StrToInt(s[4]);
   y:=StrToInt(s[5]);
   ButMas[X,Y].Select:= Not ButMas[X,Y].Select;
end;
Да, выход конечно же есть и он по сути на поверхности. Точно так же забыть аббревиатуру ООП и так же рукожопно поназывать метки на кнопке:
Delphi
1
2
3
Id.Name:=          'Маня'+IntTostr(x)+IntTostr(y);
MaxLoad.Name:='Люся'+IntTostr(x)+IntTostr(y);
Load.Name:=      'Петя'+IntTostr(x)+IntTostr(y);
И так де обработать, но хочется как-то по-человечески...
0
Модератор
 Аватар для D1973
9935 / 6472 / 2458
Регистрация: 21.01.2014
Сообщений: 27,442
Записей в блоге: 3
07.02.2019, 11:00
Цитата Сообщение от klass2323 Посмотреть сообщение
Это объект на котором наш объект или это наш объект
Это наш объект
1
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 60
07.02.2019, 11:03  [ТС]
Цитата Сообщение от Nanotentacle Посмотреть сообщение
небольшое дополнение: надо помнить, что Sender в этой ситуации - это Label, и для работы Sender или не использовать, или работать с Sender.Parent.
Во-во, я этот Sender.Parent крутил-крутил, вертел-вертел и нифига не вышло. И так и сяк его, не хочет.
Обратите внимание что с типом TButton компилируется событие, а с панелью нет, там выше писал. И это засада блин, непонятная причём.
0
Модератор
 Аватар для D1973
9935 / 6472 / 2458
Регистрация: 21.01.2014
Сообщений: 27,442
Записей в блоге: 3
07.02.2019, 11:03
А вообще, почему именно метки? Почему не воспользоваться свойством Caption самой панели?
0
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 60
07.02.2019, 11:12  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
А вообще, почему именно метки? Почему не воспользоваться свойством Caption самой панели?
Нельзя обратиться отдельно к каждой строчке, да и капчу по моему вообще нельзя написать больше чем в одну строку, если не ошибаюсь, но могу. Не помню там #13#10 прокатывает или нет. Если и можно то выделить отдельно каждую строку цветом нельзя и невозможно не смещая позиции, скрыть или показать отдельные строчки в зависимости от режима или как минимум крайне геморно и ненадежно.

Сейчас ещё с вашим примером разбираюсь, перевариваю.
0
882 / 404 / 173
Регистрация: 20.10.2016
Сообщений: 1,828
07.02.2019, 11:52
Цитата Сообщение от klass2323 Посмотреть сообщение
Во-во, я этот Sender.Parent крутил-крутил, вертел-вертел и нифига не вышло. И так и сяк его, не хочет.
Как крутили-вертели? Без кода сложно оценить. Чуть выше, сразу после моего замечания про Sender, D1973 привел разбор ситуации как надо крутить-вертеть, чтобы выйти из ситуации.
1
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 60
07.02.2019, 11:52  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
просто проверку делать на то, кто конкретно вызвал событие...
Блин, поразительно!
В процедуру существующую добавил одну строчку и прописал эту же процедуру и в метки и заработало!
Delphi
1
2
3
4
5
6
7
8
9
10
...
ButMas[X,Y].LaId.OnClick:=BtCl;
ButMas[X,Y].LaMaxLoad.OnClick:=BtCl;
ButMas[X,Y].LaLoad.OnClick:=BtCl
...
procedure TForm1.BtCl(Sender: TObject);
Var x,y:integer; S:string;
begin
   if (Sender is TLabel) then Sender := (Sender as TLabel).Parent;
...
И снова СПАСИБИЩЕ!!!

А мне выговор за тупость и работу над ошибками!
0
882 / 404 / 173
Регистрация: 20.10.2016
Сообщений: 1,828
07.02.2019, 12:14
Цитата Сообщение от klass2323 Посмотреть сообщение
Delphi
1
if (Sender is TLabel) then Sender := (Sender as TLabel).Parent;
Чисто моя рекомендация: не надо использовать параметр процедуры Sender в таком виде. Не поленитесь, создайте локальную переменную с типом TObject (если там будут не только панели) или TPanel (если там будут только панели), и сделайте

Delphi
1
2
3
4
5
Var x,y:integer; S:string;
 LPanel:TPanel
begin
   if (Sender is TLabel) then LPanel := TPanel((Sender as TLabel).Parent);
...
0
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 60
07.02.2019, 12:28  [ТС]
Цитата Сообщение от Nanotentacle Посмотреть сообщение
Как крутили-вертели? Без кода сложно оценить. Чуть выше, сразу после моего замечания про Sender, D1973 привел разбор ситуации как надо крутить-вертеть, чтобы выйти из ситуации.
Да, я просто пока на один пост отвечаю, вы по три пишете, а я потом пока на все отвечу, путаница получается.

Кстати это так и не работает и хоть крути, хоть верти. Не, мне уже не надо и не заморачивайтесь если нет личного принципиального или профессионального интереса. Я научился подменять сендера, но вызвать событие родителя нет.
Если бы они были одного типа, то засада получилась бы наверно...

Delphi
1
2
3
4
procedure TForm1.Clicks(Sender: TObject);
begin
 (Sender as TLabel).Parent.Click; // Не компилируется, но вроде как правильно написано как мне кажется
end;
Добавлено через 12 минут
Цитата Сообщение от Nanotentacle Посмотреть сообщение
Чисто моя рекомендация: не надо использовать параметр процедуры Sender в таком виде. Не поленитесь, создайте локальную переменную с типом TObject (если там будут не только панели) или TPanel (если там будут только панели), и сделайте

Delphi
1
2
3
4
5
Var x,y:integer; S:string;
 LPanel:TPanel
begin
   if (Sender is TLabel) then LPanel := TPanel((Sender as TLabel).Parent);
...
Ну мне показалась она лишней, типа оптимизировал, в примере она была. Вот только сейчас задумался. Это ж оно может в обратку фигануть и какому-то следующему событию может достаться не тот sender. Ну или что-то в этом роде. Ну или почему она нужна?
0
 Аватар для Matan!
1882 / 1016 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
07.02.2019, 12:29
Цитата Сообщение от Nanotentacle Посмотреть сообщение
не надо использовать параметр процедуры Sender в таком виде.
А чо нет? Здесь sender обрабатыватся при выполнении процедуры BtCl. Начало темы не читал, но Вы правы, если эта процедура - вложенная. Но похоже, что это просто private-процедура формы, так что всё ок. Вот только громоздко получается, в дальнейшем неудобно будет с такой конструкцией работать

Добавлено через 48 секунд
Цитата Сообщение от klass2323 Посмотреть сообщение
Ну или почему она нужна?
Потому, что
Цитата Сообщение от Matan! Посмотреть сообщение
в дальнейшем неудобно будет с такой конструкцией работать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.02.2019, 12:29
Помогаю со студенческими работами здесь

Передача в процедуру одну стрчоку из двумерного массива
Я знаю, как передать строчку из двумерного массива в си. Нужно передать в функцию вот так: *(Ar+i), где Ar - массив двумерный, i - строчка...

Выразить одну переменную через другую
помогите выразить x через Е, пытаюсь через solve вот что выдает.

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

Доступ к свойству объекта через переменную
#include <iostream> class Student { public: char* fname; char* sname; Student(char* fname, char * sname) { ...

Вызов объекта через строковую переменную
Excel. Есть книга с главным листом и множеством второстепенных. Задача: создать кнопки(togglebutton) на главном листе для скрытия и...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов, содержащихся в реализации модуля. По-умолчанию все члены модуля доступны: module Foo let x = 10 let boo () = printfn "boo" . . .
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru