Форум: "Основная";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];
ВнизНарисовать сетку на форме Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c