Это прекрасно, но я хотел бы сделать некоторые границы, проверяющие массив, как будто кто-то добавляет другой ButtonState, у Вас будет проблема.
кроме того, элементы массива цветов неизменны, поэтому возможно, смотрят на использование различного набора для выстраивания так, чтобы можно было осуществить ту неизменность. Возможно, Dictionary<ButtonState,ButtonColor>
Думаю, в основном вы должны создать несколько процессов, каждый из которых создает окно / форму. Один из процессов имеет главное окно, в которое встроено каждое дочернее окно. Это так же просто, как вызвать SetParent . Окна в разных процессах будут взаимодействовать друг с другом с помощью механизма IPC (межпроцессного взаимодействия), такого как именованные каналы или оконные сообщения.
См. этот вопрос для примера внедрения использования SetParent в Delphi. См. этот вопрос для примера использования именованных каналов в Delphi.
Взгляните на код Delphi из HeidiSQL . Это отличный клиент MySQL с открытым исходным кодом, который реализует этот механизм.
Прочтите этот новостной элемент, опубликованный при выпуске Chrome:
«Google играет в догонялки с HeidiSQL?»
: -)
(источник : heidisql.com )
Харрив, вы можете использовать схему, основанную на плагинах . где у вас есть основное приложение и функция динамической загрузки новостей. Здесь есть несколько библиотек, которые я оставлю.
Frameworks
Учебники
Пока.
Взгляните на: http://blogs.microsoft.co. il / blogs / maxim / archive / 23.09.2008 / curiosity-kill-the-programmer-multiprocess-browser.aspx . Источник приложения находится в CSharp. Я уверен, что вы сможете адаптировать его к Delphi.
Вы можете разделите логику вашего приложения и выполните ее в нескольких потоках. Сюда, если одна часть логики вашего приложения зависает, у вас все еще есть отзывчивое приложение. Но вы не сможете разместить графический интерфейс в нескольких потоках. VCL требует, чтобы вы выполняли все связанные с графическим интерфейсом элементы в основном потоке.
Я не уверен в том, как работает Delphi, но стандартная процедура для многопроцессного программирования является разветвленной.
Вы создайте новый процесс с любым кодом. Передайте информацию разветвленному процессу и позвольте ему выполнять все, что он хочет.
Не могу объяснить многопроцессорное программирование в одном ответе потока. Но посмотрите сами.