Delphi IDE, компилятор, отладчик, редактор
Скажем, вы имеете компонент TContainer, содержащий TContainedClass в свойстве с именем 'Contained' - попробуйте добавить следующую строку к процедуре Register вашего компонента:
Code: |
RegisterPropertyEditor(TypeInfo(TContainedClass), TContainer, 'Contained', TClassProperty); |
- Подробности
- Родительская категория: Delphi IDE, компиллятор, отладчик, редактор
- Категория: Работа с ToolsAPI (Эксперты и редакторы свойств)
Редактор свойства, пример которого приведен ниже, имеет ограничение на устанавливаемые цвета: только clRed, clWhite или clBlue.
- Подробности
- Родительская категория: Delphi IDE, компиллятор, отладчик, редактор
- Категория: Работа с ToolsAPI (Эксперты и редакторы свойств)
Предупреждение: Окно CPU еще до конца не оттестировано и может иногда приводить к ошибкам. Если у вас есть проблемы с отладчиком, или при запуске вашей программы вы не можете им воспользоваться, окно CPU может помочь решить ваши проблемы. Обычно его не требуется включать, если только у вас не "особый случай".
В Delphi 2 эта характеристика встроена, но по умолчанию выключена, называется это окно CPU window, или DisassemblyView. Она легка в использовании, может быть полезной в отладке и сравнении кода при его оптимизации.
Для активизации этой характеристики, запустите REGEDIT и отредактируйте регистры описанным ниже образом. Найдите ключ HKEY_CURRENT_USER\Software\Borland\Delphi\2.0\Debugging. Создайте по этому пути строковый ключ с именем "ENABLECPU". Значение нового ключа должно быть строкой "1". Это все. Теперь в Delphi IDE появился новый пункт меню View|CPUWindow. При его активизации выводится новое окно.
- Подробности
- Родительская категория: Delphi IDE, компиллятор, отладчик, редактор
- Категория: Среда Дэлфи
Давайтерассмотримсозданиепростейшегоодноуровневогоконтекстногоменюнасвоемкомпоненте, котороебудетоткрыватьсяприщелчкеправойкнопкойпонемувсамомверхуконтекстногоменю Delphi.
Преждевсеговамследуетразделитькодвашегокомпонентана Design-time и Run-time. Дляэтогоперенеситевашкомпонентвмодуль, сназванием, например, MyComponent.pas, апроцедурырегистрацииеговпалитрекомпонентов (procedure Register ит.д.) вмодуль, сназванием, например, MyComponentReg. Натакиемерыприходитсяидтииз-затого, что Borland невключилависходныекодыисходникфайла Proxies.pas.
Итак, получимдвафайла:
MyComponent.pas:
Code: |
unit MyComponent;
interface
uses SysUtils, Classes;
type TMyComponent = class(TComponent) private { Private declarations } protected { Protected declarations } public { Public declarations } published { Published declarations } end; |
- Подробности
- Родительская категория: Delphi IDE, компиллятор, отладчик, редактор
- Категория: Работа с ToolsAPI (Эксперты и редакторы свойств)
Горячие клавиши в окне редактора
F1 |
контекстная помощь |
F3 |
продолжить поиск (начать - Ctrl+F ) |
F4 |
выполнить программу до положения курсора |
F5 |
поставить Break Point |
F7 |
трассировать с заходом в процедуры |
F8 |
трассировать без захода в процедуры |
F9 |
запустить программу |
F10 |
активизировать главное меню |
F11 |
открыть/закрыть Object Inspector |
F12 |
переход между формой и кодом |
Ctrl-F1 |
контекстная помощь |
Ctrl-F2 |
прервать выполнение программы |
Ctrl-F3 |
посмотреть стек |
Ctrl-F4 |
закрыть текущий модуль |
Ctrl-F5 |
список переменных для просмотра (Watch List) |
Ctrl-F7 |
просмотр значений переменных и их изменение |
Ctrl-F9 |
компилировать проект |
Ctrl-F10 |
активизировать главное меню |
Ctrl-F11 |
открыть проект |
Ctrl-F12 |
список модулей проекта |
Shift-F7 |
трассировка заходя в каждую процедуру и перескакивание в каждое возникающее событие |
Shift-F10 |
всплывающее меню |
Shift-F11 |
добавить модуль к проекту |
Shift-F12 |
список форм проекта для быстрой навигации |
Alt-F4 |
закрыть проект и все файлы |
Alt-F6 |
переключение окон |
Alt-F8 |
переход к следующей ошибке компиляции |
Alt-F7 |
переход к предыдущей ошибке компиляции |
Ctrl-Shift-F4 |
закрыть проект и все файлы |
Alt-Ctrl-F11 |
менеджер проектов |
Alt-Shift-F4 |
закрыть все окна, но проект не закрывать |
Ctrl-Shift-0..9 |
поставить метку 0..9 |
Ctrl-0..9 |
перейти на метку 0..9 |
Alt-0 |
список окон |
Ctrl-Enter |
открыть файл с именем слова на котором курсор стоит |
Ctrl+клик мышкой на слове |
перейти на определение этого слова |
Alt+выделение текста (мышкой или клавиатурой) |
выделение вертикального блока |
Ctrl+Shift+Up Ctrl+Shift+Down |
переход от объявления процедуры к ее реализации |
Ctrl-Shift-C |
закончить метод (если он описан - создать шаблон для реализации,если есть реализация - объявить метод) |
Ctrl+Space |
высветить список методов, свойств объекта (после точки) |
Ctrl+Shift+Space |
высветить список параметров функции |
Ctrl-Shift-E |
открыть эксплорер кода |
Ctrl-Shift-R |
начать/завершить запись макро |
Ctrl-Shift-P |
выполнить записанное макро |
Ctrl-Shift-T |
добавить в To Do лист |
Ctrl-Shift-U |
уменьшить отступ выделенного блока |
Ctrl-Shift-I |
увеличить отступ выделенного блока |
Ctrl-Shift-S |
сохранить как |
Ctrl-Shift-G |
вставить GUID |
Ctrl-Shift-B |
посмотреть иерархию классов |
Ctrl+Shift+Y |
удалить от курсора до конца строки |
Ctrl+Shift+Z |
redo |
Ctrl-Alt-W |
watch List |
Ctrl-Alt-R |
grep result |
Ctrl-Alt-T |
список потоков проекта |
Ctrl-Alt-A |
вставить дату |
Ctrl-Alt-S |
вызовы стека |
Ctrl-Alt-H |
шаблон для документации модуля |
Ctrl-Alt-L |
локальные переменные |
Ctrl-Alt-V |
история событий |
Ctrl-Alt-B |
список Break Points |
Ctrl-Alt-M |
Модули |
Ctrl-N |
вставить пустую строку, курсор остается на текущей строке |
Ctrl-M Enter |
вставить пустую строку, курсор переходит на следующую строку |
Ctrl-E |
поиск по мере введения символов (Incremental Search) |
Ctrl-R |
поиск и замена |
Ctrl-A |
выделить весь текст (только Дельфи 6+) |
Ctrl-T |
удалить от курсора до конца слова |
Ctrl-Y |
удалить строку |
Ctrl-O, O |
вставить все текущие опции компиляции по позиции курсора |
Ctrl+O, C |
marks a column block |
Ctrl+O, I |
marks an inclusive block |
Ctrl+O, K |
marks a non-inclusive block (default when the editor starts) |
Ctrl+O, L |
marks a line as a block |
Ctrl-P |
префикс, после которого можно вставить любой ASCII код |
Ctrl-S |
сохранить текущий файл |
Ctrl-F |
открыть диалог поиска |
Ctrl-J |
лист шаблонов |
Ctrl-K, С |
копирование блока без буфера обмена |
Ctrl-Z |
отмена |
Ctrl-X |
вырезать |
Ctrl-С |
копировать |
Ctrl-V |
вставить |
Ctrl-B |
список буферов |
Ctrl+K, R |
читать блок из файла |
Ctrl+K, W |
записать блок в файл |
Ctrl+O, U |
изменить регистр букв в блоке на противоположный |
Ctrl+O, A |
диалог: "открыть файл" |
Ctrl+O, G |
переход к строке номер... |
Ctrl+K, E |
перевод слова в нижний регистр |
Ctrl+K, T |
выделить слово |
Ctrl+K, Y |
удалить выделенный блок |
Ctrl+K, U |
unindent block |
Ctrl+K, I |
indent block |
Ctrl+K, P |
печать текста |
Ctrl+K, F |
перевод слова в вверхний регистр |
Alt+[ Alt+] |
найти соответствующую скобку |
Ctrl+Q, P |
вернуть курсор на место последнего редактирования |
- Подробности
- Родительская категория: Delphi IDE, компиллятор, отладчик, редактор
- Категория: Среда Дэлфи
Если вы присвоили свойству имя TableName, то полный цикл создания редактора свойств включает следующие шаги:
Опишите класс редактора свойства:
Code: |
type TTableNameProperty = class(TStringProperty) function GetAttributes: TPropertyAttributes; override; procedure GetValues(Proc: TGetStrProc); override; end;
implementation
{ TTableNameProperty } function TTableNameProperty.GetAttributes: TPropertyAttributes; begin Result := [paValueList]; end;
procedure TTableNameProperty.GetValues(Proc: TGetStrProc); var TableName: String; I: Integer; begin { здесь вы должны добавить свой код, ?тобы с помощью цикла обойти имена всех таблиц, включенных в список } for I := 0to ???? do begin TableName := ????[I]; Proc(TableName); end; end; |
Затем зарегистрируйте данный редактор свойства следующим образом:
Code: |
RegisterPropertyEditor(TypeInfo(string), TcsNotebook, 'TableName', TTableNameProperty); |
- Подробности
- Родительская категория: Delphi IDE, компиллятор, отладчик, редактор
- Категория: Работа с ToolsAPI (Эксперты и редакторы свойств)
Командной строкой:
Delphi32.EXE -ns
- Подробности
- Родительская категория: Delphi IDE, компиллятор, отладчик, редактор
- Категория: Среда Дэлфи
Компонент во время проектирования может знать имена текущих модулей и имя проекта. Все это можно получить с помощью ToolServices (см. файл TOOLINTF.PAS)
Имя текущего проекта можно получить с помощью вызова GetProjectName, список модулей/форм - с помощью функции GetUnitCount, которая возвратит количество модулей и затем с помощью GetUnitName(i) мы можем получить имя каждого модуля (также и с формами).
Вот примерный образец кода (получение и запись имен всех модулей/форм в StringGrid и имени проекта в Label):
Code: |
procedure TInformationFrm.FormActivate(Sender: TObject); { необходимо: StringGrid1 (2 колонки, масса строк), Label1, Label2 } var i, j: Integer; Tmp: string; begin StringGrid1.Cells[0, 0] := 'модулей:'; StringGrid1.Cells[1, 0] := 'форм:'; if ToolServices <> nilthen with ToolServices do begin Label1.Caption := ExtractFileName(GetProjectName); { простое имя } Label2.Caption := GetProjectName; { полное правильное имя пути } for i := 0to GetUnitCount do begin Tmp := ExtractFileName(GetUnitName(i)); StringGrid1.Cells[0, i + 1] := Tmp; Tmp := ChangeFileExt(Tmp, '.DFM'); for j := 0to GetFormCount do if ExtractFileName(GetFormName(j)) = Tmp then StringGrid1.Cells[1, i + 1] := Tmp end; end; end; |
- Подробности
- Родительская категория: Delphi IDE, компиллятор, отладчик, редактор
- Категория: Работа с ToolsAPI (Эксперты и редакторы свойств)
Командной строкой: Delphi32.exe -np
- Подробности
- Родительская категория: Delphi IDE, компиллятор, отладчик, редактор
- Категория: Среда Дэлфи
Эксперты в DELPHI, илиПрограммист, упроститесебежизнь
Имеющее множество достоинств и довольно популярное средство разработки Delphi позволяет расширять функциональные возможности среды разработчика. Речь идет не о косметических изменениях в интерфейсе и не о добавлении компонентов или их наборов, а о придании рабочему окружению программиста новых полезных возможностей, не предусмотренных его создателями. Для решения подобной задачи в Delphi можно воспользоваться так называемыми экспертами. Вспомните, как удобно, ответив на несколько вопросов, создать готовую форму для вывода содержимого таблиц. Или, щелкнув мышью на нужном элементе в списке New Items, получить “костяк” вашего будущего проекта (рис. 1).
Рис. 1. Многиевозможности Delphi реализуютсяспомощьюэкспертов
Чтоэто—стандартныевозможностирабочейсреды? Да, ноприменитьихможнолишьспомощьюэксперта. Отом, какэтосделать, ипойдетречьдалее.
Экспертыв Delphi —чтоэтотакое?
- Подробности
- Родительская категория: Delphi IDE, компиллятор, отладчик, редактор
- Категория: Работа с ToolsAPI (Эксперты и редакторы свойств)
HKEY_CURRENT_USER\Software\Borland\Delphi\4.0\Debugging
ViewCPUOnException=0
- Подробности
- Родительская категория: Delphi IDE, компиллятор, отладчик, редактор
- Категория: Среда Дэлфи
Страница 5 из 6