![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Добрый вечер прошу помощи.
Есть статичная таблица 14х14. Пользователю запрещено по ней кликать. Но если крутить колесико над Гридом, то через некоторое время вылазит ошибка Grid index out of range. Как это побороть? вылезает только при прокрутки. Код:
object SGBB: TStringGrid
AlignWithMargins = True
Left = 5
Top = 64
Width = 382
Height = 269
Margins.Left = 1
Margins.Top = 1
Margins.Right = 1
Margins.Bottom = 1
BiDiMode = bdRightToLeftReadingOnly
Color = clWhite
ColCount = 14
DefaultColWidth = 26
DefaultRowHeight = 18
DrawingStyle = gdsGradient
RowCount = 14
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -9
Font.Name = 'Tahoma'
Font.Style = [fsBold]
GradientEndColor = clWhite
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine]
ParentBiDiMode = False
ParentFont = False
TabOrder = 0
ColWidths = (
26
26
26
27
26
26
26
26
26
26
26
26
26
26)
endКод:
procedure TMF.OnSelectCell(Sender: TObject;ACol,ARow:Integer; var CanSelect:Boolean); begin CanSelect:=False; end; Код:
//r:TGridRect;
r.Left:=-1;
r.Top:=-1;
r.Bottom:=-1;
r.Right:=-1;
SGBB.Selection:=r; |
|
#2
|
||||
|
||||
|
Код:
type
TStringGrid = class(Grids.TStringGrid)
protected
procedure WMMOUSEWHEEL(var Msg: TMessage); message WM_MOUSEWHEEL;
end;
procedure TStringGrid.WMMOUSEWHEEL(var Msg: TMessage);
begin
Msg.Result:=0;
end; |
| Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
nixon232 (29.01.2014)
| ||
|
#3
|
|||
|
|||
|
Цитата:
Код:
TStringGrid = class(Vcl.Grids.TStringGrid)
protected
procedure WMMOUSEWHEEL(var Msg: TMessage); message WM_MOUSEWHEEL;
end;Код:
procedure PaintHand( S:TStringGrid ); |
|
#4
|
||||
|
||||
|
Цитата:
Тот код который написал NumLock нужно вставить в новый модуль (unit) и потом этот модуль добавить через uses в нужные модули (только это нужно сделать после Grids). |
| Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
nixon232 (29.01.2014)
| ||
|
#5
|
|||
|
|||
|
Большое спасибо за помощь, все как надо работает.
|
|
#6
|
|||
|
|||
|
Поторопился я радоваться. Выдает туже ошибку в этом обработчике
Код:
procedure TPForm.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); const SC_DragMove = $F012; begin ReleaseCapture; Perform(WM_SYSCOMMAND, SC_DragMove, 0); end; Код:
procedure TPForm.WMSysCommand(var Msg: TWMSysCommand);
begin
inherited;
if (Msg.CmdType and $FFF0) = SC_MOVE then
begin
FForm.Left:=FForm.Left+(MF.Left-mX);
FForm.Top:=FForm.Top+(MF.Top-mY);
PForm.Left:=PForm.Left+(MF.Left-mX);
PForm.Top:=PForm.Top+(MF.Top-mY);
mX:=MF.Left;
mY:=MF.Top;
end;
end;Последний раз редактировалось nixon232, 29.01.2014 в 20:54. |