Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2013, 14:31   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А ЗАЧЕМ???? такие глупые вопросы
А потому что я оч. хорошо знаю что это за область. И все шаблоны доков стандартизированы жестко. Шаг влево-вправо нарваться на скандал можно. Как минимум инстанция не примет отчетность, как максимум нашлют проверку.
Цитата:
Человек_Борща
Потому что в этом смысла мало - шаблоны доков обновляются весьма часто.
Ладно, если я не в тему глаголю - извиняюсь. Мое мнение - не стоит делать то что уже сделано в том же медке или налоговой отчетности. Я бы на такое не пошел, иначе конфликты с бухгалтерией и пр. отделами неизбежны.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.08.2013, 16:31   #12
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

Цитата:
Человек_Борща - Не мойдет, этот вариант рассматривался еще в самом начале разработки т.к. он и реализован в ОЗП(
Цитата:
налоговой отчетности.
)
Stilet я тоже очеьн хорошо это все знаю и вот какраз для подачи в МинФинансов (Статистика) нет программ нормальных (бузок - полное уг) вот мне и поручили написать то что сможет сформировать отчет в статистику, отправлятся он будет через демо медок, а тот в свою очередь проверяет структуру xml файла, а номер xsd схемы подметить в хмл не сложно, если поменяется форма отчета.....

Ну так что мы будем дальше обсуждать эту тему или все таки вы мне поможете, я сейчас решил сделать табличный вариант просто скрывая лишнее в StringGride думаю примерно так и в медке реализовано..
IvaniuS вне форума Ответить с цитированием
Старый 19.08.2013, 16:47   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
или все таки вы мне поможете
Я поддерживаю Аватара и Сашу40.
Если бы мне не дай боже нужно было бы такое реализовать именно в виде шаблона отчета то делал бы это либо в HTML в виде сайта, либо в оффисе, где макросами бы формировал XML или PFZ потом.
Больше мне нечего сказать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.08.2013, 16:52   #14
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
думаю примерно так и в медке реализовано..
Вы сравниваете звездолет с камнем.

Попробуйте TMS FlexCell, или DevExpress cxGrid или NextGrid. Они гораздо мощнее и гибче, последний имеет удобную добавлялку редакторов для своих типов данных, по мимо имеющихся стандартных.
Человек_Борща вне форума Ответить с цитированием
Старый 19.08.2013, 17:21   #15
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

да уже начал смотреть ehLib, и он мне уже переписал стандартный TEditStyle и теперь не компилируется старый проект, сейчас посмотрю то чт овы предлагаете. NextGrid хорош - буду изучать но мне нужно то что они предлагают в как вы выразились "удобной добавлялки" нужно в рантайм выполнять и делать не для всего столбика, а для конкретной ячейки, надеюсь разберусь.

Последний раз редактировалось IvaniuS; 19.08.2013 в 18:11.
IvaniuS вне форума Ответить с цитированием
Старый 19.08.2013, 19:07   #16
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Посмотрите ещё в сторону TVirtualDrawTree, TVirtualStringTree
На основе второго можно свой Grid реализовать.
Да и свои редакторы под данные в конкретной колонке тоже не сложно писать.
На основе первого можно вообще на ушах стоять, в смысле за отображение ты полностью отвечаешь а не компонент.
Человек_Борща вне форума Ответить с цитированием
Старый 20.08.2013, 13:08   #17
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

Если бы в обычном стринг гриде можно было нормально обьединять ячейки как в экселе и обводку менять(края), то мне бы и его хватило, но этого нету, сейчас выбираю из всего что-то наиболее удобное для реализации моей задачи. А стандартный компонент все может, просто нужно уметь им пользоваться...
После целого дня поисков был найден мало известный ZColorStringGrid который достаточно прост, универсален, бесплатен и т.д. багов пока не заметил.

Последний раз редактировалось IvaniuS; 20.08.2013 в 19:34.
IvaniuS вне форума Ответить с цитированием
Старый 21.08.2013, 14:34   #18
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

ну что а вы говорили, нет и нет все нормально вот скрин теста.
Изображения
Тип файла: jpg Безымянный.jpg (33.7 Кб, 142 просмотров)
IvaniuS вне форума Ответить с цитированием
Старый 28.08.2013, 18:11   #19
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

