Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Вниз

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

Форум: "KOL";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.031 c
1-84317
dfg
2003-06-15 12:03
2003.06.26
Как правильно отследить ошибку?


9-83840
Карлсон
2003-01-16 16:53
2003.06.26
опять надстройка.


14-84569
Andrew.
2003-06-07 17:30
2003.06.26
SMTP и отправка писем из програмы.


14-84541
race1
2003-06-07 08:32
2003.06.26
XP Style


1-84124
ray_wagner
2003-06-10 21:13
2003.06.26
Combobox????





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский