Читать «Виртуальная библиотека Delphi» онлайн - страница 149

Unknown

end;

Вопрос:

Можно ли динамически изменять свойство "owner" компонента во время выполнения программы?

Ответ:

Вы можете менять свойство "owner" и после создания компонента с помощью методов InsertComponent() и RemoveComponent().

Вопрос:

Как очистить содержимое Canvas'а?

Ответ:

Просто нарисуйте прямоугольник любого цвета.

Пример:

Canvas.Brush.Color := ClWhite;

Canvas.FillRect(Canvas.ClipRect);

Вопрос:

Можно ли динамически менять какая форма считается главной в приложении во время работы программы?

Ответ:

Можно, но только во время загрузки приложения. Чтобы сделать это выберите "View→Project Source" и измените код инициализации приложения, так что порядок создания форм зависил от какого-то условия.

Примечание: Вам придется редактировать этот код, если Вы добавите в приложение новые формы.

begin

 Application.Initialize;

 if <какое-то условие> then begin

  Application.CreateForm(TForm1, Form1);

  Application.CreateForm(TForm2, Form2);

 end else begin

  Application.CreateForm(TForm2, Form2);

  Application.CreateForm(TForm1, Form1);

 end;

end.

Вопрос:

Как программно "щелкнуть" по компоненту speed button? Я пытался использовать SendMessage но у Speedbuttons нет "handle".

Ответ:

В примере используется метод Perform класса TControl для отправки сообщения.

Пример:

procedure TForm1.SpeedButton1Click(Sender: TObject);

begin

 ShowMessage('clicked');

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

 SpeedButton1.Perform(WM_LBUTTONDOWN, 0, 0);

 SpeedButton1.Perform(WM_LBUTTONUP, 0, 0);

end;

Вопрос:

Можно ли отключить определенный элемент в RadioGroup?

Ответ:

В примере показано как получить доступ к отдельным элементам компонента TRadioGroup.

Пример:

procedure TForm1.Button1Click(Sender: TObject);

begin

 TRadioButton(RadioGroup1.Controls[1]). Enabled := False;

end;

Вопрос:

Почему методы рисования Delphi (например MoveTo и LineTo) рисуют на один пиксел короче?

Ответ:

Так работает большинство графических систем, включая Windows. Библиотека VCL просто передает вызовы в функции GDI. Если Вы хотите нарисовать линию с последним пикселом включительно просто добавте единицу к координатам.

Вопрос:

Как показать подсказки "hints" для элементов меню?

Ответ:

В примере создается обработчик события Application.Hint — подсказки меню изображаются на status panel.

Пример:

type TForm1 = class(TForm)

 Panel1: TPanel;

 MainMenu1: TMainMenu;

 MenuItemFile: TMenuItem;

 MenuItemOpen: TMenuItem;

 MenuItemClose: TMenuItem;

 OpenDialog1: TOpenDialog;

 procedure FormCreate(Sender: TObject);

 procedure MenuItemCloseClick(Sender: TObject);

 procedure MenuItemOpenClick(Sender: TObject);

private

 {Private declarations}

 procedure HintHandler(Sender: TObject);

public

 {Public declarations}