| 
| 
 | Вопрос # 5 075/ вопрос решён / | 
 |  Здравствуйте, уважаемые эксперты!
 Хватит, побыл экспертом, пора и задавать вопросы :-)
 Рисовать или помещать надписи можно только на клиентской области формы? Я пробовал погонять надпись по форме, но когда приближается к краю, надпись "подлезает" под край рамки, и ее частично не видно. А мне хотелось поэкспериментировать с Caption формы, сделать ее другим цветом или шрифтом или нарисовать чего-либо в области заголовка формы . Is it possible ?
 Добросовестно прогуглил первые 10 страниц форума, но пока никак.
 
|  |   Вопрос задал: Толяныч (статус: 4-ый класс)Вопрос отправлен: 9 марта 2011, 00:12
 Состояние вопроса: решён, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 7; последнее сообщение — 9 марта 2011, 20:22; участников в обсуждении: 4. 
|   | Amidamaru (статус: 4-ый класс), 9 марта 2011, 00:19 [#1]:ну... с самими заголовком не так уж и просто работать, поищи по теме создания кнопки в заголовке (Caption Button). а если тебе нужно сделать полностью свой собственный заголовок для формы то это не так уж и сложно: убираешь заголовок вообще и делаешь всё что хочешь
  как перетаскивать форму без заголовка в интернете полно информации, а кнопки ещё проще сделать. |  
|   | 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]:А вне формы ? Например, привязываясь к абсолютным координатам экрана ? |  
|   | Толяныч (статус: 4-ый класс), 9 марта 2011, 20:22 [#7]:С избытком ! Пошел учить матчасть.. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |