3 / 3 / 1
Регистрация: 27.04.2010
Сообщений: 318
1

Добавление документа Word в ListBox

26.04.2012, 13:10. Показов 3169. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите сделать добавление документа Word в ListBox с компьютера чтобы название файла после добавления в ListBox сохранялось после закрытия приложения и вызывался этот файл
Вложения
Тип файла: rar сохранение документа.rar (187.7 Кб, 31 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2012, 13:10
Ответы с готовыми решениями:

Добавление срок в таблицу Word при заполнении документа Word из данных Excel
Всем привет! Я новичок в этом деле и нужна помощь. Есть таблица Excel с данными на основании...

Добавление документа MS Word в RichTextBox или другой контрол
Приветствую,нужно вывести в любой контрол содержимое файла ms word, вместе с изображениями и...

На оборотной стороне документа word в правой части документа, текст съезжает за границу документа
Добрый вечер. Есть код, который формирует документ из шаблона. И все вроде бы, но происходит что...

Заполнение документа Word несколько раз данными из другого документа
есть некий документ Word(test.docx). Нужно создать новый документ(test1.docx), и заполнить его...

18
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
26.04.2012, 14:58 2
Опиши в классе TForm1 переменную:

Delphi
1
2
3
  public
    { Public declarations }
    ListPath : string; // Вот так, например
, и
Delphi
1
2
3
4
5
procedure TForm1.FormCreate(Sender: TObject);
begin
   ListPath := ExtractFilePath(Application.ExeName) + 'doc.txt';
   ListBox1.Items.LoadFromFile(ListPath); // Везде работай с ее содержимым, а не с явно заданным именем
end;
, иначе твой файл doc.txt сохраняется в той папке, из которой был выбран последний DOC-файл.
1
3 / 3 / 1
Регистрация: 27.04.2010
Сообщений: 318
26.04.2012, 16:48  [ТС] 3
как сделать чтобы названия файлов из других папок при добавлении в ListBox (не только в которой программа) сохранялись и после закрытия программы их можно былобы открыть?

Добавлено через 15 минут
UI, помоги пожалуйста!

Добавлено через 1 час 14 минут
как при добавлении какого-либо документа написать название данноно документа в ListBox а не его путь?
Delphi
1
2
3
4
5
6
7
8
procedure TFPrikaz.Button6Click(Sender: TObject);
begin
with OpenDialog1 do
      if Execute then
      begin
        sListBox1.Items.Add(FileName)
      end;
end;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
26.04.2012, 18:50 4
Цитата Сообщение от Артём33 Посмотреть сообщение
как сделать чтобы названия файлов из других папок при добавлении в ListBox (не только в которой программа) сохранялись и после закрытия программы их можно былобы открыть?
То изменение, что я привел выше, этим и занимается. В файл doc.txt записываются любые пути, из любых папок, а сам файл doc.txt сохраняется в папке, откуда запускается твое приложение.
0
3 / 3 / 1
Регистрация: 27.04.2010
Сообщений: 318
26.04.2012, 21:05  [ТС] 5
как сделать чтобы названия файлов в ListBox были а не пути?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
26.04.2012, 21:35 6
Delphi
1
sListBox1.Items.Add(ExtractFileName(FileName));
Только как ты потом, зная одно имя файла, будешь с ним работать?
1
3 / 3 / 1
Регистрация: 27.04.2010
Сообщений: 318
26.04.2012, 21:51  [ТС] 7
мне просто чтобы эти файлы открывались по имени надо, спасибо щас попробую

Добавлено через 11 минут
а удалять записи вместе с самими файлами из delphi прямо нельзя?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
26.04.2012, 22:03 8
Имеется в виду удалять файлы при удалении строки из листбокса? Можно.

Но... Еще раз: если файл не лежит в текущей папке, ты не можешь удалять его, не зная полного пути. Поэтому я тебя и спрашивал выше, как ты работать собираешься с именами, а не с полными путями?
0
3 / 3 / 1
Регистрация: 27.04.2010
Сообщений: 318
26.04.2012, 22:40  [ТС] 9
понятно, ну просто плохо получается когда вмето имени пишется путь
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
26.04.2012, 23:00 10
Можно сделать так, чтобы отображалось только имя, но хранился весь путь. Показать?
0
3 / 3 / 1
Регистрация: 27.04.2010
Сообщений: 318
27.04.2012, 09:42  [ТС] 11
да, пожалуйста!
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
27.04.2012, 11:00 12
Лучший ответ Сообщение было отмечено volvo как решение

Решение

Как-то вот так (внимательно читай комментарии, я постарался все объяснить. Будут вопросы - задавай):

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
unit Unit3;
 
interface
 
uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls;
 
type
  // Класс - перехватчик. Описывается перед классом формы, и имеет
  // то же имя, что и VCL-евский класс TlistBox, поэтому при
  // добавлении на форму TListBox-а у него уже будут
  // методы (можно дописать и свойства, и поля, все что угодно),
  // присутствующие в новом классе. О том, что это за методы - ниже
  TListBox = class(StdCtrls.TListBox)
     procedure Clear; override;
     procedure SaveToFile(const fn : string);
     procedure LoadFromFile(const fn : string);
  end;
 
  TForm3 = class(TForm)
    btnAdd: TButton;
    ListBox1: TListBox;
    btnShow: TButton;
    OpenDialog1: TOpenDialog;
    procedure btnAddClick(Sender: TObject);
    procedure btnShowClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    ListPath : string;
  public
    { Public declarations }
  end;
 
var
  Form3: TForm3;
 
implementation
 
{$R *.dfm}
 
// Это доп. класс, для удобства использования свойства
// Objects. Потому что элемент, добавляемый в это свойство,
// должен быть наследником класса TObject
type
   tsObject = class // все КЛАССЫ - потомки TObject
      FullPath : string;
      constructor Create(s : string);
   end;
 
{ tsObject }
constructor tsObject.Create(s: string);
begin
   FullPath := s;
end;
 
// Добавляем новый файл в листбокс
procedure TForm3.btnAddClick(Sender: TObject);
var s : string;
begin
   if OpenDialog1.Execute then
   begin
      s := OpenDialog1.FileName;
      ListBox1.Items.AddObject(ExtractFileName(s), TObject(tsObject.Create(s)));
   end;
end;
 
// Показываем, что на самом деле хранится в выбранном
// поле листбокса. По аналогиии можно сделать и запуск этого
// файла, и удаление
procedure TForm3.btnShowClick(Sender: TObject);
begin
   ShowMessage(tsObject(ListBox1.Items.Objects[ListBox1.ItemIndex]).FullPath);
end;
 
// При уничтожении формы сохраняем всю информацию в файл
// (заметь, используется добавленный к ListBox-у метод SaveToFile,
// а не стандартный Items.SaveToFile, потому что второй запишет
// опять же только имена, без путей) и очищаем ListBox (если этого
// не сделать - будет утечка памяти, потому что к его содержимому
// добавлялись объекты, которые сами по себе не удалятся, это надо
// сделать программисту)
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   ListBox1.SaveToFile(ListPath);
   ListBox1.Clear;
end;
 
// При старте - составляем имя txt-файла, с которым будем работать,
// и читаем из него в ListBox, используя добавленный метод LoadFromFile,
// вместо Items.LoadFromFile
procedure TForm3.FormCreate(Sender: TObject);
begin
   ListPath := ExtractFilePath(Application.ExeName) + 'doc.txt';
   ListBox1.LoadFromFile(ListPath);
end;
 
 
{ TListBox }
// Теперь - о том, что делается в добавленных методах
 
// 1. Этот метод перекрывает стандартный Clear. Потому что
// нам теперь при очистке нужно не только сделать все то, что
// делалось раньше, но и удалить все добавленные Object-ы
procedure TListBox.Clear;
var i : integer;
begin
   // Вот мы их удаляем
   for i := 0 to Count - 1 do
      Items.Objects[i].Free;
   // А потом вызываем стандартный Clear
   inherited;
end;
 
// 2. Для чтения данных мы должны сделать нечто другое.
// Если просто прочесть содержимое файла в Items, то ListBox
// опять будет содержать полные пути. Поэтому:
procedure TListBox.LoadFromFile(const fn: string);
var
   i : integer;
   sL : TStringList;
begin
   // Читаем файл во временный TStringList
   sL := TStringList.Create;
   try
      sL.LoadFromFile(fn);
      // и каждый его элемент записываем в ListBox. Имя - в Items,
      // а полный путь - в Objects
      for i := 0 to sL.Count - 1 do
      begin
         Items.AddObject(ExtractFileName(sL[i]), TObject(tsObject.Create(sL[i])));
      end;
   finally
      FreeAndNil(sL); // Все, временный список больше не нужен
   end;
end;
 
// 3. При записи из ListBox-а в нужно сделать то же самое, что
// и при чтении. Записывать не содержимое Items, а содержимое
// Objects
procedure TListBox.SaveToFile(const fn: string);
var
   i : integer;
   sL : TStringList;
begin
   sL := TStringList.Create;
   try
      for i := 0 to Count - 1 do
         sL.Add(tsObject(Items.Objects[i]).FullPath);
      sL.SaveToFile(fn);
   finally
      FreeAndNil(sL);
   end;
end;
 
end.
Проект присоединять не стал: у меня Дельфи 2009, у тебя он просто не откроется.
2
3 / 3 / 1
Регистрация: 27.04.2010
Сообщений: 318
27.04.2012, 11:56  [ТС] 13
спасибо большое! все папробую разберусь думаю
0
3 / 3 / 1
Регистрация: 27.04.2010
Сообщений: 318
16.05.2012, 16:22  [ТС] 14
а как реализовать удаление и просмотр?
0
3 / 3 / 1
Регистрация: 27.04.2010
Сообщений: 318
19.05.2012, 18:50  [ТС] 15
UI, помоги пожалуйста
0
3 / 3 / 1
Регистрация: 27.04.2010
Сообщений: 318
21.05.2012, 13:06  [ТС] 16
UI, помоги пожалуйста реализовать удаление и просмотр?
0
3 / 3 / 1
Регистрация: 27.04.2010
Сообщений: 318
24.05.2012, 12:46  [ТС] 17
помогите!
0
3 / 3 / 1
Регистрация: 27.04.2010
Сообщений: 318
27.05.2012, 17:06  [ТС] 18
подскажите пожалуйста!
0
3 / 3 / 1
Регистрация: 27.04.2010
Сообщений: 318
29.05.2012, 21:30  [ТС] 19
как сделать просмотр документов?
0
29.05.2012, 21:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.05.2012, 21:30
Помогаю со студенческими работами здесь

Постраничная разбивка документа Word. Сохранение под разными именами.(данные из документа)
ТЗ: Сделать так чтобы данные из Excel перетягивались в Word, При этом файл ворд разбивался на 5...

При открытии документа word 2013 в word 2010 меняется структура текста
Здравствуйте. Для вуза сделал в ворд 2013 два реферата. Пошел распечатывать. Оказалось, что в том...

Добавление строк c listbox на listbox WinApi
Здравствуйте, подскажите пожалуйста как правильно сделать, чтобы выделенные строки в первом...

Из listbox в textbox, содержимое документа
Здравствуйте, на форме при нажатии кнопки, есть выбор папки, при выборе, все файлы с расширением ...

Поместить содержимое текстового документа в listBox
подскажите пожалуйста как поместить содержимое блокнота в listBox? нашел подобное на delphi...

Перенести данные из документа Excel в listbox
Имеется некоторый код на VBA Dim oExcel As Object Dim I As Integer Dim sh As Worksheet Set sh...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru