Виртуальная библиотека Delphi

Здесь есть возможность читать онлайн «Виртуальная библиотека Delphi» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Виртуальная библиотека Delphi: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Виртуальная библиотека Delphi»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Виртуальная библиотека Delphi — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Виртуальная библиотека Delphi», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

procedure Button1Click(Sender: TObject);

procedure FormPaint(Sender: TObject);

private

{ Private declarations }

rTitleBar : THandle;

Center : TPoint;

CapY : Integer;

Circum : Double;

SB1 : TSpeedButton;

RL, RR : Double;

procedure TitleBar(Act : Boolean);

procedure WMNCHITTEST(var Msg: TWMNCHitTest);

message WM_NCHITTEST;

procedure WMNCACTIVATE(var Msg: TWMNCACTIVATE);

message WM_NCACTIVATE;

procedure WMSetText(var Msg: TWMSetText);

message WM_SETTEXT;

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

CONST

TitlColors : ARRAY[Boolean] OF TColor =

(clInactiveCaption, clActiveCaption);

TxtColors : ARRAY[Boolean] OF TColor =

(clInactiveCaptionText, clCaptionText);

procedure TForm1.FormCreate(Sender: TObject);

VAR

rTemp, rTemp2 : THandle;

Vertices : ARRAY[0..2] OF TPoint;

X, Y : INteger;

begin

Caption := 'OOOH! Doughnuts!';

BorderStyle := bsNone; {required}

IF Width > Height THEN Width := Height

ELSE Height := Width; {harder to calc if width <> height}

Center := Point(Width DIV 2, Height DIV 2);

CapY := GetSystemMetrics(SM_CYCAPTION)+8;

rTemp := CreateEllipticRgn(0, 0, Width, Height);

rTemp2 := CreateEllipticRgn((Width DIV 4), (Height DIV 4),

3*(Width DIV 4), 3*(Height DIV 4));

CombineRgn(rTemp, rTemp, rTemp2, RGN_DIFF);

SetWindowRgn(Handle, rTemp, True);

DeleteObject(rTemp2);

rTitleBar := CreateEllipticRgn(4, 4, Width-4, Height-4);

rTemp := CreateEllipticRgn(CapY, CapY, Width-CapY, Height-CapY);

CombineRgn(rTitleBar, rTitleBar, rTemp, RGN_DIFF);

Vertices[0] := Point(0,0);

Vertices[1] := Point(Width, 0);

Vertices[2] := Point(Width DIV 2, Height DIV 2);

rTemp := CreatePolygonRgn(Vertices, 3, ALTERNATE);

CombineRgn(rTitleBar, rTitleBar, rTemp, RGN_AND);

DeleteObject(rTemp);

RL := ArcTan(Width / Height);

RR := -RL + (22 / Center.X);

X := Center.X-Round((Center.X-1-(CapY DIV 2))*Sin(RR));

Y := Center.Y-Round((Center.Y-1-(CapY DIV 2))*Cos(RR));

SB1 := TSpeedButton.Create(Self);

WITH SB1 DO

BEGIN

Parent := Self;

Left := X;

Top := Y;

Width := 14;

Height := 14;

OnClick := Button1Click;

Caption := 'X';

Font.Style := [fsBold];

END;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Close;

End;

procedure TForm1.WMNCHITTEST(var Msg: TWMNCHitTest);

begin

Inherited;

WITH Msg DO

WITH ScreenToClient(Point(XPos,YPos)) DO

IF PtInRegion(rTitleBar, X, Y) AND

(NOT PtInRect(SB1.BoundsRect, Point(X,Y))) THEN

Result := htCaption;

end;

procedure TForm1.WMNCActivate(var Msg: TWMncActivate);

begin

Inherited;

TitleBar(Msg.Active);

end;

procedure TForm1.WMSetText(var Msg: TWMSetText);

begin

Inherited;

TitleBar(Active);

end;

procedure TForm1.TitleBar(Act: Boolean);

VAR

TF : TLogFont;

R : Double;

N, X, Y : Integer;

begin

IF Center.X = 0 THEN Exit;

WITH Canvas DO

begin

Brush.Style := bsSolid;

Brush.Color := TitlColors[Act];

PaintRgn(Handle, rTitleBar);

R := RL;

Brush.Color := TitlColors[Act];

Font.Name := 'Arial';

Font.Size := 12;

Font.Color := TxtColors[Act];

Font.Style := [fsBold];

GetObject(Font.Handle, SizeOf(TLogFont), @TF);

FOR N := 1 TO Length(Caption) DO

BEGIN

X := Center.X-Round((Center.X-6)*Sin(R));

Y := Center.Y-Round((Center.Y-6)*Cos(R));

TF.lfEscapement := Round(R * 1800 / pi);

Font.Handle := CreateFontIndirect(TF);

TextOut(X, Y, Caption[N]);

R := R - (((TextWidth(Caption[N]))+2) / Center.X);

IF R < RR THEN Break;

END;

Font.Name := 'MS Sans Serif';

Font.Size := 8;

Font.Color := clWindowText;

Font.Style := [];

end;

end;

procedure TForm1.FormPaint(Sender: TObject);

begin

WITH Canvas DO

BEGIN

Pen.Color := clBlack;

Brush.Style := bsClear;

Pen.Width := 1;

Pen.Color := clWhite;

Arc(1, 1, Width-1, Height-1, Width, 0, 0, Height);

Arc((Width DIV 4)-1, (Height DIV 4)-1,

3*(Width DIV 4)+1, 3*(Height DIV 4)+1, 0, Height, Width, 0);

Pen.Color := clBlack;

Arc(1, 1, Width-1, Height-1, 0, Height, Width, 0);

Arc((Width DIV 4)-1, (Height DIV 4)-1,

3*(Width DIV 4)+1, 3*(Height DIV 4)+1, Width, 0, 0, Height);

TitleBar(Active);

END;

end;

end.

Как получить короткий путь файла если имеется длинный ("c:\Program Files" ==> "c:\progra~1")

GetShortPathName()

Как создать свою кнопку в заголовке формы (на Caption Bar)

Непосредственно такой функции вроде нет, но можно изловчиться. Нарисовать там кнопку вручную и обрабатывать команды нажатия мышки на Caption Bar.

Пример.

unit Main;

interface

uses

Windows, Buttons, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type

TForm1 = class(TForm)

procedure FormResize(Sender: TObject);

private

CaptionBtn : TRect;

procedure DrawCaptButton;

procedure WMNCPaint(var Msg : TWMNCPaint); message WM_NCPaint;

procedure WMNCActivate(var Msg : TWMNCActivate); message WM_NCACTIVATE;

procedure WMSetText(var Msg : TWMSetText); message WM_SETTEXT;

procedure WMNCHitTest(var Msg : TWMNCHitTest); message WM_NCHITTEST;

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Виртуальная библиотека Delphi»

Представляем Вашему вниманию похожие книги на «Виртуальная библиотека Delphi» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Виртуальная библиотека Delphi»

Обсуждение, отзывы о книге «Виртуальная библиотека Delphi» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x