Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Создание Page Control


Автор: darkmamba 28.2.2010, 16:01
Задача создать окно с элементами управления на АПИ. Со всеми элементами я разобрался, кроме одного. Как я тока не пробовал создать Page Control - не получается, причем GetLastError возвращает 0. Нагуглить примерчик тоже не получилось, поэтому обращаюсь к Вам с просьбой помочь разобратся, ув. форумчане ;). 

Код

  psp: TPropSheetPage;
  psh: TPROPSHEETHEADER;
. . .
function DlgProc(hDlg, message: dword; WParam, LParam: Integer): bool; stdcall;
begin
MessageBox(0, 'DlgProc', 'DlgProc', 0);
  result := false;
end;
  . . .
        FillChar(psp, SizeOf(TPropSheetPage), 0);
        psp.dwSize := SizeOf(psp);
        psp.dwFlags := PSP_USETITLE;
        psp.hInstance := hInstance;
        psp.pfnDlgProc := @DlgProc;
        psp.pszTitle := 'title';

        FillChar(psh, SizeOf(psh), 0);
        psh.dwSize := SizeOf(psh);
        psh.dwFlags := PSH_PROPSHEETPAGE; 
        psh.hInstance := hInstance;
        psh.hwndParent := hMain;
        psh.pszCaption := 'psh_title';
        psh.nPages := 1;
        psh.ppsp := @psp;

        PropertySheet(psh);

Этот набор символов выполняется без ошибки, но на окне не появляется ничего. 
У меня несколько впоросов. 
Что такое PSH_WIZARD  и что лучше использовать?
Как задавать координаты и размеры самого контрола ?
И главный вопрос что я делаю не так ? =))

Автор: darkmamba 28.2.2010, 18:43
ну что никто незнает чтоли ?

Автор: DarkProg 28.2.2010, 21:21
Я почти не работаю с API, но скажи а где Create, в каком месте должно что-то создасться????

Автор: darkmamba 2.3.2010, 13:27
незнаю, вот и спрашиваю, потому что невижу тут стандартной CreateWindow(ex), где задаются координаты, это еще один вопрос.

Автор: CodeMonkey 2.3.2010, 13:51
Вообще-то Property Sheet - это не PageControl. Совершенно. Это вообще отдельное окно для правки свойств чего-либо.

PageControl - это что-нибудь в сторону SysTabControl32.

Добавлено через 1 минуту и 15 секунд
Наверное, вам http://msdn.microsoft.com/en-us/library/bb760550(VS.85).aspx.

Автор: darkmamba 2.3.2010, 17:51
Огромное спасибо! Я там смотрел, смотрел и видимо просмотрел  smile  smile 

Автор: darkmamba 2.3.2010, 19:07
Код

  Item: TC_ITEM;
  . . .
        InitCommonControls;
        hTabControl := CreateWindowEx(0, WC_TABCONTROL, nil,
                       WS_CHILD or WS_VISIBLE,
                       0, 0,
                       300, 300,
                       hMain,
                       0, hInstance, nil);
        FillChar(Item, SizeOf(TC_ITEM), 0);
        Item.mask := TCIF_TEXT;
        for i:=0 to 3 do begin
          Item.pszText := pchar('Page'+inttostr(i));
          SendMessage(hTabControl, TCM_INSERTITEM, i, integer(@Item));
        end;


А как добавить на закладку какой-нибуть контрол ? У закладок должен быть свой HWND ?

Автор: DarkProg 2.3.2010, 20:39
Цитата(darkmamba @  2.3.2010,  19:07 Найти цитируемый пост)
А как добавить на закладку какой-нибуть контрол ? У закладок должен быть свой HWND ? 


ВОзьму на себя ответственность и скажу: 1 вопрос=1 тема

А вообще то вроде бы и DC и HWND, но если нет того или иного, то одно через другое вроде бы можно дёрнуть.

Автор: CodeMonkey 3.3.2010, 09:49
Слушайте, ну вы ленивый вааааще.

Вот же, в MSDN все примеры есть: http://msdn.microsoft.com/en-us/library/bb760551(VS.85).aspx. Как создать контрол, как добавить закладки, как на них контролы размещать, как сделать tabbed dialog (это когда каждая закладка - отдельный диалог со своей собственной оконной функцией).

Автор: darkmamba 4.3.2010, 11:38
 smile не дружу с мсдн. Щас все  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)