Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт дек 04, 2020 12:33

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 64 ]  На страницу Пред.  1, 2, 3, 4, 5
Автор Сообщение
 Заголовок сообщения: Re: Forth + Lazarus IDE
СообщениеДобавлено: Пн ноя 09, 2020 09:37 
Не в сети

Зарегистрирован: Пн янв 28, 2019 03:10
Сообщения: 89
Благодарил (а): 10 раз.
Поблагодарили: 5 раз.
Victor__v писал(а):
Эх, а я как дурак через шейдеры треугольник рисую :weep; :D

Ну это же только для примера.
А что это такое интересное с шейдерами будет?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth + Lazarus IDE
СообщениеДобавлено: Пн ноя 09, 2020 19:32 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7078
Благодарил (а): 17 раз.
Поблагодарили: 116 раз.
Victor__v писал(а):
Эх, а я как дурак через шейдеры треугольник рисую

Зачем так-то? Есть же "hello world для OpenGL".


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth + Lazarus IDE
СообщениеДобавлено: Сб ноя 14, 2020 04:08 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7078
Благодарил (а): 17 раз.
Поблагодарили: 116 раз.
Воспроизведенный в Lazarus движок Qt, с форт-потоком и сообщениями для виджетов, обрабатываемых в главном приложении - в данном случае Lazarus.


Вложения:
lazarus_01.png
lazarus_01.png [ 6.59 Кб | Просмотров: 237 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth + Lazarus IDE
СообщениеДобавлено: Вс ноя 15, 2020 03:47 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7078
Благодарил (а): 17 раз.
Поблагодарили: 116 раз.
В Lazarus оказалось существенно проще организовать аналог SignalMapper из Qt.
Вкратце - если динамически генерировать объекты (например, кнопки), то у кнопок должен быть обработчик - естественно, у каждой. Однако писать такое же количество независимых функций - совершенно нерациональное занятие. Обработчик должен быть один... но тогда все кнопки будут делать одно и то же. В Qt для решения такой задачи существует понятие SignalMapper (с учетом используемой терминологии Signal + Slot). Идея заключается в том, чтобы расширить передаваемое кнопке сообщение, включив в него индекс самой кнопки. Поэтому в Qt о при инициализации кнопок передаваемый кнопке сигнал "расширяется" индексом самой кнопки:

Код:
    for (int i = 0; i < MAXBUTTONS; i++)
    {
        FButton[i] = new QPushButton(this);
        FButton[i]->hide();

        signalButtonMapper->setMapping(FButton[i], i);
        connect(FButton[i], SIGNAL(clicked()), signalButtonMapper, SLOT(map()));
    }
    connect(this, SIGNAL(ButtonClicked(int)), this, SLOT(ButtonClick(int)));


Lazarus такого объекта не содержит. Однако отсутствие системы сигнал+слот позволяет просто создать производный класс от TButton, добавив в него поле "индекс" (ну и функцию, конечно же - инкапсуляция):

Код:
  TVButton = class(TButton)
     private
      Index : integer;
     public
       function GetIndex : integer;
  end;


При инициализации кнопке просто сообщается ее номер:
Код:
  for i := 0 to MAXBUTTONS - 1 do
  begin
    VButton[i] := TVButton.Create(Self);
    VButton[i].Parent := Self;
    VButton[i].Hide;
    VButton[i].OnClick:=@aButtonClick;
    VButton[i].Index := i;
  end; 


Внутри обработчика выражение
Код:
(Sender as TVButton).GetIndex


дает индекс этой кнопки.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 64 ]  На страницу Пред.  1, 2, 3, 4, 5

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB