Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как из DBGrid экспортировать в Word и Excel? 
V
    Опции темы
Riddik
Дата 1.6.2008, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 2.12.2006

Репутация: нет
Всего: нет



Нужно из DBGrid вывести в Word, и желательно в Excel. Лучше сразу в Word.

Причём очень желательно грид прерывать в ворде  заголовками.

Это всё вообще возможно?

Добавлено через 3 минуты и 17 секунд
Можно даже миновать грид, сразу запросами накидать табличке в Ворд. Только как?
PM MAIL   Вверх
Данкинг
Дата 1.6.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Возможно, если поюзать поиск на форуме или в DRKB на предмет работы с WORD и/или EXCEL. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Riddik
Дата 1.6.2008, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 2.12.2006

Репутация: нет
Всего: нет



Извините за тупость, что такое DRKB?
PM MAIL   Вверх
Данкинг
Дата 1.6.2008, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Riddik @ 1.6.2008,  19:07)
Извините за тупость, что такое DRKB?

тык


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Riddik
Дата 1.6.2008, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 2.12.2006

Репутация: нет
Всего: нет



Благодарю smile 


А в поиске по форуму, кстати, ничего нет, лишь одна тема, где человек был недоволен скоростью. С неё ничего не понятно.
PM MAIL   Вверх
Данкинг
Дата 1.6.2008, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Riddik @  1.6.2008,  21:47 Найти цитируемый пост)
А в поиске по форуму, кстати, ничего нет, лишь одна тема, где человек был недоволен скоростью. С неё ничего не понятно. 

тык


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Riddik
Дата 1.6.2008, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 2.12.2006

Репутация: нет
Всего: нет



Спасибо! 
PM MAIL   Вверх
Riddik
Дата 2.6.2008, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 2.12.2006

Репутация: нет
Всего: нет



И всё же никак!

Искал ещё и в других местах - всё никак! Про DBGrid ничего! 
Куча примеров со StringGrid, но там совсем другие методы, свойства и т.д., не работает с DBGrid!

Я всё сделал с Word'ом, осталось добавить табличку и всё! Только как таблицу из DBGrid втащить в word - не пойму!

Помогите пожауйста!
PM MAIL   Вверх
Zmitro
Дата 3.6.2008, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 19.3.2008

Репутация: 1
Всего: 1



вот вам еще один тык
PM MAIL   Вверх
Beltar
Дата 3.6.2008, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: нет
Всего: 7



Вопрос неправильный. Сетка данные не содержит, выводи их из набора данных, работа с Excel и Word на этом форуме подробно описана и пришпилена.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Akella
Дата 3.6.2008, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Вам сюда
http://forum.vingrad.ru/forum/delphi-activ...-corba-ole.html

там точно есть то, что ты хочешь
PM MAIL   Вверх
Riddik
Дата 3.6.2008, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 2.12.2006

Репутация: нет
Всего: нет



Огромное спасибо, сейчас буду делать - спасибо!
PM MAIL   Вверх
Riddik
Дата 3.6.2008, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 2.12.2006

Репутация: нет
Всего: нет



Короче фиг с ним. Буду выводить через ADOQuery, работы в разы теперь больше  smile 

Из DBGrid можно выводить, только я не нашёл как. Перелопатил все ссылки- нету! Чего только там нет, но этого нет.

Код

DBGrid1.Fields[0].Text;


Этот код посылает текст из первой или выбранной пользователем строки. Т.е. я могу лишь выбрать поля этой строки для вывода данных, меняю 0 на нужный номер поля но как, блин, переключаться на следующую строку - уже всю бошку сломал...
PM MAIL   Вверх
Beltar
Дата 5.6.2008, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: нет
Всего: 7



Цитата

Из DBGrid можно выводить, только я не нашёл как.


На практике обычно нужно строить отчет, а показывать сетку или нет это опционально. И какая хрен разница обращаться напрямую Query.FieldByName, или вытаскивать это же поле, через какие-то Fields?
И я бы вообще на время построения сетку залочил нафиг, т. к. ткнуть в нее мышкой и тут же сместиться курсор в наборе данных.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
puncher
Дата 7.6.2008, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 5.12.2007

Репутация: нет
Всего: нет



Примерно так: (пример из рабочей программы, адаптировать особо не стал)
Код

  Screen.Cursor := crHourGlass;
  nCol := DBGrid.FieldCount;  // колонок
  nRow := DBGrid.DataSource.DataSet.RecordCount;  // строк
// Запись, на которой пользователь останавливается в DBGrid
  CurrentBookmark :=DBGrid.DataSource.DataSet.GetBookmark; // запомнить позицию
// Запретим мерцание грида в процессе работы отчёта
  DBGrid.DataSource.DataSet.DisableControls;
  i := 0;
  for CurrCol := 0 to nCol - 1 do
    if DBGrid.Columns[CurrCol].Width>0 then // есть на экране
      Inc(i);
  aDataWidth := i;
  aDataXL:=VarArrayCreate([1, nRow+1, 1, aDataWidth], varVariant); // +1 для заголовков
  i := 1;
  for CurrCol := 0 to nCol - 1 do
    if DBGrid.Columns[CurrCol].Width>0 then begin // есть на экране
      aDataXL[1, i] := DBGrid.Columns[CurrCol].Title.Caption; // вывожу заголовки
      ...
      Inc(i);
    end;
  DM.ADOQuery.First;
  CurrRow := 2;
  while not DM.ADOQuery.Eof do begin // по строкам
    i := 1;
    for CurrCol := 0 to nCol - 1 do
      if DBGrid.Columns[CurrCol].Width>0 then begin // есть на экране
        aDataXL[CurrRow, i] := DM.ADOQuery.Fields[CurrCol].AsString;
        Inc(i);
      end; // есть на экране
    DM.ADOQuery.Next;
    Inc(CurrRow);
  end; // по строкам
  DBGrid.DataSource.DataSet.GotoBookmark(CurrentBookmark);
  DBGrid.DataSource.DataSet.FreeBookmark(CurrentBookmark);
  DBGrid.DataSource.DataSet.EnableControls;
  ExcelApp.Workbooks.Add(EmptyParam, LOCALE_USER_DEFAULT);
  ExcelBook.ConnectTo(ExcelApp.ActiveWorkbook);
  ExcelApp.Visible[LOCALE_USER_DEFAULT] := False;
  ExcelApp.ScreenUpdating[LOCALE_USER_DEFAULT] := False;
  ExcelApp.Calculation[LOCALE_USER_DEFAULT] := xlManual;
  ExcelApp.ErrorCheckingOptions.BackgroundChecking := False;
  ExcelApp.ErrorCheckingOptions.NumberAsText := False;
  ExcelApp.ErrorCheckingOptions.InconsistentFormula := False;
  XL_Sheet := ExcelBook.Worksheets.Item[1] as ExcelXP.ExcelWorksheet;
  XL_Sheet.Activate(LOCALE_USER_DEFAULT);
  c1:=XL_Sheet.Cells.Item[1,1];
  c2:=XL_Sheet.Cells.Item[nRow+1,aDataWidth];
  XL_Range:=XL_Sheet.Range[c1,c2];
  XL_Range.Value2:=aDataXL;
...
  XL_Sheet.Cells.EntireColumn.AutoFit;
  XL_Sheet.Application.Goto_('R1C1',0,LOCALE_USER_DEFAULT);
  XL_Sheet.Cells.AutoFilter(1,EmptyParam,xlAnd,EmptyParam,True);
  Screen.Cursor := crDefault;
  ExcelApp.Visible[LOCALE_USER_DEFAULT] := True;


PM MAIL   Вверх
Данкинг
Дата 7.6.2008, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Вот тоже пример из готовой программы, который я тоже не адаптировал. smile 
Код

procedure TForm1.otchet_kl;
var ddd:tdatetime;npp,row,npp1,row1:integer;
new:string;
brak:boolean;
begin
npp:=1;
row:=2;
npp1:=1;
row1:=2;
brak:=false;
ex:=createoleobject('excel.application');
ex.visible:=false;
Ex.DisplayAlerts:=False;
ex.workbooks.add;
try
Ex.ActiveSheet.PageSetup.Orientation := xlLandscape;
Ex.ActiveSheet.PageSetup.topmargin:=0;
Ex.ActiveSheet.PageSetup.bottommargin:=0;
Ex.ActiveSheet.PageSetup.leftmargin:=0;
Ex.ActiveSheet.PageSetup.rightmargin:=0;
except
end;
ex.activeworkbook.activesheet.Rows[1].Font.Bold := True;
ex.activeworkbook.activesheet.cells.item[1,1].NumberFormat:='@';
ex.activeworkbook.activesheet.cells.item[1,2].NumberFormat:='@';
ex.activeworkbook.activesheet.cells.item[1,3].NumberFormat:='@';
ex.activeworkbook.activesheet.cells.item[1,4].NumberFormat:='@';
ex.activeworkbook.activesheet.cells.item[1,5].NumberFormat:='@';
ex.activeworkbook.activesheet.cells.item[1,6].NumberFormat:='@';
ex.activeworkbook.activesheet.cells.item[1,7].NumberFormat:='@';
ex.activeworkbook.activesheet.cells.item[1,1]:='№';
ex.activeworkbook.activesheet.cells.item[1,2]:='Дата оформления';
ex.activeworkbook.activesheet.cells.item[1,3]:='Тип операции';
ex.activeworkbook.activesheet.cells.item[1,4]:='Номер выданной карты';
ex.activeworkbook.activesheet.cells.item[1,5]:='ФИО получателя';
ex.activeworkbook.activesheet.cells.item[1,6]:='№ магазина';
ex.activeworkbook.activesheet.cells.item[1,7]:='Дата выдачи';
ex.activeworkbook.activesheet.cells.item[1,8]:='Выдача карты';
ex.activeworkbook.activesheet.cells.item[1,1].ColumnWidth := 5;
ex.activeworkbook.activesheet.cells.item[1,2].ColumnWidth := 20;
ex.activeworkbook.activesheet.cells.item[1,3].ColumnWidth := 20;
ex.activeworkbook.activesheet.cells.item[1,4].ColumnWidth := 20;
ex.activeworkbook.activesheet.cells.item[1,5].ColumnWidth := 25;
ex.activeworkbook.activesheet.cells.item[1,6].ColumnWidth := 9;
ex.activeworkbook.activesheet.cells.item[1,7].ColumnWidth := 20;

////
exx:=createoleobject('excel.application');
exx.visible:=false;
exx.DisplayAlerts:=False;
exx.workbooks.add;
try
exx.ActiveSheet.PageSetup.Orientation := xlLandscape;
exx.ActiveSheet.PageSetup.topmargin:=0;
exx.ActiveSheet.PageSetup.bottommargin:=0;
exx.ActiveSheet.PageSetup.leftmargin:=0;
exx.ActiveSheet.PageSetup.rightmargin:=0;
except
end;
exx.activeworkbook.activesheet.Rows[1].Font.Bold := True;
exx.activeworkbook.activesheet.cells.item[1,1].NumberFormat:='@';
exx.activeworkbook.activesheet.cells.item[1,2].NumberFormat:='@';
exx.activeworkbook.activesheet.cells.item[1,3].NumberFormat:='@';
exx.activeworkbook.activesheet.cells.item[1,4].NumberFormat:='@';
exx.activeworkbook.activesheet.cells.item[1,5].NumberFormat:='@';
exx.activeworkbook.activesheet.cells.item[1,6].NumberFormat:='@';
exx.activeworkbook.activesheet.cells.item[1,7].NumberFormat:='@';
exx.activeworkbook.activesheet.cells.item[1,1]:='№';
exx.activeworkbook.activesheet.cells.item[1,2]:='Дата оформления';
exx.activeworkbook.activesheet.cells.item[1,3]:='Тип операции';
exx.activeworkbook.activesheet.cells.item[1,4]:='Номер выданной карты';
exx.activeworkbook.activesheet.cells.item[1,5]:='ФИО получателя';
exx.activeworkbook.activesheet.cells.item[1,6]:='№ магазина';
exx.activeworkbook.activesheet.cells.item[1,7]:='Дата выдачи';
exx.activeworkbook.activesheet.cells.item[1,8]:='Выдача карты';
exx.activeworkbook.activesheet.cells.item[1,1].ColumnWidth := 5;
exx.activeworkbook.activesheet.cells.item[1,2].ColumnWidth := 20;
exx.activeworkbook.activesheet.cells.item[1,3].ColumnWidth := 20;
exx.activeworkbook.activesheet.cells.item[1,4].ColumnWidth := 20;
exx.activeworkbook.activesheet.cells.item[1,5].ColumnWidth := 25;
exx.activeworkbook.activesheet.cells.item[1,6].ColumnWidth := 9;
exx.activeworkbook.activesheet.cells.item[1,7].ColumnWidth := 20;
////

gauge.MaxValue:=ado2.RecordCount;
gauge.Visible:=true;
ado2.First;
//showmessage(datetostr(dates)+' '+datetostr(datepo));
for j:=1 to ado2.RecordCount do
 begin
 gauge.Value:=j;
 application.ProcessMessages;
 try
 ddd:=strtodate(ado2.FieldValues ['Дата_оформления']);
 except
 ddd:=strtodate('01.01.1980');
 end;
if (ddd>=dates) and (ddd<=datepo) then
  begin
  if ado.Locate('old',trim(ado2.FieldValues ['Номер_выданной_карты']),[locaseinsensitive]) then
   begin
   new:='';
   try
   new:=chr(10)+ado.FieldValues ['new1'];
   except
   end;
   try
   new:=new+chr(10)+ado.FieldValues ['new2'];
   except
   end;
   try
   new:=new+chr(10)+ado.FieldValues ['new3'];
   except
   end;
   ex.activeworkbook.activesheet.cells.item[row,1].NumberFormat:='@';
   ex.activeworkbook.activesheet.cells.item[row,2].NumberFormat:='@';
   ex.activeworkbook.activesheet.cells.item[row,3].NumberFormat:='@';
   ex.activeworkbook.activesheet.cells.item[row,4].NumberFormat:='@';
   ex.activeworkbook.activesheet.cells.item[row,5].NumberFormat:='@';
   ex.activeworkbook.activesheet.cells.item[row,6].NumberFormat:='@';
   ex.activeworkbook.activesheet.cells.item[row,7].NumberFormat:='@';
   ex.activeworkbook.activesheet.cells.item[row,1]:=inttostr(npp);
   ex.activeworkbook.activesheet.cells.item[row,4]:=trim(new);
   ex.activeworkbook.activesheet.cells.item[row,2]:=ado2.FieldValues['Дата_оформления'];
   ex.activeworkbook.activesheet.cells.item[row,3]:=ado2.FieldValues['Тип_операции'];
   ex.activeworkbook.activesheet.cells.item[row,5]:=ado2.FieldValues['ФИО_получателя'];
   ex.activeworkbook.activesheet.cells.item[row,6]:=ado2.FieldValues['Номер_магазина'];
   ex.activeworkbook.activesheet.cells.item[row,7]:=ado2.FieldValues['Дата_выдачи'];
   inc(row);inc(npp);
   end
   else
   begin ///БРАК!!!!!!!!!!!!!!!
   brak:=true;
   exx.activeworkbook.activesheet.cells.item[row1,1].NumberFormat:='@';
   exx.activeworkbook.activesheet.cells.item[row1,2].NumberFormat:='@';
   exx.activeworkbook.activesheet.cells.item[row1,3].NumberFormat:='@';
   exx.activeworkbook.activesheet.cells.item[row1,4].NumberFormat:='@';
   exx.activeworkbook.activesheet.cells.item[row1,5].NumberFormat:='@';
   exx.activeworkbook.activesheet.cells.item[row1,6].NumberFormat:='@';
   exx.activeworkbook.activesheet.cells.item[row1,7].NumberFormat:='@';
   exx.activeworkbook.activesheet.cells.item[row1,1]:=inttostr(npp1);
   exx.activeworkbook.activesheet.cells.item[row1,4]:=ado2.FieldValues ['Номер_выданной_карты'];
   exx.activeworkbook.activesheet.cells.item[row1,2]:=ado2.FieldValues['Дата_оформления'];
   exx.activeworkbook.activesheet.cells.item[row1,3]:=ado2.FieldValues['Тип_операции'];
   exx.activeworkbook.activesheet.cells.item[row1,5]:=ado2.FieldValues['ФИО_получателя'];
   exx.activeworkbook.activesheet.cells.item[row1,6]:=ado2.FieldValues['Номер_магазина'];
   exx.activeworkbook.activesheet.cells.item[row1,7]:=ado2.FieldValues['Дата_выдачи'];
   inc(row1);inc(npp1);

   end;
  end;
 ado2.Next;
 end;


for y1:=1 to ex.ActiveSheet.UsedRange.rows.Count do
 begin
 ex.activeworkbook.activesheet.Rows[y1].HorizontalAlignment := 3;
 ex.activeworkbook.activesheet.Rows[y1].verticalAlignment := 2;
  for y2:=1 to ex.ActiveSheet.UsedRange.columns.Count do
   begin
    ex.activeworkbook.activesheet.Cells[y1,y2].Borders.lineStyle := 1;
    ex.activeworkbook.activesheet.Cells[y1,y2].WrapText:=true;
   end;
 end;
if brak=true then begin
for y1:=1 to exx.ActiveSheet.UsedRange.rows.Count do
 begin
 exx.activeworkbook.activesheet.Rows[y1].HorizontalAlignment := 3;
 exx.activeworkbook.activesheet.Rows[y1].verticalAlignment := 2;
  for y2:=1 to exx.ActiveSheet.UsedRange.columns.Count do
   begin
    exx.activeworkbook.activesheet.Cells[y1,y2].Borders.lineStyle := 1;
    exx.activeworkbook.activesheet.Cells[y1,y2].WrapText:=true;
   end;
 end;end;

Ex.ActiveWorkbook.SaveAs(saver.filename);
ex.application.quit;
ex:=unassigned;
if brak=true then Exx.ActiveWorkbook.SaveAs(strtr(uppercase(saver.filename),'.XLS','_brak.xls'));
exx.application.quit;
exx:=unassigned;
gauge.Visible:=false;
bsSkinMessage1.MessageDlg ('Готово!',mtinformation,[mbyes],0);
end;

 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Akella
Дата 11.6.2008, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(Riddik @  3.6.2008,  20:43 Найти цитируемый пост)
Из DBGrid можно выводить, только я не нашёл как.

зачем тебе DBGrid, он лишь отображает то, что живёт в датасете, вот и работай с датасетом, а на с гридом
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0968 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.