![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Видимость колонок в StringGrid [D2005, XP]
Крапивин Олег © (2010-06-07 10:43:00)Здравствуйте уважаемые Мастера.
Такой вопрос: имеется таблица StrringGrid с десятью полями. Смотреть все неудобно и хотелось бы иметь возможность включать-выключать отдельные колонки. В DBGrid есть свойство DBrid.Columns[N].Visible, а в стринггриде? По идее должно быть, в иерархии класса есть компонент Grids.TCustomDrawGrids, а как до него добраться.
Подскажите пожалуйста где копать?
Anatoly Podgoretsky (2010-09-28 12:05:00) [1]Правильно решение - удаление и восстановление колонок.
Anatoly Podgoretsky (2010-09-28 11:59:00) [2]> бумбум (28.09.2010 11:17:11) [11]
Свойство или прямо видно, через наследование или доступно через приведение к
предку.
12 (2010-09-28 11:49:00) [3]вариант с хаком и опасностью увеличения colCount (потом юзается добавленный столбец)
идея будет понятно, думаю
пример работает
если нужно сдать преподу и забыть - можно юзать
type
TForm1 = class(TForm)
btn1: TButton;
strngrd1: TStringGrid;
procedure btn1Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;
TCG = class (TCustomGrid);
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure HideColumn(var SG:TStringGrid; Col:integer);
var
n: Integer;
begin
n := SG.ColCount;
SG.Cells[Col,0] := SG.Cells[Col,0] + 'Кукарача';
TCG(SG).MoveColumn(Col, n -1);
SG.ColCount := SG.ColCount-1;
end;
procedure ShowColumn(var SG:TStringGrid; Col:integer);
var
s:string;
n,k:Integer;
begin
SG.ColCount := SG.ColCount + 1;
n:= SG.ColCount -1;
s := SG.Cells[n, 0];
k:= Pos('Кукарача', s);
if k <> 0 then
begin
SG.Cells[n, 0] := StringReplace(SG.Cells[n, 0],'Кукарача','',[rfReplaceAll]);
TCG(SG).MoveColumn(n, col);
end else
SG.ColCount := SG.ColCount - 1;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
HideColumn(strngrd1, 2);
ShowMessage( '' );
ShowColumn(strngrd1, 2);
end;
бумбум (2010-09-28 11:17:00) [4]Знаю два варианта:
> Если поставить ширину колонки в -1, то при переходе по колонкам
> курсор все равно переходит на нее.
сделай чтоб перескакивала
Или пиши процедуру которая будет сдвигать всё содержимое колонок к указанной как удаляемой и StringGrid1.ColCount:=StringGrid1.ColCount-1;
> Anatoly Podgoretsky © (07.06.10 12:12) [1]
> До него не надо
> добираться, все что нужно доступно через наследование, это
> часть триединого бога ООП
Интересно как?
TStringGrid(StringGrid1).Columns[3].Visible:= false;
Типа как то так но подругому?
Плохиш (2010-09-28 10:32:00) [5]
> LudmilKo (28.09.10 06:43) [9]
Тут уже надо уборщицу отправить заниматься прямыми обязанностями и нанять программиста.
LudmilKo (2010-09-28 06:43:00) [6]Если поставить ширину колонки в -1, то при переходе по колонкам курсор все равно переходит на нее.
MoDErahN (2010-08-28 00:51:00) [7]Просто выставляем ширину колонки в -1
TStringGrid.ColWidths[номер] := -1;
Leonid Troyanovsky (2010-06-08 20:34:00) [8]
> Плохиш © (08.06.10 20:29) [6]
> Нет, Breite.
Danke!
Глядишь, так немецкий язык и освоим :)
--
Regards, LVT.
Плохиш (2010-06-08 20:29:00) [9]
> Leonid Troyanovsky © (07.06.10 22:17) [5]
>
>
> > Плохиш © (07.06.10 19:49) [4
>
> Weite?
Нет, Breite.
Leonid Troyanovsky (2010-06-07 22:17:00) [10]
> Плохиш © (07.06.10 19:49) [4
Weite?
--
Regards, LVT.
Плохиш (2010-06-07 19:49:00) [11]
> Крапивин Олег (07.06.10 10:43)
Наверное в вашей справке об этом не написано, но у колонок сетки строк есть свойство "ширина".
Leonid Troyanovsky (2010-06-07 15:48:00) [12]
> Крапивин Олег (07.06.10 10:43)
> Смотреть все неудобно и хотелось бы иметь возможность включать-
> выключать отдельные колонки. В DBGrid есть свойство DBrid.
> Columns[N].Visible,
Возьми TClientDataSet в качестве хранилища
(Using a client dataset with file-based data)
и наслаждайся data-aware контролами.
Сегодня нужно скрыть колонку, завтра - напечатать отчет.
--
Regards, LVT.
Крапивин Олег (2010-06-07 13:06:00) [13]Простите Анатолий, не совсем понятно. В ДБГриде Visible лежит практически на поверхности, а где его искать в сетке строк?
Anatoly Podgoretsky (2010-06-07 12:12:00) [14]> Крапивин Олег (07.06.2010 10:43:00) [0]
До него не надо добираться, все что нужно доступно через наследование, это
часть триединого бога ООП