Форум: "Начинающим";
Текущий архив: 2008.01.13;
Скачать: [xml.tar.bz2];
ВнизКак убрать загловок окна и оставить системное меню Найти похожие ветки
← →
Nil (2007-12-12 11:50) [0]Нужно чтобы при установленном bsNone у окна осталось системное меню. Подскажите пож как реализовать.
Заранее благодерн.
← →
Sonia © (2007-12-12 12:02) [1]
> при установленном bsNone
А что вы хотите этим получить? Не проще будет поставить в bsSingle?
← →
Sonia © (2007-12-12 12:07) [2]
> Sonia © (12.12.07 12:02) [1]
Сорри, неправильно прочитала условие....
Ну, я думаю тогда надо самому организовать это меню.
← →
@!!ex © (2007-12-12 12:07) [3]Системное меню у окна есть независимо от бордюра.
← →
DiamondShark © (2007-12-12 12:26) [4]
> Системное меню у окна есть независимо от бордюра.
Запусти. Удивись.
procedure TForm1.Button2Click(Sender: TObject);
var
sysmenu: HMENU;
begin
BorderStyle := bsNone;
sysmenu := GetSystemMenu(Handle, false);
ShowMessageFmt("%d", [sysmenu]);
end;
← →
@!!ex © (2007-12-12 12:28) [5]> [4] DiamondShark © (12.12.07 12:26)
Удивился. Ошибался.
← →
DiamondShark © (2007-12-12 12:29) [6]
> Нужно чтобы при установленном bsNone у окна осталось системное
> меню.
И что, по-твоему, должно содержать это меню? Один пункт "Закрыть"?
Смысл в таком меню?
Зачем именно системное меню? Чем не устраивает своё собственное попап-меню?
← →
homm © (2007-12-12 12:39) [7]> [6] DiamondShark © (12.12.07 12:29)
> Зачем именно системное меню?
Видимо для того, что-бы в панели задачь было оно.
← →
@!!ex © (2007-12-12 12:50) [8]> [7] homm © (12.12.07 12:39)
Ну этот как раз просто.
Делаем главную форму с бордюром, Скрываем ее, и все сообщения, которые к ней приходят, пересылаем настоящей главной форме, которая без бордюра.
← →
clickmaker © (2007-12-12 13:07) [9]
> [7] homm © (12.12.07 12:39)
>
> Видимо для того, что-бы в панели задачь было оно
Оно там и так будет. Потому что MainForm и Application - разные окна
← →
Nil (2007-12-12 13:52) [10]
> Делаем главную форму с бордюром, Скрываем ее, и все сообщения,
> которые к ней приходят, пересылаем настоящей главной форме,
> которая без бордюра.
Это на какой то изврат похоже :) Может есть что то попроще?
> Видимо для того, что-бы в панели задачь было оно.
Да, именно для этого и нужно...
На пальцах расскажу что есть и что надо. есть форма нестандартной формы, делал через регионы, соответственно ни о каких бордерах и кэпшенах речи идти не может (bsNone стоит), но хотелось бы чтобы юзер щёлкнув на пенели задач правой кнопкой, мог видеть стандартное системное меню (Свернуть развернуть закрыть и т.д.).
← →
DiamondShark © (2007-12-12 14:08) [11]
> Nil (12.12.07 13:52) [10]
Во-первых, для формы нестандартной формы вовсе не обязательно ставить bsNone, бордюр можно и регионом отрезать.
Во-вторых, при щелчке на кнопке в панели задач показывается не меню окна формы, а меню окна Application. А оно, как уже сказали, есть всегда.
← →
Anatoly Podgoretsky © (2007-12-12 14:16) [12]Вроде бы панель задач и заголовок формы как бы разные вещи.
← →
Nil (2007-12-12 14:33) [13]
> Во-первых, для формы нестандартной формы вовсе не обязательно
> ставить bsNone, бордюр можно и регионом отрезать.
не знаю как это делать. делаю так:
Rgn := CreateRoundRectRgn(0, 0, 750, 550, 20, 20);
SetWindowRgn(Handle, rgn, True);
регион рисуется на клиентской области формы, а заголовок и бурдюры остаются
> Во-вторых, при щелчке на кнопке в панели задач показывается
> не меню окна формы, а меню окна Application. А оно, как
> уже сказали, есть всегда.
не согласен.. когда у формы ставлю bsNone, меню Application пропадает тоже. у меня такое чувство что это какое то нововведение Delphi 2007.. по моему в D7 такого не наблюдалось
> Вроде бы панель задач и заголовок формы как бы разные вещи.
сори, запутался напрочь где какое меню. а где вообще настройки меню приложения можно посмотреть?
← →
Nil (2007-12-12 15:04) [14]нашёл, чёрт побери где грабли..
в dpr есть строка
Application.MainFormOnTaskbar := True;
это приблуда для аеро эффекта в висте
вот когда она есть и Style=bsNone то меню приложения нет. строку и закоментировал и меню появилось, но хотелось бы чтобы аеро тоже работало.Description
The MainFormOnTaskBar property controls how Windows taskbar buttons are handled by VCL.
If the property is true, a taskbar button represents the application"s main form and displays its caption. If false, a taskbar button represents the application"s (hidden) main window and bears the application"s Title.
MainFormOnTaskBar must be true to use Windows Vista Aero effects. These include live taskbar thumbnails, Dynamic Windows, Windows Flip, and Windows Flip 3D.
MainFormOnTaskBar is intended to be set at startup and persist throughout the duration of the application. Changing this property at runtime could result in unexpected behavior.
MainFormOnTaskBar defaults to True for applications created in Delphi 2007 and later products and False for earlier products.
The property can be applied to older applications. Note that it affects the Z-order of your MainForm in case your application depends on this.
To update existing VCL applications, add the following line to the project"s .dpr file after Application.Initialize;:
Application.MainFormOnTaskbar := True;
This line is automatically added to new projects.
я так понимаю если True, тогда главная форма должна заботиться об этом меню, в противном случае меню занимается TApplication. если не прав поправьте пож
← →
DiamondShark © (2007-12-12 15:29) [15]
> Nil (12.12.07 15:04) [14]
Да. Это нововведение. И ты правильно понимаешь.
> Nil (12.12.07 14:33) [13]
>
> > Во-первых, для формы нестандартной формы вовсе не обязательно
>
> > ставить bsNone, бордюр можно и регионом отрезать.
>
> не знаю как это делать. делаю так:
> Rgn := CreateRoundRectRgn(0, 0, 750, 550, 20, 20);
> SetWindowRgn(Handle, rgn, True);
> регион рисуется на клиентской области формы, а заголовок
> и бурдюры остаются
Да ладно! Арифметика 3 класс.
Регион по клиентской области окна:
procedure TForm1.Button3Click(Sender: TObject);
var
Rgn: HRGN;
R: TRect;
begin
Windows.GetClientRect(Handle, R);
Windows.MapWindowPoints(Handle, 0, R, 2);
Rgn := CreateRoundRectRgn(R.Left-Left, R.Top-Top, R.Right-Left {750}, R.Bottom-Top {550}, 20, 20);
SetWindowRgn(Handle, rgn, True);
end;
← →
Nil (2007-12-14 01:44) [16]
> Да ладно! Арифметика 3 класс.
Меня в 3-м класса выгнали со школы :)
Спасибо! Похоже работает!
← →
Германн © (2007-12-14 01:57) [17]
> Nil (14.12.07 01:44) [16]
>
>
> > Да ладно! Арифметика 3 класс.
>
> Меня в 3-м класса выгнали со школы :)
>
>
Т.е. до физики Краевича ты не добрался?
(с) не скажу чей. Сам должен знать. :)
← →
Nil (2007-12-14 21:10) [18]
> Т.е. до физики Краевича ты не добрался?
> (с) не скажу чей. Сам должен знать. :)
>
золотой телёнок? :) краевич по сумашедшему требоватлеьный физик/математик который сам в конце концов не смог защитить профессора, причём своему же ученику:)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.01.13;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.007 c