Вниз
Скачать: CL | DM;

Нарисовать сетку на форме   Найти похожие ветки 

← →
Dark Hunter   (2004-01-20 18:58) [0]

Здравствуйте, знатоки!
Хочу нарисовать сетку на форме (панели, ещё чём-нить), вроде как в делфи в дизайнере формы точки, но лучше сетку. предполагается сделать из этой формы/панели/ещё чего тоже дизайнер и растаскивать по нему компоненты (хотелось бы просто наследники TGraphicControl). Как и где нужно рисовать сетку, и (это правда уже другой вопрос), как сделать такой компонент, чтоб его потом мышкой таскать?


← →
Семен Сорокин ©   (2004-01-20 19:03) [1]

Как и где нужно рисовать сетку
обработай Paint наследника TGraphicControl, и не забудь св-во Align. (пол часа не больше)
как сделать такой компонент, чтоб его потом мышкой таскать
любой наследник от TControl.


← →
Dark Hunter   (2004-01-20 20:17) [2]

как сделать такой компонент, чтоб его потом мышкой таскать
любой наследник от TControl.

что нужно обрабатывать? какое сообщение? и как?
общерекомендуемое mousedown, releasecapture, self.perform(чего-то там) работало на tbutton, но не на наследнике TGraphicControl


← →
Семен Сорокин ©   (2004-01-21 09:09) [3]

Dark Hunter (20.01.04 20:17) [2]
что нужно обрабатывать? какое сообщение? и как?

Механизм Drag&Drop слыхал о таком?


← →
Dark Hunter   (2004-01-21 13:27) [4]

в продолжение темы:
получилась форма, на ней наследник TCustomPanel с этой сеткой, размеры панели много больше размеров формы. Появились скроллбары, и это замечательно.
Но: сетка рисуется только на панели положить какой-нить компонент, перестаёт отрисовываться изначально невидимая часть сетки на этой панели, только левый верхний угол ~800х600 (в моём случае такое разрешение). В остальных местах обычная серая панель :(
как рисовать сетку по всей панели?


← →
Serge ©   (2004-01-21 13:40) [5]

Перепиши для твоей панели событие OnPaint - где будешь рисовать сетку (по всей панели).


← →
Dark Hunter   (2004-01-21 16:10) [6]

пишу в обработчике 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).
Это глюк в виндовсе или у кого? :)

соори за нерусское построение предложений


← →
Serge ©   (2004-01-21 16:29) [7]

И где же тут сетка - я вижу всего два Rectangle причем неполые.


← →
darkhunter ©   (2004-01-21 16:33) [8]

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


← →
Serge ©   (2004-01-21 18:19) [9]

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

Unit GridPanel;

Interface

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

Type
GrPanel = Class(TCustomPanel)
private
{ Private declarations }
protected
{ Protected declarations }
Procedure Paint; override;
public
{ Public declarations }

published
{ Published declarations }
End;

Procedure Register;

Implementation

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;

End.

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.015 c
1-2102
Grugan
2004-01-21 20:34
2004.02.02
Microsoft Outlook


6-2253
An@toliK
2003-11-26 13:17
2004.02.02
Непрерывный поток данных через сеть...


1-2106
killer
2004-01-18 00:33
2004.02.02
Ярлык около кнопки


1-2098
Opryshok
2004-01-19 15:07
2004.02.02
Easy Parse HTML


1-2224
Goida
2004-01-20 15:50
2004.02.02
Рамка таблицы в Word.




   Наверх