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

Вниз

Как изменить размер формы если ее BorderStyle= bsNone   Найти похожие ветки 

 
kofman   (2002-08-24 00:11) [0]

Здравствуйте Мастера. Вот такая задача. Есть форма BorderStyle которой установлен в bsNone. На форме лежит TImage выравненный по клиенской части формы. Вопрос такой, как в run-time потянув за край имэйджа изменить размер формы?


 
Almaz   (2002-08-24 03:10) [1]

Вам следует обрабатывать сообщение WM_NCHITTEST - оно отвечает за то, как система обработает нажатие кнопки мыши на форме. Просто "заставьте" систему видеть рамку окна. В приведенном ниже примере форма имеет BorderStyle = bsNone, однако правый край формы ведет себя как будто там есть рамка:


type
TForm1 = class(TForm)
private
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
...
end;
...

procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
var
Pt: TPoint;
begin
inherited;
with Message do
begin
Pt := ScreenToClient(Point(XPos, YPos));
// 4 - толщина "рамки"
if Pt.x > Width - 4 then Message.Result := HTRIGHT;
...
end;
end;


Возвращая значения HTLEFT, HTBOTTOMRIGHT и т.д. можно имитировать рамку с любой стороны или угла окна.

Удачи.


 
anod   (2002-08-24 12:56) [2]

А если программа на ВинАпи

По-моему я не правильно возвращаю значение, потому что ничего не происходит.

WM_NCHitTest: begin
Pt := Mouse.CursorPos;
if (Pt.x > plWidth - 4)and(Pt.y > plHeight - 4) then Result := LongBool(HTBOTTOMRIGHT);
end;


 
Diamond Cat   (2002-08-24 20:14) [3]

можно использовать setwindowpos


 
anod   (2002-08-24 22:51) [4]

ТОЛЬКО КАК?


 
Almaz   (2002-08-27 02:01) [5]


> anod © (24.08.02 12:56)
> А если программа на ВинАпи
>
> По-моему я не правильно возвращаю значение, потому что ничего
> не происходит.

По-моему вы не правильно вычисляете условие - Mouse.CursorPos вернет вам позицию мышм в координатах экрана, а вам нужно в координатах окна. Т.е. вам следует вычесть из значений Mouse.CursorPos координаты левого верхнего угла окна.

p.s. Если вы пишите на WinAPI, то что в программе делает объект TMouse ?

Удачи.



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

Форум: "Основная";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
1-14122
Yaro
2002-08-22 06:07
2002.09.05
Получение из стэка Vsriant-указатель...


3-13958
Fbist
2002-08-16 08:11
2002.09.05
Люди добрые!!! Нужна срочно помощь!!!


14-14239
glory_bug
2002-08-09 21:39
2002.09.05
Литература по базам на DELPH и


1-13998
UWater
2002-08-25 16:36
2002.09.05
Проблемы с установкой RX- компонентов


8-14176
novomod
2002-02-25 19:48
2002.09.05
Проигрыватель.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский