Topic: Содержимое папки во вкладке Page Control

К сожалению для себя не нашел из многочисленных примеров как сделать в форму вывод содержимого папки. Допустим есть некая форма с Page Control состоящая из нескольких закладок. На сервере лежат папки, в которых должна храниться документация (эл,схемы, инструкции, описания и др.). Как сделать чтобы при переключении вкладки отображалось содержимое соответствующей этой закладке папки. Папки имеют следующую структуру ../Pribor_1/Instrukcii/El_shemy/Akty/4ertezhy.

Re: Содержимое папки во вкладке Page Control

можно так

procedure FillGridFiles(Grid: TdbStringGridEx; path: string); // процедура чтения файлов в грид
var
    sl: TStringList;
    i,c: integer;
    NxTextColumn: TNxTextColumn;
begin
    sl := TStringList.Create;
    sl.Text := GetFilesList(path);

    Grid.Columns.Clear;
    try
        Grid.Columns.Add(TNxTextColumn);           
    except
    end;
    Grid.Columns[0].Color := clWhite;

    c := sl.Count-1;
    for i := 0 to c do
    begin
        Grid.AddRow;
        Grid.Cells[0, Grid.RowCount-1] := sl[i];
    end;
    sl.Free;
end;


procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
    FillGridFiles(Form1.TableGrid1, 'C:\Backup'); // вызов процедуры, с указанием из какой папки и в какой грид выводить список файлов
end;
Dmitry.

3 (edited by konstantin.gussev 2017-08-04 06:01:24)

Re: Содержимое папки во вкладке Page Control

Не выходит

Post's attachments

Attachment icon PageContorol.zip 324.68 kb, 359 downloads since 2017-08-04 

Re: Содержимое папки во вкладке Page Control

в конце скрипта должны бить эти строки

begin

end.

возможно вы их случайно удалили, т.е. в целом скрипт должен быть таким:

 procedure FillGridFiles(Grid: TdbStringGridEx; path: string); // процедура чтения файлов в грид
var
    sl: TStringList;
    i,c: integer;
    NxTextColumn: TNxTextColumn;
begin
    sl := TStringList.Create;
    sl.Text := GetFilesList(path);

    Grid.Columns.Clear;
    try
        Grid.Columns.Add(TNxTextColumn);           
    except
    end;
    Grid.Columns[0].Color := clWhite;

    c := sl.Count-1;
    for i := 0 to c do
    begin
        Grid.AddRow;
        Grid.Cells[0, Grid.RowCount-1] := sl[i];
    end;
    sl.Free;
end;


procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
    FillGridFiles(Form1.TableGrid1, 'C:\Backup'); // вызов процедуры, с указанием из какой папки и в какой грид выводить список файлов
end;

begin

end.                                             
Dmitry.

Re: Содержимое папки во вкладке Page Control

А почему ругается? Все сделано по вашему примеру.

Post's attachments

Attachment icon page_control.jpg 135.94 kb, 212 downloads since 2017-08-08 

Re: Содержимое папки во вкладке Page Control

konstantin.gussev wrote:

А почему ругается? Все сделано по вашему примеру.

Приложите пожалуйста ваш проект и сообщите версию используемой вами программы.

Dmitry.

7 (edited by konstantin.gussev 2017-08-11 12:09:05)

Re: Содержимое папки во вкладке Page Control

Я делаю просто в пустом проекте. С чистого листа не работает.

А для проекта например на фреиме frmEquipment есть вкладка "Чертежи" и для нее должно отображаться содержимое папки прямо в этои вкладке по нажатии на нее. И так для всех вкладочек. Проект прилагается. Версия программы 3.4

Post's attachments

Attachment icon Petroter.zip 924.98 kb, 335 downloads since 2017-08-11 

Re: Содержимое папки во вкладке Page Control

Ребята, как мне победить этот скрипт?

Re: Содержимое папки во вкладке Page Control

konstantin.gussev wrote:

Ребята, как мне победить этот скрипт?

Скачайте пожалуйста последнюю версию программы 3.5



Проект:

Post's attachments

Attachment icon Petroter_fixed.zip 602.64 kb, 372 downloads since 2017-08-17 

Dmitry.

Re: Содержимое папки во вкладке Page Control

Не работает

Post's attachments

Attachment icon petroter.jpg 146.96 kb, 313 downloads since 2017-08-18 

Re: Содержимое папки во вкладке Page Control

konstantin.gussev wrote:

Не работает

вы точно используете последнюю версию программы? Проверье это в окне О программе

Dmitry.

Re: Содержимое папки во вкладке Page Control

Странно, но в версии 3.4 не работает, а вот в 3.5 все хорошо. Есть еще один нюанс. Как теперь сделать чтобы в списке фаилов который появляется в гриде каждой из закладок можно было деать изменения. Тоесть можно было удалят и добавлять фаилы?

Re: Содержимое папки во вкладке Page Control

konstantin.gussev wrote:

Странно, но в версии 3.4 не работает, а вот в 3.5 все хорошо. Есть еще один нюанс. Как теперь сделать чтобы в списке фаилов который появляется в гриде каждой из закладок можно было деать изменения. Тоесть можно было удалят и добавлять фаилы?

Добавил такую возможность в ваш проект

Post's attachments

Attachment icon Petroter_fixed2.zip 603.69 kb, 396 downloads since 2017-08-23 

Dmitry.

14 (edited by konstantin.gussev 2017-09-01 09:31:03)

Re: Содержимое папки во вкладке Page Control

Да, действительно работает, осталось еще пара вопросов. Используя следующую часть скрипта нужно чтобы на место пути папки прописывалось не вручную, а подставлялась переменная. Например бралась из базы данных соответствующая записи столбца скажем position и столбца Plants и будет иметь вид что-то типа C:\3FE-1204_P3\Наименование вкладки. 3FE-1204 - запись в ячеике position, P3 - запись в ячеике Plants, а наеменование вкладки пишем самостоятельно. И можно ли содержимое вкладки показывать не в гриде, а например средствами windows explorer или пришаманить стороннии скрипт какой?




procedure frmEquipment_bAdd_OnClick (Sender: string; var Cancel: boolean);
var
    OpenDialog: TOpenDialog;
begin
    OpenDialog := TOpenDialog.Create(frmEquipment);
    if OpenDialog.Execute then
    begin
        CopyFile(OpenDialog.FileName, 'c:\temp\'+ExtractFileName(OpenDialog.FileName));
    end;
    OpenDialog.Free;
    FillGridFiles(frmEquipment.TableGrid1, 'C:\temp');
end;

procedure frmEquipment_bDel_OnClick (Sender: string; var Cancel: boolean);
var
    s: string;
begin
    s := frmEquipment.TableGrid1.Cells[0, frmEquipment.TableGrid1.SelectedRow];
    DeleteFile(s);
    FillGridFiles(frmEquipment.TableGrid1, 'C:\temp');
end;

procedure frmEquipment_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
    FillGridFiles(frmEquipment.TableGrid1, 'C:\temp');