![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужно определить фиксированную часть в <B>TDBGrid </B> [D6]
andrey__ © (2003-05-27 15:25:00)Подскажите. Нужно определить фиксированную часть в TDBGrid
Как сделать нужную колонку фиксированой так чтобы при прокрутке она не исчезала (на подобие свойства FixedCols у компонента CustomGrid )
sniknik (2003-05-29 17:08:00) [1]NAlexey © (29.05.03 16:57)
> А вообще FixedCols противоестественно для DBGrid, уходи на String или DrawGrid.
не совсем, есть такие Rx... RxDBGrid вполне естественно это обрабатывают, и наследуют именно DBGrid (свойство FixedCols в паблик а не в протектед). кстати можно посмотреть как там сделано, но советовать не могу сам их не использую и фиксированных полей не делал (не было нужды).
NAlexey (2003-05-29 16:57:00) [2]А вообще FixedCols противоестественно для DBGrid, уходи на String или DrawGrid.
NAlexey (2003-05-29 16:47:00) [3]Это понятно, но ты не делаешь конкретных выводов. Если тебе надо просто не обрабатывать клик по фиксированному столбцу, сделай так: доберись до события WM_LBUTTONDOWN(уж не знаю как ты это сделаешь, на твое усмотрение), найди ячейку на которую клик(вернее номер столбца), если это фиксированный - не обрабатывать. Я по быстрому накидал так:
procedure TForm1.MyOnMessage(var Msg: TMsg; var Handled: Boolean);
var
P: TPoint;
Cell: TGridCoord;
H: HWND;
Ctl: TWinControl;
begin
if Msg.message = WM_LBUTTONDOWN then
begin
GetCursorPos(P);
H := WindowFromPoint(P);
if H <> 0 then
begin
Ctl := FindControl(H);
if Assigned(Ctl) then
if (Ctl is TCustomDBGrid) and (Ctl = DBGrid1) then
begin
P := DBGrid1.ScreenToClient(P);
Cell := DBGrid1.MouseCoord(P.X, P.Y);
if Cell.X < 2 then Handled := True;
end;
end;
end;
end;
andrey__ (2003-05-29 15:29:00) [4]Делаю следующее
TMyDBGrid=class(TDBGrid)
TMyDBGrid(DBGrid1).FixedCols := 1
когда я делаю активной ячейку из фиксированого столбца у меня рябом появляется этот же столбец но уже в виде нефиксированого(т.е. будет два 1-й фикс. 2-й нефикс. одинаковых). Но при горизонтальной прокрутке нефикс. исчезает и опять появляется при активизации любой другой ячейки (не фикс.) а потом активизации ячейки из фикчир столбца.
NAlexey (2003-05-29 14:29:00) [5]>Уважаемые ... подскажите!
Чё подсказать то? Опиши как 4-х летнему.
andrey__ (2003-05-29 13:44:00) [6]Уважаемые ... подскажите!
andrey__ (2003-05-29 09:30:00) [7]подскажите еще.
andrey__ (2003-05-28 16:13:00) [8]>Поставь на колонку READONLY:=TRUE
ставил не помогло.
Stas (2003-05-28 15:39:00) [9]Поставь на колонку READONLY:=TRUE
andrey__ (2003-05-28 15:32:00) [10]Что делать с глюком?
Может запретить пользователю попадать в эту колонку. Как это сделать?
Или как отследить, что пользователь пытается активизировать ячейку зафиксированного столбца и отработать событие...
гончий (2003-05-28 15:18:00) [11]Первый FixedCol - это индикатор, если уберешь его в свойствах, тогда будет 1, а не 2 :)
andrey__ (2003-05-28 15:00:00) [12]Подскажите как избавиться от глюка <когда я делаю активной ячейку из фиксированого столбца у меня рябом появляется этот же столбец но уже в виде нефиксированого(т.е. будет два одинаковых 1-й фикс. 2-й нефикс. одинаковых)>
andrey__ (2003-05-28 11:48:00) [13]>TMyDBGrid(DBGrid1).FixedCols := 1
только мне пришлось написать
TMyDBGrid(DBGrid1).FixedCols := 2;
почему?
И еще подскажите как избавится от следующего: когда я делаю активной ячейку из фиксированого столбца у меня рябом появляется этот же столбец но уже в виде нефиксированого(т.е. будет два одинаковых 1-й фикс. 2-й нефикс. одинаковых)
Sandman25 (2003-05-27 16:10:00) [14]FixedCol является protected.
Возможно, надо объявить
TMyDBGrid=class(TDBGrid)
и вызвать
TMyDBGrid(DBGrid1).FixedCols := 1
andrey__ (2003-05-27 15:51:00) [15]Я немного уточню. Мне нужно , чтобы крайняя левая колонка оставалась на месте при горизонтальной прокрутке.