Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Пытаюсь убрать у окна иконку в заголовке (ну это как тип 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 ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо