Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.11.22;
Скачать: CL | DM;

Вниз

Компонент, выглядящий как создать таблицу в office 2007   Найти похожие ветки 

 
Дмитрий Белькевич   (2009-09-22 19:12) [0]

Подскажите готовый, линиво очередной TVelosiped кодить.


 
TIF ©   (2009-09-22 19:40) [1]

> выглядящий как "создать таблицу"

Не понял глубины мысли

Имеется в виду компонент-таблица "а-ля Office 2007"? Тогда это к TMS, например...
Или сабж о другом?


 
Дмитрий Белькевич   (2009-09-22 20:13) [2]

Сложно без шотов объяснять, да. Имеется в виду: нажали на вставка - таблица - появилось окно "вставка таблицы", и такой контрол с квадратами и выбором разбивки таблицы - 1х1, 1х2 и т.д. Вот такой вот контрол нужон.
Может кто видел готовый?


 
TIF ©   (2009-09-22 20:57) [3]

> контрол с квадратами и выбором разбивки таблицы - 1х1, 1х2
> и т.д.

http://pinpic.ru/img/6692.html
Оно? :)

Готовый компонент - TAdvOfficeTableSelector
http://tmssoftware.com/site/advofficegraphics.asp

Цена конечно обалденная...


 
Дмитрий Белькевич   (2009-09-22 21:13) [4]

О, я я, оно :)

http://pinpic.ru/img/6692.html

Спасибо, вот только отдельную компоненту бы: TAdvOfficeTableSelector входит в состав TMS Advanced Office Graphics Control Pack.

Как то дороговато, конечно. Учитывая, что больше ничего не нужно...


 
test ©   (2009-09-22 21:39) [5]

Дмитрий Белькевич   (22.09.09 21:13) [4]
А что сильно интерфейсы отличаются?

var
  Excel: Variant;
begin
 try
     Excel := CreateOleObject("Excel.Application");

(* тут много кода *)

 finally
   Excel.Quit;
   Excel := Unassigned;
 end;
end;

Такое не отработает?


 
Дмитрий Белькевич   (2009-09-22 21:48) [6]

>А что сильно интерфейсы отличаются?

Так мне какбэ в своём софте такое же нужно :)

Непосредственно с таблицами и эксцелом оно никак не связано.


 
TIF ©   (2009-09-22 23:31) [7]

> Как то дороговато, конечно. Учитывая, что больше ничего
> не нужно...

Можно, конечно, эм... скачать исходный код, посмотреть реализацию, сделать у себя аналогично :) Или вообще скачать пиратскую версию (главное чтобы никто не догадался...) :D

Правда я сразу после этого подумал: а почему бы не решить задачу только с помощью стандартных компонентов Delphi?
На ум сразу пришёл TStringGrid.

Вот что у меня с ним получилось:
procedure TForm1.StringGridMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
var
 Col, Row: Integer;
begin
 StringGrid.MouseToCell(X, Y, Col, Row);
 if (Col>=1) and (Row>=1)
 then
 begin
   StringGrid.Cols[0].Clear;
   StringGrid.Rows[0].Clear;
   StringGrid.Cells[Col, 0]:=IntToStr(Col);
   StringGrid.Cells[0, Row]:=IntToStr(Row);
   StringGrid.Hint:="Таблица: "+inttostr(StringGrid.Selection.Right)+" × "+inttostr(StringGrid.Selection.Bottom);
 end;
end;

procedure TForm1.StringGridMouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
var
 GridRect: TGridRect;
 Col, Row: integer;
begin
 StringGrid.MouseToCell(X, Y, Col, Row);
 if (Col>=1) and (Row>=1)
 then
 begin
   GridRect.Left:=1;
   GridRect.Top:=1;
   GridRect.Right:=Col;
   GridRect.Bottom:=Row;
   StringGrid.Selection:=GridRect;
 end;
end;

procedure TForm1.StringGridMouseLeave(Sender: TObject);
begin
 StringGrid.Cols[0].Clear;
 StringGrid.rows[0].Clear;
 StringGrid.Cells[StringGrid.Selection.Right, 0]:=IntToStr(StringGrid.Selection.Right);
 StringGrid.Cells[0, StringGrid.Selection.Bottom]:=IntToStr(StringGrid.Selection.Bottom);
end;

procedure TForm1.StringGridClick(Sender: TObject);
var
 GridRect: TGridRect;
begin
 if (StringGrid.Selection.Top>=1) or (StringGrid.Selection.Left>=1)
 then
 begin
   StringGrid.Col:=1;
   StringGrid.Row:=1;
   GridRect.Left:=1;
   GridRect.Top:=1;
   GridRect.Right:=StringGrid.Col;
   GridRect.Bottom:=StringGrid.Row;
   StringGrid.Selection:=GridRect;
   {
   Button.SetFocus; //Сброс фокусировки со StringGrid-а
   }
 end;
end;

procedure TForm1.StringGridDblClick(Sender: TObject);
begin
 {
 Button.SetFocus; //Сброс фокусировки со StringGrid-а
 }
end;

В двух словах: при щелчке или выделении ячеек не с первой (верхний левый угол, ячейка [1,1]), устанавливаем "правильное" выделение, при перемещении мыши показываем номера "активных" строки и столбца, размер таблицы выводим в Hint-е

Скриншот:
http://pinpic.ru/img/6718.html

"Пощупать вживую" (скомпилированный exe) можно тут:
http://cid-958487bcc33eedba.skydrive.live.com/browse.aspx/Delphi/OfficeInsertTableSelector

Это, конечно, не "а-ля Office 2007", но по-моему получилось вполне прилично :) Само собой, надо ещё сделать появление/скрытие StringGrid-а (можно скрывать по одинарному щелчку, а можно и по двойному, кстати)...

PS: очень удивился, увидев такой красивый StringGrid под Windows 7. В Vista такого не помню, почему-то... В XP, конечно, он пострашнее будет :(


 
Дмитрий Белькевич   (2009-09-22 23:57) [8]

>Можно, конечно, эм... скачать исходный код, посмотреть реализацию,

Неэтично, не говоря, что непрактично - обвязки может быть куча.

>Или вообще скачать пиратскую версию

Код 100% чистый, зачем начинать...

Спасибо за код, посчупаем...



Страницы: 1 вся ветка

Текущий архив: 2009.11.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
2-1255355336
timekiller
2009-10-12 17:48
2009.11.22
Глядеть PDF своей программой


15-1253971366
Джони
2009-09-26 17:22
2009.11.22
DAC for MySQL 2.7.2 Free Trial (Объясните пжл)


3-1230036426
interbase
2008-12-23 15:47
2009.11.22
производная таблица


2-1254757693
Тимох
2009-10-05 19:48
2009.11.22
Form2 показывается до form1


8-1200489157
NaRuTo
2008-01-16 16:12
2009.11.22
Преобразование времени