Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 075

/ вопрос решён /

Здравствуйте, уважаемые эксперты!

Хватит, побыл экспертом, пора и задавать вопросы :-)
Рисовать или помещать надписи можно только на клиентской области формы? Я пробовал погонять надпись по форме, но когда приближается к краю, надпись "подлезает" под край рамки, и ее частично не видно. А мне хотелось поэкспериментировать с Caption формы, сделать ее другим цветом или шрифтом или нарисовать чего-либо в области заголовка формы . Is it possible ?
Добросовестно прогуглил первые 10 страниц форума, но пока никак.

Толяныч Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Толяныч (статус: 4-ый класс)
Вопрос отправлен: 9 марта 2011, 00:12
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 7; последнее сообщение — 9 марта 2011, 20:22; участников в обсуждении: 4.
Amidamaru

Amidamaru (статус: 4-ый класс), 9 марта 2011, 00:19 [#1]:

ну... с самими заголовком не так уж и просто работать, поищи по теме создания кнопки в заголовке (Caption Button).
а если тебе нужно сделать полностью свой собственный заголовок для формы то это не так уж и сложно: убираешь заголовок вообще и делаешь всё что хочешь :) как перетаскивать форму без заголовка в интернете полно информации, а кнопки ещё проще сделать.
Приглашаю Вас на наш IRC-канал: #delphiintru в сети DalNet.
VKHacker

VKHacker (статус: 1-ый класс), 9 марта 2011, 01:18 [#2]:

TForm1 = class(TForm)
.....
private
procedure DrawMyText;
procedure WMNCPaint(var Msg : TWMNCPaint); message WM_NCPAINT;
procedure WMNCActivate(var Msg: TWMNCActivate) ; message WM_NCACTIVATE;


.....

procedure TForm1.DrawMyText;
var Canvas: TCanvas;
R: TRect;
begin
Canvas := TCanvas.Create;

try
Canvas.Handle := GetWindowDC(Handle);

R := Bounds(GetSystemMetrics(SM_CXFRAME) +
GetSystemMetrics(SM_CXSIZE) + 1,
GetSystemMetrics(SM_CYFRAME),
GetSystemMetrics(SM_CXSIZE),
GetSystemMetrics(SM_CYSIZE));

with Canvas do
begin
Brush.Style := bsClear;
Font.Color := clWhite;
TextOut(R.Left + 50, R.Top + 7, 'Привет');
end;
finally
ReleaseDC(Self.Handle, Canvas.Handle) ;
Canvas.Free;
end;
end;

procedure TForm1.WMNCActivate(var Msg: TWMNCActivate);
begin
inherited;
DrawMyText;
end;

procedure TForm1.WMNCPaint(var Msg: TWMNCPaint);
begin
inherited;
DrawMyText;
end;

.....

end.
Толяныч

Толяныч (статус: 4-ый класс), 9 марта 2011, 13:18 [#3]:

Ясно. Спасибо. Слишком это сложно :-( Придется без выпендрежа.

9 марта 2011, 13:18: Статус вопроса изменён на решённый (изменил автор вопроса — Толяныч)

Вадим К

Вадим К (статус: Академик), 9 марта 2011, 15:38 [#4]:

А есть ещё один красивый способ. очень красивый.
Делаем у формы borderstyle = bsNone, и теперь вся форма полностью доступна. Можно рисовать кругом. Правда заголовок теперь придется рисовать самому и сделать перетаскивание формы мышкой (но это в пару строк делается). Но зато, можно творить на форме что угодно.
Галочка "подтверждения прочтения" - вселенское зло.
Толяныч

Толяныч (статус: 4-ый класс), 9 марта 2011, 18:13 [#5]:

А вне формы ? Например, привязываясь к абсолютным координатам экрана ?
Вадим К

Вадим К (статус: Академик), 9 марта 2011, 18:52 [#6]:

а вне формы - это нужно рисовать прямо на рабочем столе. тогда кругом можно рисовать. Изучите это
http://www.gcmsite.ru/?pg=art&id=delphi-draw-screen-winapi
http://www.delphisources.ru/pages/sources/graph/canvas.html
Для начала хватит:)
Галочка "подтверждения прочтения" - вселенское зло.
Толяныч

Толяныч (статус: 4-ый класс), 9 марта 2011, 20:22 [#7]:

С избытком ! Пошел учить матчасть..

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 16:15
Выполнено за 0.02 сек.