Текущий архив: 2006.04.02;
Скачать: CL | DM;
ВнизАналог TPanel Найти похожие ветки
← →
Beduir (2006-01-10 05:27) [0]Скажите как создать окно, аналог TPanel в VCL, чтобы можно было размещать в нем другие окна (кнопки и т.п.) и скрывать/показывать его?
Спасибо.
← →
DVM © (2006-01-10 10:29) [1]CreateWindow(Ex)
← →
Lamer@fools.ua © (2006-01-10 10:40) [2]>>Beduir (10.01.06 05:27)
Посмотрите в исходниках VCL, какой класс окна используется для TPanel.
← →
Zoidberg © (2006-01-10 17:02) [3]DVM
Одним местом чуял, что нужно использовать CreateWindowю. :) Только немного непонятно как в данном случае.
А можно пример?
Lamer@fools.ua
Как я понимаю, TPanel это чисто дельфийский компонент, в Windows стандартного такого нет. Следовательно и класса нет. Хотя может я чего и не так понимаю...
← →
FrykT © (2006-01-10 17:02) [4]Что значит аналог? какие функции нужно, чтобы выполняло? и для чего аналог??? /* сделал глаза по пять коп */
← →
Zoidberg © (2006-01-10 17:06) [5]Функции: содержало в себе другие контролы, которые можно разом скрыть / отобразить, скрыв эту панель. В общем таких панелей планируется несколько, что-то типа мастера, по кнопке далее, скрывается первая панель, отображается вторая и т.д.
p.s. Beduir - это тоже я, только не из дома писал.
← →
ANB © (2006-01-10 17:28) [6]
> Zoidberg © (10.01.06 17:06) [5]
Любое окно можно сделать парентовым для любого другого окна (в т.ч. и контролла). В TPanel добавлена отрисовка и некоторые другие полезные вещи.
← →
VirEx © (2006-01-10 17:43) [7]
> Beduir (10.01.06 05:27)
> Скажите как создать окно, аналог TPanel в VCL, чтобы можно
> было размещать в нем другие окна (кнопки и т.п.) и скрывать/показывать
> его?
> Спасибо.
WindowClass.style:=CS_HRedraw or CS_VRedraw;
WindowClass.Lpfnwndproc:=@windowproc;
WindowClass.Hinstance:=Instance;
WindowClass.HbrBackground:= color_btnface;
WindowClass.LpszClassName:="DX";
WindowClass.Hcursor:=LoadCursor(0,IDC_ARROW);
RegisterClass(WindowClass);
Handle:=CreateWindowEx (0,"DX","",WS_POPUP or WS_CHILD, 5,5, GetSystemMetrics (SM_CXSCREEN)-200, GetSystemMetrics (SM_CYSCREEN)-200,OwnerWND {хэндл главного окна},0,instance, nil);
или
Handle:=CreateWindowEx (0,"DX","",WS_POPUP, 5,5, GetSystemMetrics (SM_CXSCREEN)-200, GetSystemMetrics (SM_CYSCREEN)-200,0,0,instance, nil);
SetWindowLong(Handle,GWL_STYLE ,GetWindowLong(Handle,GWL_STYLE) or WS_CHILD);
setparent(Handle,OwnerWND);
а затем если хочешь встроить к примеру кнопку из VCL:
var
b:TButton;
begin
b:=TButton.Create(nil);
b.Caption:="OK";
b.Show;
b.ParentWindow:=Handle //"прицепляем" к нашей панели
либо:
btnOk := CreateWindow("BUTTON", PChar("OK"),
BS_PUSHBUTTON or WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON,
270, 65, 75, 25, Handle, BTN_APPLY_ID, instance, nil);
(только после этого нужно отлавливать сообщения кнопки в клавной форме, хотя можно сделать свою процедуру обработки сообщений именно для данной кнопки)
← →
VirEx © (2006-01-10 18:01) [8]а ну если в VCL, то Handle нужно заменить на Form1.Handle
← →
Чародей © (2006-01-10 18:03) [9]А Frame не устраивает?
← →
Zoidberg © (2006-01-10 19:35) [10]VirEx
Спасибо, попробую.
> Чародей © (10.01.06 18:03) [9]
> А Frame не устраивает?
Frame - это какой? Который в VCL?
← →
Чародей © (2006-01-10 22:49) [11]
> Frame - это какой? Который в VCL?
Да на первой странице (Standard).
← →
Beduir (2006-01-11 08:30) [12]Чародей
Я так и подумал. Но я не использую VCL. Если бы использовал, то я бы просто и взял TPanel.
Страницы: 1 вся ветка
Текущий архив: 2006.04.02;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.041 c