|
Платные хостинги
Раскрутка сайта
Книги по программированию
Как создать форму с визуальным компонентом, ручками
- Задача: по нажатию кнопки создать форму, в которой есть 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 endend;И теперь проблемы: 1) Форма создается и отображается, а Memo у меня не видно. 2) Как написать для TMemo процедуру обработки события OnKeyDown? Мои шаги: mm.OnKeyDown := Form1.KeyDown; к успеху не привели. Неужели подобным образом ничего нельзя сделать? Или надо описать свой класс, унаследованный от TMemo?
- Положи на форму кнопку и сделай нижеприведенный код.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;
- О! Точно!Все дело - Parent'e.Я ни за что бы не догадался присваивать что-то Parent'у после Create(self).И OnKeyDown заработал. Ну вот - порядок.Спасибо.
- А можно было еще вот так:Код CreateWindow (PChar('edit'), PChar('OurMemo'), WS_VISIBLE+WS_SYSMENU+ WS_SIZEBOX+ES_MULTILINE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, Form1.Handle, 0, 0, 0);highlightSyntax('delphiMDlkMW','delphi');Но это уже для экстремалов
- Form1.InsertControl(mm);
Интернет казино
Онлайн игры
Увеличение члена
Купить DVD
|