Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
2-1142790242
VEZ
2006-03-19 20:44
2006.04.02
Autorun


2-1142762225
Gentos
2006-03-19 12:57
2006.04.02
Проблемы с Html.


15-1142060103
Карелин Артем
2006-03-11 09:55
2006.04.02
Рефакторинг проекта. Что посоветуете использовать?


2-1142950392
irishka001
2006-03-21 17:13
2006.04.02
Список файлов в архиве


6-1134981691
SergP.
2005-12-19 11:41
2006.04.02
Шифруются ли данные передаваемые на сервер по HTTPS в GET-запросе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский