Пользовательские компоненты - как управлять? - PullRequest
3 голосов
/ 01 марта 2010

Я сделал пару программ, которые я выпускаю как бесплатную на моей веб-странице. Одна из этих программ использует TSpinEdit для ввода некоторого числа. Это работает довольно хорошо, поэтому у меня не было никакой причины использовать что-либо еще.

Однако вчера один пользователь сказал мне, что ему не нравятся маленькие кнопки. Я не могу не согласиться, потому что, ну, они есть. К сожалению, единственный способ сделать кнопки больше, это увеличить элемент управления, и это не очень приятно. Вместо этого я решил немного изменить компонент, чтобы кнопки располагались рядом друг с другом, а не друг над другом.

Теперь Delphi не позволит мне включить этот новый компонент непосредственно в DFM, потому что в данный момент он не установлен - это просто файл, который добавлен в проект. Очевидно, что было бы неплохо изменить это - не только потому, что это позволит мне сохранить элементы управления в DFM, но и потому, что это позволит мне более легко повторно использовать измененный компонент - поэтому мне придется создать пакет и добавить его туда. Хорошо, я могу это сделать.

Но это подводит меня к моему вопросу: как мне управлять этим пакетом?

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

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

Ответы [ 4 ]

2 голосов
/ 01 марта 2010

Как мне управлять этим пакетом?

Вы можете добавить любой компонент в свой пакет, и при установке пакета все эти пользовательские компоненты устанавливаются в Delphi IDE.

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

Обычно вы используете пакеты только времени разработки для установки экспертов IDE или редакторов свойств. На самом деле все, что просто взаимодействует с IDE и не имеет ничего общего с скомпилированным файлом.

Пакеты, которые являются как средой исполнения, так и средой разработки, - это те, которые вы обычно добавляете в свои компоненты и устанавливаете их в IDE. Такие пакеты взаимодействуют с IDE, но также также компилируются в создаваемый файл.

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

Если у вас есть код, который настраивает IDE или добавляет некоторые функции в IDE, поместите их в пакет только для времени разработки.

Если у вас есть компоненты, которые будут использоваться в ваших скомпилированных приложениях, вы можете поместить их в пакеты времени исполнения и времени разработки.

Я использую контроль версий, конечно, так распространение изменений в коде компонента между моим рабочим столом и ноутбуком нет проблема - но мне нужно будет восстановить пакеты вручную на каждом рабочая станция каждый раз, когда я делаю изменить, или есть хитрость, я должен использовать?

Если вы используете одну и ту же версию Delphi как на своем ноутбуке, так и на ПК, то после изменения исходного кода вам придется хотя бы один раз пересобрать пакет, чтобы создать скомпилированный файл BPL для вашего пакета. После компиляции файла BPL его можно скопировать на другой компьютер (в папку, в которой хранятся файлы BPL. По умолчанию в Delphi 2010 это C: \ Users \ Public \ Documents \ RAD Studio \ 7.0 \ Bpl) скопируйте файлы DCU на этот компьютер и запустите Delphi IDE на этом компьютере. Delphi IDE автоматически загрузит недавно созданный файл BPL для вас. Короче говоря, если на всех ваших машинах используется одна и та же версия компилятора Delphi, вы можете один раз скомпилировать пакет и использовать скомпилированный пакет на других машинах, не перестраивая пакет.

2 голосов
/ 01 марта 2010

У меня есть несколько «моих» компонентов, которые сгруппированы в один пакет. В опциях пакета установите «перестроить по необходимости». Я полагаю, что это помогает, по крайней мере, в моем случае (я разрабатываю приложение как на своем домашнем ПК, так и на ноутбуке, используя SVN) - он перекомпилирует пакет во время компиляции проекта, но это время выполнения (общий пакет; приложение и его плагины). Я не уверен насчёт времени разработки, боюсь, вам придется переустанавливать их вручную каждый раз, когда вы что-то меняете ...

Или, если вы используете тот же delphi versio, почему бы вам не поместить бинарные файлы (.bpl, .dcp) в общую (версионную) папку?

0 голосов
/ 01 марта 2010

Один пакет cs Несколько пакетов: все сводится к тому, как вы распространяете свое программное обеспечение. Наличие нескольких пакетов для нескольких компонентов позволяет лучше контролировать то, что вам нужно распространять (в форме пакетов исходного кода или среды выполнения). Вам, как разработчику, будет проще иметь один более крупный пакет: только один большой пакет, который нужно перестраивать при внесении изменений.

Для своих компонентов я решил использовать несколько пакетов; Теперь я жалею о своем решении, но уже слишком поздно что-либо менять. Когда мне нужно настроить новую рабочую станцию, мне нужно выяснить, какие пакеты нужно включить и в каком порядке их нужно скомпилировать. Если бы я использовал только один большой пакет, я бы просто вынул пакет из Version Control (я использую JEDI) и BUILD, вот и все. Большой пакет будет работать для меня просто отлично, потому что я не распространяю исходные файлы и не распространяю пакеты времени выполнения.

0 голосов
/ 01 марта 2010

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

Мы создаем группу проектов, которая включает основное приложение и все компоненты (кроме стандартных Delphi), которые использует приложение. Под папкой приложения есть папка для хранения исходного кода для всех компонентов. Папки с компонентами обычно используются в системе контроля версий, чтобы избежать дублирования, но при необходимости могут быть разветвлены.

Мы всегда создаем ярлыки для запуска Delphi, настроенного для конкретного приложения, над которым мы работаем (используя флаг командной строки -r).

Все это означает, что мы можем создать ветку релиза, которая включает компоненты на момент выпуска, и у нас может быть запущено несколько экземпляров Delphi, каждый из которых настроен на использование правильных компонентов для версии приложения, над которым работает.

Однако, если вы воспользуетесь этим подходом, вы должны будете создать отдельные выходные каталоги BPL / DCP для каждого экземпляра Delphi и убедиться, что вы удалили каталог BPL по умолчанию из пути поиска.

...