Виртуальная библиотека Delphi - [20]
> 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.
>GetShortPathName()
Непосредственно такой функции вроде нет, но можно изловчиться. Нарисовать там кнопку вручную и обрабатывать команды нажатия мышки на 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;
> procedure WMNCLButtonDown(var Msg : TWMNCLButtonDown); message WM_NCLBUTTONDOWN;
> public
> { Public declarations }
> end;
>var
> Form1: TForm1;
>implementation
>const
> htCaptionBtn = htSizeLast + 1;
>{$R *.DFM}
>procedure TForm1.DrawCaptButton;
>var
> xFrame, yFrame, xSize, ySize : Integer;
> R : TRect;
>begin
> //Dimensions of Sizeable Frame
> xFrame := GetSystemMetrics(SM_CXFRAME);
> yFrame := GetSystemMetrics(SM_CYFRAME);
> //Dimensions of Caption Buttons
> xSize := GetSystemMetrics(SM_CXSIZE);
> ySize := GetSystemMetrics(SM_CYSIZE);
> //Define the placement of the new caption button
> CaptionBtn := Bounds(Width - xFrame - 4*xSize + 2,
> yFrame + 2, xSize - 2, ySize - 4);
>//Get the handle to canvas using Form's device context
> Canvas.Handle := GetWindowDC(Self.Handle);
> Canvas.Font.Name := 'Symbol';
> Canvas.Font.Color := clBlue;
> Canvas.Font.Style := [fsBold];
> Canvas.Pen.Color := clYellow;
> Canvas.Brush.Color := clBtnFace;
> try
> DrawButtonFace(Canvas, CaptionBtn, 1, bsAutoDetect, False, False, False);
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге собраны предания и поверья о призраках ночи — колдунах и ведьмах, оборотнях и вампирах, один вид которых вызывал неподдельный страх, леденивший даже мужественное сердце.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
…«Песнь о Нибелунгах» принадлежит к числу наиболее известных эпических произведений человечества. Она находится в кругу таких творений, как поэмы Гомера и «Песнь о Роланде», «Слово о полку Игореве» и «Божественная комедия» Данте — если оставаться в пределе европейских литератур…В. Г. Адмони.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.