![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пытаюсь убрать у окна иконку в заголовке (ну это как тип Dialog
Alexander © (2002-09-22 16:14:00)в VCL). Но похоже что-то не так делаю:
SetWindowLong (Form.Handle, GWL_STYLE,
GetWindowLong (Form.Handle, GWL_STYLE) and not SS_ICON);
Gandalf (2002-09-30 08:43:00) [1]Значит так - это возможно часть нового KOL но пока не отлажено, так что качество НЕ гарантирую - могут пропасть кнопки из полоски окна и иконка, но вот! Во всяком случаи эффект дублирующий аналогичное свойство VCL.
type
TBorderStyle=(bsNone,bsSingle,bsToolWindow,bsSizeable,bsSizeToolWin,bsDialog);
var
CreateStyle:TBorderStyle;
begin
CreateStyle:=bsSingle;
with Form1.Form^ do
begin
if (Parent = nil) and (ParentWindow = 0) then
begin
Style := Style and not (WS_CHILD or WS_GROUP or WS_TABSTOP);
end;
begin
case CreateStyle of
bsNone:
begin
if (Parent = nil) and (ParentWindow = 0) then
Style := Style or WS_POPUP;
end;
bsSingle, bsToolWindow:
Style := Style or (WS_CAPTION or WS_BORDER);
bsSizeable, bsSizeToolWin:
begin
Style := Style or (WS_CAPTION or WS_THICKFRAME);
end;
bsDialog:
begin
Style := Style or WS_POPUP or WS_CAPTION;
ExStyle := WS_EX_DLGMODALFRAME or WS_EX_WINDOWEDGE;
Style := Style or WS_DLGFRAME or DS_MODALFRAME;
end;
end;
if CreateStyle in [bsToolWindow, bsSizeToolWin] then
begin
ExStyle := WS_EX_TOOLWINDOW;
end;
if CreateStyle in [bsSingle, bsSizeable, bsNone] then
begin
end;
end;
end;
SendMessage(Form1.Form.Handle, WM_SETICON, 1, 0);
end;
HekTo (2002-09-29 23:15:00) [2]FWindow.ExStyle:=WS_EX_DLGMODALFRAME;
Так тоже не пашет. Раньше работало, теперь - нет.
Правда я делал это не на последней версии, а на 1.4?
SPeller (2002-09-25 16:27:00) [3]Может там просто присутствуют уже другие стили рамки окна? Сначала их убрать надо.
Alexander (2002-09-25 14:09:00) [4]что-то не получается, попутно баг? нашел:
procedure TForm1.KOLForm1Click(Sender: PObj);
begin
Form.ExStyle := Form.ExStyle or WS_EX_DLGMODALFRAME;
end;
У меня сюда при клике на форме сюда даже не заходит. Делал ещё так:
procedure TForm1.KOLForm1FormCreate(Sender: PObj);
begin
Form.ExStyle := Form.ExStyle or WS_EX_DLGMODALFRAME;
end;
Стиль окна не меняется.
Vladimir Kladov (2002-09-23 17:10:00) [5]Form.ExStyle := Form.ExStyle or WS_EX_DLGMODALFRAME;
Все можно, все работает. Через SetWindowLong может и не работать,
требуется вызов SetWindowPos:
If you have changed certain window data using SetWindowLong, you must call SetWindowPos to have the changes take effect. Use the following combination for uFlags: SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED.
(MSDN)
Собственно, присваивание свойства ExStyle этот вызов беспечивает.
Gandalf (2002-09-23 15:31:00) [6]Почему Form.Style не используешь, реализованно через ...WindowLong.
SS_* - это из нашей оперы, тебе надо типа WS_* ( скажем WS_DLGFRAME). Не ручаюсь что все это можно менять на лету, т.е. после создания формы.
SPeller (2002-09-23 14:40:00) [7]По-моему, где-то в доках на kol.mastak.ru были описания соответствующих стилей. Посмотри.
Alexander (2002-09-23 13:31:00) [8]Так я на правильность и не претендовал. Я просто спросил - правильно ли я делаю.
А как надо сделать?
SPeller (2002-09-23 11:23:00) [9]Может константа эта именно для ДИАЛОГОВЫХ окон?
> The given text is the name of an icon (not a filename) defined
> elsewhere in the resource file
И где же ты в SetWindowLong передаёшь имя иконки в ресурсе?
А где параметры nWidth и nHeight? По-моему, эта константа совсем из другой оперы, тоже самое что SendMessage( SWP_TOPMOST...
BorisMor (2002-09-23 10:35:00) [10]А почему просто Style окна не менять.
Alexander (2002-09-22 18:44:00) [11]Это из MSDN (я и пример где-то там нашёл):
SS_ICON Designates an icon displayed in the dialog box. The given text is the name of an icon (not a filename) defined elsewhere in the resource file. The nWidth and nHeight parameters are ignored; the icon automatically sizes itself.
Константа определена в модуле Windows:
SS_ICON = 3;
SPeller (2002-09-22 17:20:00) [12]а что за константа SS_ICON ?