Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.26;
Скачать: CL | DM;

Вниз

Пытаюсь убрать у окна иконку в заголовке (ну это как тип Dialog   Найти похожие ветки 

 
Alexander ©   (2002-09-22 16:14) [0]

в VCL). Но похоже что-то не так делаю:

SetWindowLong (Form.Handle, GWL_STYLE,
GetWindowLong (Form.Handle, GWL_STYLE) and not SS_ICON);


 
SPeller ©   (2002-09-22 17:20) [1]

а что за константа SS_ICON ?


 
Alexander ©   (2002-09-22 18:44) [2]

Это из 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;


 
BorisMor   (2002-09-23 10:35) [3]

А почему просто Style окна не менять.


 
SPeller ©   (2002-09-23 11:23) [4]

Может константа эта именно для ДИАЛОГОВЫХ окон?

> The given text is the name of an icon (not a filename) defined
> elsewhere in the resource file

И где же ты в SetWindowLong передаёшь имя иконки в ресурсе?
А где параметры nWidth и nHeight? По-моему, эта константа совсем из другой оперы, тоже самое что SendMessage( SWP_TOPMOST...


 
Alexander ©   (2002-09-23 13:31) [5]

Так я на правильность и не претендовал. Я просто спросил - правильно ли я делаю.
А как надо сделать?


 
SPeller ©   (2002-09-23 14:40) [6]

По-моему, где-то в доках на kol.mastak.ru были описания соответствующих стилей. Посмотри.


 
Gandalf   (2002-09-23 15:31) [7]

Почему Form.Style не используешь, реализованно через ...WindowLong.
SS_* - это из нашей оперы, тебе надо типа WS_* ( скажем WS_DLGFRAME). Не ручаюсь что все это можно менять на лету, т.е. после создания формы.


 
Vladimir Kladov   (2002-09-23 17:10) [8]

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 этот вызов беспечивает.


 
Alexander ©   (2002-09-25 14:09) [9]

что-то не получается, попутно баг? нашел:

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;


Стиль окна не меняется.


 
SPeller ©   (2002-09-25 16:27) [10]

Может там просто присутствуют уже другие стили рамки окна? Сначала их убрать надо.


 
HekTo   (2002-09-29 23:15) [11]

FWindow.ExStyle:=WS_EX_DLGMODALFRAME;
Так тоже не пашет. Раньше работало, теперь - нет.
Правда я делал это не на последней версии, а на 1.4?


 
Gandalf   (2002-09-30 08:43) [12]

Значит так - это возможно часть нового 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;



Страницы: 1 вся ветка

Текущий архив: 2003.06.26;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.022 c
1-84378
VISA
2003-06-09 11:54
2003.06.26
Событие при перемещении формы


4-84824
Василий Петрович
2003-04-19 19:36
2003.06.26
Вопрос про едит


3-83950
first_aid
2003-06-04 08:56
2003.06.26
Как используя компоненты ADO создать базу данныз Access?


1-84389
NAlexey
2003-06-09 13:10
2003.06.26
Перерисовка неклиентской области.


1-84123
Переяслов Григорий
2003-06-08 14:24
2003.06.26
FolderDialog