![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
DELETED MESSAGE
Последний раз редактировалось cmepthuk, 19.07.2016 в 19:04. |
|
#2
|
||||
|
||||
|
Что по-твоему должно происходить? Рисуй на TImage, чтобы не стиралось.
|
|
#3
|
|||
|
|||
|
DELETED MESSAGE
Последний раз редактировалось cmepthuk, 19.07.2016 в 19:04. |
|
#4
|
||||
|
||||
|
Нужно посмотреть, а пока у тебя 1 ошибка и неудачный выбор отрисовки.
Код:
DC := GetWindowDC(Handle); Код:
LineTo(0, mainForm.Height - padding); LineTo(mainForm.Width - padding, mainForm.Height - padding); LineTo(mainForm.Width - padding, 0); LineTo(0, 0); |
|
#5
|
|||
|
|||
|
DELETED MESSAGE
Последний раз редактировалось cmepthuk, 19.07.2016 в 19:04. |
|
#6
|
||||
|
||||
|
И всех делов:
Код:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(Handle, WM_SYSCOMMAND, $F012, 0);
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
with Canvas do
begin
Pen.Color := clRed;
Pen.Style := psSolid;
Pen.Width := 1;
Brush.Style := bsClear;
Rectangle(0, 0, ClientWidth - 1, ClientHeight - 1);
end;
end; |
|
#7
|
||||
|
||||
|
Цитата:
Код:
ReleaseDC(Handle, DC) |
|
#8
|
|||
|
|||
|
DELETED MESSAGE
Последний раз редактировалось cmepthuk, 19.07.2016 в 19:04. |
|
#9
|
||||
|
||||
|
Я прежде чем выкладывать проверяю - не пропадает.
Так бы и сказал, что нужно рисовать не на форме. |
|
#10
|
|||
|
|||
|
DELETED MESSAGE
Последний раз редактировалось cmepthuk, 19.07.2016 в 19:04. |
|
#11
|
||||
|
||||
|
Цитата:
2. В данном случае отрисовка должна идти не на OnPaint-е, а на WMNCPaint. |
|
#12
|
||||
|
||||
|
Вот тебе рамка на форме и на border-е.
Код:
unit Unit30;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormPaint(Sender: TObject);
procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(Handle, WM_SYSCOMMAND, $F012, 0);
end;
procedure TForm1.FormPaint(Sender: TObject);
var
aRect : TRect;
begin
SetRect(aRect, 0, 0, ClientWidth, ClientHeight);
InflateRect(aRect, -5, -5);
with Canvas do
begin
Pen.Color := clRed;
Pen.Style := psSolid;
Pen.Width := 1;
Brush.Style := bsClear;
Rectangle(aRect.Left, aRect.Top, aRect.Right - 1, aRect.Bottom - 1);
end;
end;
procedure TForm1.WMNCPaint(var Message: TMessage);
var
DC : HDC;
aRect : TRect;
Pen,
OldPen : HPEN;
Brush : HBRUSH;
begin
inherited;
DC := GetWindowDC(Handle);
try
SetRect(aRect, 0, 0, Width, Height);
Pen := CreatePen(PS_SOLID, BorderWidth, clBlue);
OldPen := SelectObject(DC, Pen);
Brush := SelectObject(DC, GetStockObject(NULL_BRUSH));
Rectangle(DC, 0, 0, Form1.Width, Form1.Height);
SelectObject(DC, Brush);
DeleteObject(SelectObject(DC, OldPen));
finally
ReleaseDC(Handle, DC);
end;
Message.Result := 1;
end;
end. |
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
cmepthuk (08.10.2012)
| ||
|
#13
|
|||
|
|||
|
DELETED MESSAGE
Последний раз редактировалось cmepthuk, 19.07.2016 в 19:04. |
|
#14
|
||||
|
||||
|
У меня ничего не мерцает. Дельфи 7, WinXP.
Цитата:
|
|
#15
|
|||
|
|||
|
DELETED MESSAGE
Последний раз редактировалось cmepthuk, 19.07.2016 в 19:04. |