Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.027 c
2-1142593667
Fenix
2006-03-17 14:07
2006.04.02
Разбиение рисунка на части.


8-1130085255
fghfg
2005-10-23 20:34
2006.04.02
проблемы с добавлением звука в AVI


2-1142927779
XiAndr
2006-03-21 10:56
2006.04.02
TWebBrowser


15-1141829808
Dimedrol
2006-03-08 17:56
2006.04.02
На кухне вытяжка и 2 оголенных провода...


2-1142424719
HpeHoBuHa
2006-03-15 15:11
2006.04.02
MS Ёксель. Chart ы




   Наверх