Найденный мною компонент хорош, но там нету типа ячейки, порыскав по интернету нашел как переписать потомка СТАНДАРТНОЙ stringgrid, а у меня не стандартный конкретно, так можно переписать стандартный:
Код:
 type
   TGetEditStyleEvent = procedure (TSender:TObject; ACol,ARow:integer;
     var EditStyle:TEditStyle) of object;

   TNewStringGrid = class(TStringGrid)
   private
     FDropdownRowCount : integer;
     FOnEditButtonClick : TNotifyEvent;
     FOnGetEditStyle : TGetEditStyleEvent;
     FOnGetPickListItems : TOnGetPickListItems;
     procedure SetDropdownRowCount(value:integer);
     procedure SetOnEditButtonClick(value:TNotifyEvent);
     procedure SetOnGetPicklistItems(value:TOnGetPickListItems);
   protected
     function  CreateEditor: TInplaceEdit; override;
     function  GetEditStyle(ACol, ARow: integer): TEditStyle; override;
   public
     constructor Create(AOwner:TComponent); override;
   published
     property DropdownRowCount : integer
       read FDropDownRowCount write SetDropdownRowCount default 8;
     property OnEditButtonClick: TNotifyEvent
       read FOnEditButtonClick write SetOnEditButtonClick;
     property OnGetEditStyle : TGetEditStyleEvent
       read FOnGetEditStyle write FOnGetEditStyle;
     property OnGetPickListItems : TOnGetPickListItems
       read FOnGetPickListItems write SetOnGetPickListItems;
   end;

 implementation

 constructor TNewStringGrid.Create(AOwner:TComponent);
 begin
   inherited Create(AOwner);
   FDropdownRowCount := 8;
 end;

 function TNewStringGrid.CreateEditor: TInplaceEdit;
 begin
   result := TInplaceEditList.Create(self);
   with TInplaceEditList(result) do begin
     DropdownRows := FDropdownRowCount;
     OnGetPickListItems := FOnGetPickListItems;
     OnEditButtonClick := FOnEditButtonClick;
   end;
 end;

 function TNewStringGrid.GetEditStyle(ACol,ARow:integer) : TEditStyle;
 begin
   result := esSimple;
   if Assigned(FOnGetEditStyle)
     then FOnGetEditStyle(self, ACol, ARow, result);
 end;

 procedure TNewStringGrid.SetDropDownRowCount(value:integer);
 begin
   FDropdownRowCount := value;
   if Assigned(InplaceEditor)
     then TInplaceEditList(InplaceEditor).DropdownRows := value;
 end;

 procedure TNewStringGrid.SetOnEditButtonClick(value:TNotifyEvent);
 begin
   FOnEditButtonClick := value;
   if Assigned(InplaceEditor)
     then TInplaceEditList(InplaceEditor).OnEditButtonClick := value;
 end;

 procedure TNewStringGrid.SetOnGetPicklistItems(value:TOnGetPicklistItems);
 begin
   FOnGetPicklistItems := value;
   if Assigned(InplaceEditor)
     then TInplaceEditList(InplaceEditor).OnGetPickListitems := value;
 end;
тут используется TInplaceEdit, а у меня ТМемо:
Код:
TZInplaceEditor = class(TCustomMemo)
  private
    FGrid: TZColorStringGrid;
    FExEn: integer; 
  protected
    procedure DoEnter; override;
    procedure DoExit; override;
    procedure Change; override;
    procedure DblClick; override;
    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
    procedure KeyPress(var Key: Char); override;
    procedure KeyUp(var Key: Word; Shift: TShiftState); override;
  public
    constructor Create(AOwner: TComponent); override;
    function  DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; override;
    function  DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean;override;
  end;

  TInplaceEditorOptions = class (TPersistent)
  private
    FGrid: TZColorStringGrid;
    FFontColor: TColor;
    FBGColor: TColor;
    FBorderStyle: TBorderStyle;
    FAlignment: TAlignment;
    FWordWrap: Boolean;
    FUseCellStyle: Boolean;
    procedure SetFontColor(const Value: TColor);
    procedure SetBGColor(const Value: TColor);
    procedure SetBorderStyle(const Value: TBorderStyle);
    procedure SetAlignment(const Value: TAlignment);
    procedure SetWordWrap(const Value: Boolean);
    procedure SetUseCellStyle(const Value: Boolean);
  protected
  public
    constructor Create(AGrid: TZColorStringGrid); virtual;
  published
    property FontColor: TColor read FFontColor write SetFontColor default clblack;
    property BGColor: TColor read FBGColor write SetBGColor default clWhite;
    property BorderStyle: TBorderStyle read FBorderStyle write SetBorderStyle default bsNone;
    property Alignment: TAlignment read FAlignment write SetAlignment default taLeftJustify;
    property WordWrap: Boolean read FWordWrap write SetWordWrap default true;
    property UseCellStyle: Boolean read FUseCellStyle write SetUseCellStyle default true;
  end;
если кто знает как добавить в мемо esEllipsis, esPickList то буду благодарен или наоборот инплейс привести ближе к мемо (нету переноса слов на новую строку выравнивания по горизонтали и т.д.)
прикладываю исходники одного и второго
Вложения
Тип файла: zip zcolorstringgrid.zip (424.5 Кб, 7 просмотров)
IvaniuS вне форума Ответить с цитированием
Старый 20.07.2021, 21:48   #20
Viktor61
Пользователь
 
Регистрация: 05.05.2018
Сообщений: 92
По умолчанию

Ув.IvaniuS, посмотрите в интернете книгу Василия Корнякова "Программирование документов и приложений MS Office в DELPHI". В ней достаточно толково рассказано как создать шаблон документа (в Вашем случае - форма для бухгалтерии), расставить метки в этом шаблоне и куда затем путём поиска-замены заносить данные. М.б. - пригодится. Успехов!
Viktor61 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка втроки в связанную эксель таблицу 95979 Microsoft Office Access 1 13.02.2012 12:19
Вставка строк в таблицу АННА-ЕАО Microsoft Office Excel 2 25.08.2011 09:21
Вставка данных в таблицу. Kveldulv Microsoft Office Access 2 25.05.2010 10:27
расширение и вставка данных в таблицу Dennikid Общие вопросы Delphi 12 06.10.2008 09:34
Вставка картинки в таблицу sabina_smile Помощь студентам 7 18.10.2007 16:29