Delphi: Управление несколькими экземплярами Tframes

StackOverflow https://stackoverflow.com/questions/4749438

  •  13-10-2019
  •  | 
  •  

Вопрос

В эта статья Существует объяснение того, как использовать Tframes в качестве альтернативы TTABSheets в PageControl Delphi.

Я размышлял о подобном упражнении, которое, по -видимому, приведенное выше не обеспечивает решение, и для которого мое решение кажется чрезмерно сложным.

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

Из -за характера разработанного приложения у нас может быть несколько копий любого открытого кадра в любой конкретный момент (с различным содержанием каждой вкладки, но не в дизайне), чтобы пользователь мог сравнить детали 2/3 разных предметы одновременно.

Например, в одном сеансе у нас может быть открыто 3 вкладка, все дизайны кадров A. В другом случае у нас может быть 3 вкладка, открывая каждую из кадров A, B и C.

Дизайн должен быть достаточно гибким, чтобы мы могли добавить кадры в дизайн по запросу.

На данный момент, которое у меня есть, состоит в том, чтобы иметь отдельные Tlists, управляющие каждым типом кадры, которые мы открыты, с, возможно, мастер -Tlist, чтобы отслеживать открытые вкладки. Как я уже сказал, из -за сложных.

У кого -нибудь есть предложение о том, как это можно обратиться проще?

Это было полезно?

Решение

Я бы, наверное, оставил мастер -Tlist из экземпляров кадров.

Если они вам нужны, вы сможете получить их, переносив TpageControl напрямую или через каждый из ваших отдельных Tlist для каждого типа кадра.

Кроме того, ваш подход звучит разумно.

Другие советы

У меня есть приложение, которое управляет кадрами на одной панели с моим собственным контролем меню, чтобы контролировать, какой кадр виден. Когда мне нужно сделать видимую кадр, я просто установил видимый: = false для каждого кадра на панели, за исключением того, что я хочу. Я контролирую то, что идет на панель, поэтому я знаю, что, по крайней мере, каждое управление является TFRAME, и я могу добраться до каждого кадра, итерация над свойством управления панели. Затем я использую интерфейсы, чтобы общаться между моей основной формой и своими кадрами.

Теперь, если вы хотите использовать стандартный интерфейс Windows, вы все равно можете использовать элемент управления страницей, как вы предложили, вы знаете, что на каждом Ttabsheet есть один Tframe, и вы можете проверить его тип и работать с ним по мере необходимости. Я не понимаю, зачем вам понадобится tlist, потому что, если вам действительно нужно получить «Список Tframes», вы все равно могли бы построить его в диамически, итерация над Ttabsheets в управлении страницей.

Альтернативой, которая будет работать так же, как и мой первый подход, но принесет вам хорошие вкладки Windows, было бы использовать TtabControl вместо TpageControl. С TtabControl вы в основном получите экземпляр TSTrings (в свойстве вкладок), который представляет все вкладки. Поскольку это TStrings, вы можете связать объект (то есть ваш TFRAME) с каждым элементом и, следовательно, с каждой вкладкой. Когда вы нажимаете на вкладку, вы все скрываете и показываете правильный Tframe. У вас также есть свой список, потому что он прикреплен к TtabControl через свойство вкладок. Вы просто должны справиться с видимостью кадров сами.

Мы используем TpageControl и создаем время выполнения, потомку TTABSHEEL, который имеет новую собственность для нашей собственной TFRAME (нам не нужно сканировать .controls или .cponents для поиска в нашем кадре каждый раз).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top