Topic: Tablgrid

Уважаемый Дмитрий!
На форме имеется TableGrid, в котором имеется 20 колонок. Также имеется кнопка вывода результатов в экзел. На экзеле будет данные всех 20 колонок. Теперь вопрос.
В делфи насколько я помню имеется выбор колонок которые будут отображаться на TableGrid, т.е. могу выбрать те колонки которые мне нужны для вывода в экзель. Как реализовать эту идею в MVD? Спасибо заранее.

Re: Tablgrid

Можно, создайте для кнопки с дествием "Открыть в Excel" два события, OnClick и OnAfterClick


procedure Form1_Button5_OnClick (Sender: string; var Cancel: boolean);
begin
    // скрываем необходимые колонки (1-ая и 4-ая)
    Form1.TableGrid1.Columns[0].Visible := False;
    Form1.TableGrid1.Columns[3].Visible := False;
end;

procedure Form1_Button5_OnAfterClick (Sender: string);
begin
    // восстанавливаем обратно скрытые колонки
    Form1.TableGrid1.Columns[0].Visible := True;
    Form1.TableGrid1.Columns[3].Visible := True;
end;
Dmitry.

Re: Tablgrid

Можно ли сделать это при помощи чекбокс? Например каждая колонка имеет свой чекбокс и если в чекбоксе стоит галочка то соответствующая колонка будет отображена на гриде и наоборот при снятии галочки она будет не видна, т.е. спрятана.

Re: Tablgrid

Можно

procedure Form1_Button5_OnClick (Sender: string; var Cancel: boolean);
begin
    Form1.TableGrid1.Columns[0].Visible := Form1.CheckBox1.Checked;
    Form1.TableGrid1.Columns[1].Visible := Form1.CheckBox2.Checked;
    Form1.TableGrid1.Columns[2].Visible := Form1.CheckBox3.Checked;
    Form1.TableGrid1.Columns[3].Visible := Form1.CheckBox4.Checked;

end;

procedure Form1_Button5_OnAfterClick (Sender: string);
begin
    Form1.TableGrid1.Columns[0].Visible := True;
    Form1.TableGrid1.Columns[1].Visible := True;
    Form1.TableGrid1.Columns[2].Visible := True;
    Form1.TableGrid1.Columns[3].Visible := True;
end;

вы говорите все еще чтобы скрыть колонки при экспорте в Excel? Или уже хотите скрывать колонки в гриде?

Dmitry.

Re: Tablgrid

По вашему скрипту все отлично понятно.
Объясню еще раз на примере. На форме имеется грид, в котором имеется 6 колонок. Также на форме имеется 6 чекбоксов.

№   Имя    Фамилия    Адрес     Телефон    Должность

Чекбокс №1 - №
Чекбокс №2 - Имя
Чекбокс №3 - Фамилия
Чекбокс №4 - Адрес
Чекбокс №5 - Телефон
Чекбокс №6 - Должность

По умолчанию в гриде показываются все 6 колонок. Чекбоксы отмечены, т.е. во всех чекбоксах имеются галочки. Если снять галочку с чекбокс №3 и №5 то в гриде не будет отображаться Фамилия и Телефон. Затем при нажатии кнопки Export to Excel экспортирую оставшиеся в экзель. Если востановить галочки №3 и №5 то соответственно в гриде будут отображаться Фамилия и Телефон с другими колонками. И опять же при нажатии на кнопку экспортирую все колонки в Excel. Типа вот так.

Re: Tablgrid

Пример


procedure Form1_CheckBox4_OnClick (Sender: string);
begin
    Form1_TableGrid1_OnChange('');
end;

procedure Form1_CheckBox3_OnClick (Sender: string);
begin
    Form1_TableGrid1_OnChange('');
end;

procedure Form1_CheckBox2_OnClick (Sender: string);
begin
    Form1_TableGrid1_OnChange('');
end;

procedure Form1_CheckBox1_OnClick (Sender: string);
begin
    Form1_TableGrid1_OnChange('');
end;

procedure Form1_TableGrid1_OnChange (Sender: string);
begin
    Form1.TableGrid1.Columns[0].Visible := Form1.CheckBox1.Checked;
    Form1.TableGrid1.Columns[1].Visible := Form1.CheckBox2.Checked;
    Form1.TableGrid1.Columns[2].Visible := Form1.CheckBox3.Checked;
    Form1.TableGrid1.Columns[3].Visible := Form1.CheckBox4.Checked;
end;
Dmitry.

Re: Tablgrid

спасибо, попробую отпишусь