Намалювати сітку на формі

Намалювати сітку на формі

Привіт, знавці!
Хочу намалювати сітку на формі (панелі, ще чомусь нитка), ніби як в Делфі в дизайнера форми точки, але краще сітку. передбачається зробити з цієї форми / панелі / ще чого теж дизайнер і розтягувати по ньому компоненти (хотілося б просто спадкоємці TGraphicControl). Як і де потрібно малювати сітку, і (це правда вже інше питання), як зробити такий компонент, щоб його потім мишкою тягати?

Як і де потрібно малювати сітку
обробив Paint спадкоємця TGraphicControl, і не забудь св-во Align. (Пол години не більше)
як зробити такий компонент, щоб його потім мишкою тягати
будь-який спадкоємець від TControl.

як зробити такий компонент, щоб його потім мишкою тягати
будь-який спадкоємець від TControl.
що потрібно обробляти? яке повідомлення? і як?
общерекомендуемое mousedown, releasecapture, self.perform (чогось там) працювало на tbutton, але не на спадкоємця TGraphicControl

Dark Hunter (20.01.04 20:17) [2]
що потрібно обробляти? яке повідомлення? і як?
Механізм DragDrop чув про таке?

в продовження теми:
вийшла форма, на ній спадкоємець TCustomPanel з цієї сіткою, розміри панелі багато більше розмірів форми. З'явилися скроллбар, і це чудово.
Але: сітка малюється тільки на панелі покласти який-нить компонент, перестає отрісовиваться спочатку невидима частина сітки на цій панелі, тільки лівий верхній кут

800х600 (в моєму випадку такий дозвіл). В інших місцях звичайна сіра панель :(
як малювати сітку по всій панелі?

Перепиши для твоєї панелі подія OnPaint - де будеш малювати сітку (по всій панелі).

пишу в обробнику OnPaint:

Brush.Color: = FGridBackColor;
Brush.Style: = bsSolid;
Rectangle (Rect);
if FShowGrid then begin
Brush.Color: = FGridForeColor;
Brush.Style: = bsCross;
Rectangle (Rect);
end
сітка малюється повністю.
Варто на неї в цій спочатку видимій області покласти наприклад TLabel (він спадкоємець TGraphicControl), або мій компонент (теж від TGraphicControl) сітка малюється тільки на цій частині зліва вгорі, розміром з екран.
Розміри панелі залишаються такими, як і були (4000 * 3000).
Це глюк в віндовсі або у кого. )

соор за неросійське побудова речень

І де ж тут сітка - я бачу лише два Rectangle причому непол.

мої думки:
перша заливка суцільна, кольором фону FGridBackColor (захищений член класу моєї панелі);
друга, за умови, що потрібно малювати сітку - заливка патерном bsCross кольором FGridForeColor (аналогічно до);
енд;
поясни свій погляд на ситуацію, будь ласка

Я не знаю що у тебе але я ось пробував створити компонент

Uses
Windows, Messages, SysUtils, Classes, Controls, ExtCtrls, Graphics;

Procedure GrPanel.Paint;
Begin
Inherited Paint;
With Canvas Do
Begin
Brush.Style: = bsSolid;
Brush.Color: = clBtnFace;
FillRect (ClientRect);
Brush.Style: = bsCross;
Brush.Color: = clRed;
Rectangle (ClientRect);
End;
End;

Procedure Register;
Begin
RegisterComponents ( "Standard", [GrPanel]);
End;

Поставив його нема на форму а в ScrollBox і додав на панель кнопку, лейбл - при прокручуванні все нормально сітка видна по всій панелі.

Схожі статті