Форум: "Основная";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];
ВнизCaption Найти похожие ветки
← →
Pauk (2003-07-27 14:14) [0]Как скрыть полоску вверху окна
← →
Pauk (2003-07-27 14:15) [1]BorderStyle<>bsNone
← →
XenonXX (2003-07-28 04:09) [2]Так ты просто уберешь Border, а можно убрать только полоску, а Border оставить, я сам не делал, у меня компонент есть, могу выслать.
← →
Юрий Зотов (2003-07-28 04:17) [3]procedure TForm1.FormCreate(Sender: TObject); // событие OnCreate
begin
SetWindowLong(Handle, GWL_STYLE,
GetWindowLong(Handle, GWL_STYLE) and not WS_CAPTION);
Height := Height + 1
end;
← →
KSergey (2003-07-28 08:40) [4]TProgressIndicator = class(TForm)
...
public
procedure CreateParams (var Params: TCreateParams); override;
...
end;
........
procedure TProgressIndicator.CreateParams (var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := WS_THICKFRAME or WS_POPUP or WS_BORDER or WS_CLIPCHILDREN;
end;
Вообще-то в CreateParams наверное правильнее будет написать как у Юрий Зотов © (28.07.03 04:17)
Params.Style := Params.Style and not WS_CAPTION;
хотя это, конечно, зависит от необходимости.
← →
Skier (2003-07-28 08:46) [5]>Юрий Зотов © (28.07.03 04:17)
А зачемHeight := Height + 1
?
← →
Юрий Зотов (2003-07-28 08:54) [6]> Skier © (28.07.03 08:46)
Корректировка какого-то глючка. Без этого форма появляется с заголовком, который исчезает при первом же ресайзе. Возможно, это есть не во всех версиях Windows, но у меня есть.
← →
KSergey (2003-07-28 09:20) [7]>Юрий Зотов © (28.07.03 08:54)
А может для исключения глючка стоит пользоваться специально для того предназначеным CreateParams? ;)
← →
Юрий Зотов (2003-07-28 11:10) [8]> KSergey © (28.07.03 09:20)
Не поможет, потому что глюк совсем не в этом. Вероятнее всего, это глюк, конечно, не системы, а кода - надо более точно ставить стили. Либо не морочить себе голову, а просто "дернуть" форму - что я и сделал.
Вообще, выбор здесь довольно простой. Если нужно назначить стили ПРИ создании окна - то CreateParams, а если нужно изменить их уже ПОСЛЕ его создания - то SetWindowLong.
Однако же, бывают и нюансы. Рассмотрим Ваш пример:
Params.Style := WS_THICKFRAME or WS_POPUP or WS_BORDER or WS_CLIPCHILDREN;
Естествено, он дает нужный эффект, но содержит не все нужные стили (например, нет WS_HSCROLL и WS_VSCROLL, а еще могут потребоваться WS_SYSMENU и другие). Значит, вряд ли можно быть уверенным, что такая форма будет нормально работать.
Поэтому, как Вы и сказали, правильнее было бы не ставить набор стилей жестко, а вызвать inherited и потом убрать ненужные и/или добавить нужные. Однако же, попробуйте написать в CreateParams то, о чем Вы и говорили:
inherited;
Params.Style := Params.Style and not WS_CAPTION
и будете удивлены. Тем более, что то же самое, но примененное уже ПОСЛЕ создания окна - работает.
Вот по причине подобных нюансов я и предпочитаю не рекомендовать CreateParams людям неискушенным - чтобы потом и сами не мучились, и форум не мучали. Да и не всегда возможно CreateParams использовать - например, если нужно изменить стиль контрола без написания потомка.
← →
KSergey (2003-07-28 11:41) [9]>Юрий Зотов © (28.07.03 11:10)
Мне не ловко спорить, тем более, что тут действительно все зависит скорее от места, но высказаться бы хотелось.
Ну набор стилей - конечно по месту примерять надо. Я просто выдернул из текста как было (а там создание просто форма сообщения, так что никаких заморочек не нужно).
Но я никак не пойму чем я "и будете удивлены". Тем, что резльтат точно такой же? Ну тут собственно чему удивляться? ;)
Но я никак не могу понять о каких нюансах речь? О наборе стилей - но вроде обсудили, тут думать надо что тыкать ;)
А как пример изменения стилей в произвольный момент - это принимается ;) Но тот ли это случай в данном случае?
← →
Pauk (2003-07-28 12:24) [10]
SetWindowLong(Form1.Handle, GWL_STYLE, GetWindowLong(Handle,GWL_STYLE) and not WS_CAPTION);
Height := ClientHeight;
работает на ура
← →
Юрий Зотов (2003-07-28 14:40) [11]> KSergey © (28.07.03 11:41)
> Но я никак не пойму чем я "и будете удивлены". Тем, что
> резльтат точно такой же? Ну тут собственно чему удивляться? ;)
Как раз совершенно обратный. Появляется просто обычная форма, как будто никаких CreateParams не замещалось и никакие флаги не менялись. Это и есть "странные нюансы".
← →
Юрий Зотов (2003-07-28 14:42) [12]> Pauk (28.07.03 12:24)
А зачем Form1? Лишнее, и даже вредно.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c