Если вы не уверены, что объект
if Sender is TEdit then …
2. Проблемы с полями класса типа TObject, TTable и т.д.
Я объявляю поле класса как
Дело в том, что в Delphi все экземпляры объектов, объявленых как class, являются динамическими. Соответственно поле MyTable, объявленное как
type
TMyClass = class(TObject)
public
MyTable: TTable;
constructor Create;
destructor Destroy; override;
end;
является указателем на класс
constructor TMyClass.Create;
begin
MyTable := TTable.Create(nil);
MyTable.DatabaseName := 'DBDEMOS';
end;
destructor TMyClass.Destroy;
begin
MyTable.Free;
end;
Подробнее см. Changes in Object Pascal Language в документации или on-line help.
3. Как закрыть модальную форму (ShowModal)? И вообще, каков лучший способ закрыть любую форму?
Вообще говоря, нужно вызывать метод
Если вы хотите уничтожить форму без вызова события
Модальные формы "прекращают свой модальный статус", когда вы устанавливаете свойство
Result := Form.ShowModal;
4. Перемещение существующих компонентов на TPanel, TGroup и т.п.
Я поместил кнопку (или что-то другое) на форму, затем поместил панель, и решил переместить кнопку на панель, но ничего не получилось.
Действительно, чтобы поместить кнопку на панель, необходимо на форму сначала поместить панель, выбрать ее, а затем уже помещать кнопку.
Но и в вашей ситуации есть решение. Скопируйте (Copy) или вырежьте (Cut) нужный компонент, выберите панель, и сделайте вставку (Paste). Рекомендуется предварительно "подогнать" копируемый компонент в левый верхний угол формы, иначе компонент на панели может выпасть из "пределов видимости" панели (или любого другого группового компонента).
Если компонент все-таки "выпал" из пределов видимости - найдите этот компонент в Инспекторе Объектов, и установите нужные значения его свойств
Используя группы компонент можно огранизовать форму-шаблон, на которой можно складывать (например в Notebook) компоненты с предварительно заданными свойствами, отличными от стандартных. Это решение проще чем добавлять такие компоненты в палитру компонент — не увеличивается размер библиотеки компонентов DCL (Delphi 3.0 не считается), не загромождается палитра компонент.
Учтите, что при таком копировании компонент их имена меняются на новые (
5. Как можно добавить новый компонент на страницу TTabbedNoteBook во время выполнения программы? Как нужно определить свойство Parent для этого компонента?
Для того, чтобы добавить компонент на страницу
var
NewButton: TButton;
begin
NewButton := TButton.Create(Self);
NewButton.Parent := TWinControl(TabbedNotebook1.Pages.Objects[0]);