| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как создать форму с визуальным компонентом |
| Автор: кварк 15.3.2003, 01:27 |
| Задача: по нажатию кнопки создать форму, в которой есть TMemo, растянутый во всю клиентскую область. Все надо сделать ручками. Вот код: procedure TForm1.Button1Click(Sender: TObject); var tf : TForm; mm : TMemo; mwc : boolean; begin try tf := TForm.Create(self); tf.Caption := 'Форма, созданная ручками'; mwc := true; try mm := TMemo.Create(tf) except mwc := false end; tf.ShowModal; finally {try - в самом начале} if mwc then mm.Free; tf.Free end end; И теперь проблемы: 1) Форма создается и отображается, а Memo у меня не видно. 2) Как написать для TMemo процедуру обработки события OnKeyDown? Мои шаги: mm.OnKeyDown := Form1.KeyDown; к успеху не привели. Неужели подобным образом ничего нельзя сделать? Или надо описать свой класс, унаследованный от TMemo? |
| Автор: AntonSaburov 15.3.2003, 02:05 |
| Положи на форму кнопку и сделай нижеприведенный код. procedure TForm1.Button1Click(Sender: TObject); var mm : TMemo; begin mm := TMemo.Create(Self); mm.Parent := Self; mm.OnKeyDown := FormKeyDown; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin ShowMessage('1'); end; |
| Автор: кварк 15.3.2003, 02:30 |
| О! Точно! Все дело - Parent'e. Я ни за что бы не догадался присваивать что-то Parent'у после Create(self). И OnKeyDown заработал. Ну вот - порядок. Спасибо. |
| Автор: serious 15.3.2003, 03:43 | ||
А можно было еще вот так:
Но это уже для экстремалов |
| Автор: MovAx 15.3.2003, 04:13 |
| Form1.InsertControl(mm); |