![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Как программно создать кнопку?
![]() |
|
#2
|
||||
|
||||
|
Код:
uses StdCtrls; var b : TButton; procedure TForm1.FormCreate(Sender: TObject); begin b := TButton.Create(Self); b.Parent := Form1; // тут можно изменить свойства кнопки end; procedure TForm1.FormDestroy(Sender: TObject); begin b.Free; end; |
|
#3
|
||||
|
||||
|
Просто объявляешь переменную типа TButton. А затем выделяешь ей память вот так - tbutton.create(Self); Затем когда она будет не нужна освобождаешь память которую ты выделил для кнопки - Имя переменной.Free
|
|
#4
|
||||
|
||||
|
moo2k еще надо указать компонент родитель, т.е. где будет раполагаться кнопка b.Parent := Form1. А если например написать b.Parent := Panel1 то кнопка появится не на форме, а на панели Panel1.
|
|
#5
|
||||
|
||||
|
Можно еще на WinAPI.
Код:
procedure TForm1.FormShow(Sender: TObject);
var
But: HWND;
Fnt: HWND;
begin
Fnt:=CreateFont(-12, 0, 0, 0, 0, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH or FF_DONTCARE, 'Terminal');
But:=CreateWindow('Button', 'ButtonName', WS_CHILD or BS_PUSHBUTTON or WS_VISIBLE, 2, 2, 100, 25, Handle, 2, HInstance, nil);
SendMessage(But, WM_SETFONT, Fnt, 0);
end; |
|
#6
|
|||
|
|||
|
Огромное спасибо
![]() |
|
#7
|
|||
|
|||
|
Вопрос! А если я не освобожу память и закрою программу она автоматом освободиться?
|
|
#8
|
||||
|
||||
|
Нет, надо обязательно самому удалять.
|