Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.11.22;
Скачать: [xml.tar.bz2];

Вниз

Компонент, выглядящий как создать таблицу в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.005 c
2-1254735726
Серый
2009-10-05 13:42
2009.11.22
query, dbgrid размер ячеек


2-1254737942
fics)
2009-10-05 14:19
2009.11.22
Массивы


11-1207858107
YuriyM
2008-04-11 00:08
2009.11.22
Работа с KOLSQLiteStatic под Lazarus


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


15-1252433478
GRAND
2009-09-08 22:11
2009.11.22
Курсы валют для прог (через FTP или что-то в этом роде)?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский