Добавление пользовательского элемента управления в другой пользовательский элемент управления - PullRequest
1 голос
/ 27 марта 2011

Я пытаюсь создать новую сенсорную клавиатуру.

Сначала я создал кнопки, которые я получил из кнопок скорости. Это сделано, теперь мне нужно создать несколько кнопок и расположить их где-нибудь. Это я застрял.

Я создал новый компонент, который я наследую от TGraphicControl (это должна быть моя новая сенсорная панель), но я не знаю, как добавить компоненты на холст. Я на самом деле не знаю, должен ли я добавить их на холст или в какой-либо другой компонент (например, панель)!?!

Мой подход в порядке?

Заранее спасибо.

Ответы [ 2 ]

6 голосов
/ 27 марта 2011

Если вы создаете пользовательский визуальный элемент управления, вам нужно создать кнопки и расположить их вручную. Например:

TOnScreenKeyboard = class(TWinControl)
public
  constructor Create(AOwner: TComponent);
end;

[...]

constructor TOnScreenKeyboard.Create(AOwner : TComponent)
var
  TempButton : TSpeedButton;
begin
  inherited;
  TempButton := TSpeedButton.Create(self);
  TempButton.Parent := self;
  TempButton.Top := 10;
  TempButton.Left := 15;
  TempButton.Caption := 'A';
end;

Вы можете поместить создание кнопки в цикл и расположить каждую в соответствии с тем, где она должна быть.

(Я написал это с ног на голову, и я больше не пишу много Паскаля, так что могут быть небольшие ошибки! Но это должно помочь вам начать.)

1 голос
/ 27 марта 2011

Из-за вашей формулировки и путаницы между Panel, Canvas и пользовательскими элементами управления в целом, я предполагаю, что вы новичок в Delphi. Вам нужно узнать о фреймах: ссылка на документацию embarcadero docwiki

Кадры позволяют создавать повторно используемые части графического интерфейса. Вы используете IDE для «рисования» фрейма, затем вы можете поместить этот составной элемент управления (фрейм) на формы или другие фреймы. Это очень мощная функция, и концептуально она очень близка к тому, что другие языки называют «пользовательскими элементами управления» (очень близко к тому, что asp.net или WPF считают пользовательским элементом управления).

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

...