Кастомные компоненты - как управлять?

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

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

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

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

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

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


person Michael Madsen    schedule 28.02.2010    source источник


Ответы (4)


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

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

person migajek    schedule 28.02.2010
comment
Хотя я мог бы добавить BPL в свой репозиторий SVN, мне действительно не нравится помещать двоичные файлы в систему контроля версий. Это похоже на действительно плохой взлом, и должен быть лучший способ решения этой проблемы. - person Michael Madsen; 01.03.2010
comment
проблема в том, что вам нужно обновить двоичный файл перед запуском delphi ... может быть, какой-то хук build-when-updated? Я не уверен, позволяет ли TortoiseSVN / SVNClient подключать скрипты ... - person migajek; 01.03.2010
comment
Я не особо возражаю против обновления моей рабочей копии перед запуском Delphi - у меня нет SVN, интегрированного с Delphi, так что я бы все равно это сделал. TortoiseSVN действительно поддерживает клиентские сценарии ловушек, поэтому можно было бы обойти проблему, принудительно перестроив. Мне просто нужно установить компоненты в IDE и настроить подключение на каждой машине. Это, безусловно, выполнимо, и я был бы гораздо счастливее сделать это таким образом, но все же кажется, что должен быть лучший способ - даже если у меня сложится впечатление, что его нет. - person Michael Madsen; 01.03.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 на этот компьютер и запустите на нем IDE Delphi. Delphi IDE автоматически загрузит для вас только что созданный файл BPL. Короче говоря, если все ваши машины используют одну и ту же версию компилятора Delphi, то вы можете скомпилировать свой пакет один раз и использовать скомпилированный пакет на других машинах без перекомпоновки пакета.

person vcldeveloper    schedule 01.03.2010

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

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

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

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

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

person Alistair Ward    schedule 01.03.2010

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

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

person Cosmin Prund    schedule 01.03.2010
comment
Файл .BPG (теперь .groupproj в новом Delphis) со всеми пакетами, чтобы вы могли выполнить Build All и просто выполнить установку из пакета времени разработки регистрации. И вы можете включить его в Контроль версий. - person Fabricio Araujo; 29.06.2011