Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.02;
Скачать: 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 вся ветка

Текущий архив: 2004.02.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.036 c
14-2377
Knight
2004-01-09 15:44
2004.02.02
Кто встречал какую-нить книгу по основам работы на компе?


4-2428
comwad
2003-11-21 12:42
2004.02.02
Как ассоциировать THandle файла в памяти с именем Name: String


1-2147
tria
2004-01-21 14:29
2004.02.02
Создать переменную текущего класса.


3-2025
Mery
2004-01-06 11:17
2004.02.02
Автоподстановка


7-2379
Duk_777
2003-11-15 10:27
2004.02.02
DLL