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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
14-33315
АТ
2003-07-24 17:03
2003.08.11
Установил Delphi7, кажется зря...


1-33159
DimaB
2003-07-25 16:28
2003.08.11
Комбобокс с цветом


8-33231
Njes
2003-04-16 10:10
2003.08.11
Копирование прямоугольной области в TBitmap


14-33289
stone
2003-07-23 15:54
2003.08.11
Тестовое задание? Ваше мнение...


14-33272
Knight
2003-07-25 08:02
2003.08.11
Не в обиду Жигулям...