Форум: "Начинающим";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
ВнизДинамическое создание компонентов... Найти похожие ветки
← →
apic © (2006-08-15 17:18) [0]Привет мастерам!!! Тут у меня появилась мысль... Хочу программно добавить на форму кнопку и присвоить ей процедуру обработки на нажатие. Возможно ли это, и если да, то как?
И еще хочу программно копировать вкладку TTabSheet, как это телают многостраничные текстовые редакторы.
Заранее благодарен.
← →
clickmaker © (2006-08-15 17:21) [1]
> Тут у меня появилась мысль... Хочу программно добавить на
> форму кнопку и присвоить ей процедуру обработки на нажатие
свежая мысль )
Btn := TButton.Create(Self);
Btn.Parent := Self;
Btn.Left :=
Btn.Top :=
Btn.OnClick := ButtonClick;
...
procedure TForm1.ButtonClick(Sender: TObject);
begin
end;
← →
apic © (2006-08-15 17:38) [2]Спасибо, а как быть с TTabSheet?!!
← →
Ega23 © (2006-08-15 17:56) [3]Тебе как её копировать? Со всем содержимым? Или просто новую вкладку создать?
← →
apic © (2006-08-15 18:05) [4]Желательно и так и так, но с содержимым важнее!!!
← →
Ega23 © (2006-08-15 18:15) [5]С содержимым - употеешь делать.
А так -With TTabSheet.Create(PageControl1) do
begin
PageControl:=PageControl1;
Caption:="Новая вкладка";
end;
← →
apic © (2006-08-15 18:18) [6]Огромное спасибо!!!
← →
apic © (2006-08-18 07:34) [7]Блин, а как удалить созданную вкладку...
← →
Loginov Dmitry © (2006-08-18 07:46) [8]Что-нить в духе:
PageControl.ActivePage.Free
← →
apic © (2006-08-18 17:31) [9]сэнкс....(то бишь спасибо)
← →
ffo © (2006-08-19 21:49) [10]
> Привет мастерам!!! Тут у меня появилась мысль... Хочу программно
> добавить на форму кнопку
Вот пример создания...без VCL
program bitbtn;
uses windows, messages;
const Btn0=10; //это список констант, через которые присходит идентификация кнопки, пославшей сообщение
Btn1=11; //константы можно и не использовать- это лишь улучшает читабельность программы
Btn2=12;
Btn3=13;
Btn4=14;
Btn5=15;
var wc : TWndClassEx;
wndMain : HWND;
Mesg : TMsg;
btns : array[0..6] of HWND;
icon : HICON;
function WindowProc(wnd:HWND; Msg : Integer; Wparam:Wparam; Lparam:Lparam):Lresult; stdcall;
Begin
case msg of
wm_destroy :
Begin
postquitmessage(0); exit;
Result:=0;
End;
wm_command://обрабытываем сообщения от кнопок
Begin
case loWord(wParam) of
Btn0 : messageBox(wnd,"IDI_APPLICATION","Имя константы",mb_ok);
Btn1 : messageBox(wnd,"IDI_EXCLAMATION","Имя константы",mb_ok);
Btn2 : messageBox(wnd,"IDI_ASTERISK","Имя константы",mb_ok);
Btn3 : messageBox(wnd,"IDI_HAND","Имя константы",mb_ok);
Btn4 : messageBox(wnd,"IDI_WINLOGO","Имя константы",mb_ok);
Btn5 : messageBox(wnd,"IDI_QUESTION","Имя константы",mb_ok);
end;
End;
else Result:=DefWindowProc(wnd,msg,wparam,lparam);
end;
End;
var xPos,yPos,nWidth,nHeight : Integer;
begin
wc.cbSize:=sizeof(wc);
wc.style:=CS_HREDRAW or CS_VREDRAW;
wc.lpfnWndProc:=@WindowProc;
wc.cbClsExtra:=0;
wc.cbWndExtra:=0;
wc.hInstance:=HInstance;
wc.hIcon:=LoadIcon(0,IDI_APPLICATION);
wc.hCursor:=LoadCursor(0,IDC_ARROW);
wc.hbrBackground:=COLOR_BTNFACE+1;
wc.lpszMenuName:=nil;
wc.lpszClassName:="Bit Buttons";
RegisterClassEx(wc);
xPos:=100;
yPos:=150;
nWidth:=320;
nHeight:=150;
wndMain:=CreateWindowEx(0,"Bit Buttons",
"Bitmap Buttons",
WS_OVERLAPPED or WS_SYSMENU,
xPos,yPos,nWidth,nHeight,0,0,
Hinstance,nil);
//создаем 6 кнопок
btns[0]:=CreateWindowEx(WS_EX_STATICEDGE,"button",nil,BS_ICON or WS_VISIBLE or WS_CHILD,10,10,40,40,wndMain,Btn0,hInstance,nil);
btns[1]:=CreateWindowEx(WS_EX_STATICEDGE,"button",nil,BS_ICON or WS_VISIBLE or WS_CHILD,60,10,40,40,wndMain,Btn1,hInstance,nil);
btns[2]:=CreateWindowEx(WS_EX_STATICEDGE,"button",nil,BS_ICON or WS_VISIBLE or ws_child,110,10,40,40,wndMain,Btn2,hInstance,nil);
btns[3]:=CreateWindowEx(WS_EX_STATICEDGE,"button",nil,BS_ICON or WS_VISIBLE or WS_CHILD,160,10,40,40,wndMain,Btn3,hInstance,nil);
btns[4]:=CreateWindowEx(WS_EX_STATICEDGE,"button",nil,BS_ICON or WS_VISIBLE or WS_CHILD,210,10,40,40,wndMain,Btn4,hInstance,nil);
btns[5]:=CreateWindowEx(WS_EX_STATICEDGE,"button",nil,BS_ICON or WS_VISIBLE or WS_CHILD,260,10,40,40,wndMain,Btn5,hInstance,nil);
Icon:=LoadIcon(0,IDI_APPLICATION);//получаем описатель одной из стандартных пиктограмм
sendMessage(btns[0],bm_setimage,2,icon);//вставляем пиктограмму в кнопку
icon:=LoadIcon(0,IDI_EXCLAMATION);
sendMessage(btns[1],bm_setimage,2,icon);
icon:=LoadIcon(0,IDI_ASTERISK);
sendMessage(btns[2],BM_SETIMAGE,2,icon);
icon:=LoadIcon(0,IDI_HAND);
sendMessage(btns[3],BM_SETIMAGE,2,icon);
icon:=LoadIcon(0,IDI_WINLOGO);
sendMessage(btns[4],BM_SETIMAGE,2,icon);
icon:=LoadIcon(0,IDI_QUESTION);
sendMessage(btns[5],BM_SETIMAGE,2,icon);
ShowWindow(wndMain,CmdShow);
While GetMessage(Mesg,0,0,0) do
begin
TranslateMessage(Mesg);
DispatchMessage(Mesg);
end;
end.
← →
Anatoly Podgoretsky © (2006-08-19 23:27) [11]ffo © (19.08.06 21:49) [10]
Все хорошо, только формы нет.
← →
Германн © (2006-08-20 00:21) [12]
> Anatoly Podgoretsky © (19.08.06 23:27) [11]
>
> ffo © (19.08.06 21:49) [10]
> Все хорошо, только формы нет.
Зато сразу 6 в 1! :-)
← →
Loginov Dmitry © (2006-08-20 09:39) [13]> Все хорошо, только формы нет.
и компонентов
← →
Anatoly Podgoretsky © (2006-08-20 11:51) [14]Мяукнул и скончался.
← →
XYZ © (2006-08-25 15:11) [15]
> program bitbtn;
> uses windows, messages;
>
> const Btn0=10; //это список констант, через которые присходит
> идентификация кнопки, пославшей сообщение
> Btn1=11; //константы можно и не использовать- это
> лишь улучшает читабельность программы
> Btn2=12;
> Btn3=13;
> Btn4=14;
> Btn5=15;
>
> var wc : TWndClassEx;
> wndMain : HWND;
> Mesg : TMsg;
> btns : array[0..6] of HWND;
> icon : HICON;
> function WindowProc(wnd:HWND; Msg : Integer; Wparam:Wparam;
> Lparam:Lparam):Lresult; stdcall;
> Begin
> case msg of
> wm_destroy :
> Begin
> postquitmessage(0); exit;
> Result:=0;
> End;
> wm_command://обрабытываем сообщения от кнопок
> Begin
> case loWord(wParam) of
> Btn0 : messageBox(wnd,"IDI_APPLICATION","Имя константы",
> mb_ok);
> Btn1 : messageBox(wnd,"IDI_EXCLAMATION","Имя константы",
> mb_ok);
> Btn2 : messageBox(wnd,"IDI_ASTERISK","Имя константы",
> mb_ok);
> Btn3 : messageBox(wnd,"IDI_HAND","Имя константы",mb_ok);
>
> Btn4 : messageBox(wnd,"IDI_WINLOGO","Имя константы",mb_ok);
>
> Btn5 : messageBox(wnd,"IDI_QUESTION","Имя константы",
> mb_ok);
> end;
>
> End;
> else Result:=DefWindowProc(wnd,msg,wparam,lparam);
> end;
>
> End;
>
> var xPos,yPos,nWidth,nHeight : Integer;
>
> begin
> wc.cbSize:=sizeof(wc);
> wc.style:=CS_HREDRAW or CS_VREDRAW;
> wc.lpfnWndProc:=@WindowProc;
> wc.cbClsExtra:=0;
> wc.cbWndExtra:=0;
> wc.hInstance:=HInstance;
> wc.hIcon:=LoadIcon(0,IDI_APPLICATION);
> wc.hCursor:=LoadCursor(0,IDC_ARROW);
> wc.hbrBackground:=COLOR_BTNFACE+1;
> wc.lpszMenuName:=nil;
> wc.lpszClassName:="Bit Buttons";
>
> RegisterClassEx(wc);
>
> xPos:=100;
> yPos:=150;
> nWidth:=320;
> nHeight:=150;
>
> wndMain:=CreateWindowEx(0,"Bit Buttons",
> "Bitmap Buttons",
> WS_OVERLAPPED or WS_SYSMENU,
> xPos,yPos,nWidth,nHeight,0,0,
> Hinstance,nil);
> //создаем 6 кнопок
> btns[0]:=CreateWindowEx(WS_EX_STATICEDGE,"button",nil,BS_ICON
> or WS_VISIBLE or WS_CHILD,10,10,40,40,wndMain,Btn0,hInstance,
> nil);
> btns[1]:=CreateWindowEx(WS_EX_STATICEDGE,"button",nil,BS_ICON
> or WS_VISIBLE or WS_CHILD,60,10,40,40,wndMain,Btn1,hInstance,
> nil);
> btns[2]:=CreateWindowEx(WS_EX_STATICEDGE,"button",nil,BS_ICON
> or WS_VISIBLE or ws_child,110,10,40,40,wndMain,Btn2,hInstance,
> nil);
> btns[3]:=CreateWindowEx(WS_EX_STATICEDGE,"button",nil,BS_ICON
> or WS_VISIBLE or WS_CHILD,160,10,40,40,wndMain,Btn3,hInstance,
> nil);
> btns[4]:=CreateWindowEx(WS_EX_STATICEDGE,"button",nil,BS_ICON
> or WS_VISIBLE or WS_CHILD,210,10,40,40,wndMain,Btn4,hInstance,
> nil);
> btns[5]:=CreateWindowEx(WS_EX_STATICEDGE,"button",nil,BS_ICON
> or WS_VISIBLE or WS_CHILD,260,10,40,40,wndMain,Btn5,hInstance,
> nil);
>
> Icon:=LoadIcon(0,IDI_APPLICATION);//получаем описатель одной
> из стандартных пиктограмм
> sendMessage(btns[0],bm_setimage,2,icon);//вставляем пиктограмму
> в кнопку
>
> icon:=LoadIcon(0,IDI_EXCLAMATION);
> sendMessage(btns[1],bm_setimage,2,icon);
>
> icon:=LoadIcon(0,IDI_ASTERISK);
>
> sendMessage(btns[2],BM_SETIMAGE,2,icon);
>
> icon:=LoadIcon(0,IDI_HAND);
> sendMessage(btns[3],BM_SETIMAGE,2,icon);
>
> icon:=LoadIcon(0,IDI_WINLOGO);
> sendMessage(btns[4],BM_SETIMAGE,2,icon);
>
> icon:=LoadIcon(0,IDI_QUESTION);
> sendMessage(btns[5],BM_SETIMAGE,2,icon);
>
> ShowWindow(wndMain,CmdShow);
>
> While GetMessage(Mesg,0,0,0) do
> begin
> TranslateMessage(Mesg);
> DispatchMessage(Mesg);
> end;
>
> end.
________________________________________________________________________________ ______________________Чушь всё это_______________
____________________________________________________________________
← →
Плохиш © (2006-08-25 15:16) [16]
> Ega23 © (15.08.06 18:15) [5]
> С содержимым - употеешь делать.
Что бы программисты не потели, папа - Борланд фреймы придумал ;-)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.043 c