kovalenko wrote:

Это?
//ограничение кол.выводимых записей//
      procedure frmOrder_Button34_OnClick (Sender: TObject; var Cancel: boolean);
begin
    frmOrder.GridOrder.SelectedRow := frmOrder.GridOrder.RowCount-1;
    frmOrder.GridOrder.dbLimit := frmOrder.GridOrder.dbLimit + 20;
    frmOrder.GridOrder.dbUpdate;
end;

Выводится по 20 записей.

Это?
//ограничение кол.выводимых записей//
      procedure frmOrder_Button34_OnClick (Sender: TObject; var Cancel: boolean);
begin
    frmOrder.GridOrder.SelectedRow := frmOrder.GridOrder.RowCount-1;
    frmOrder.GridOrder.dbLimit := frmOrder.GridOrder.dbLimit + 20;
    frmOrder.GridOrder.dbUpdate;
end;

3

(9 replies, posted in Russian)

DriveSoft wrote:

Да.

Ещё раз спасибо!

4

(9 replies, posted in Russian)

DriveSoft wrote:

Изменил работу данной функции

function Random ( LimitPlusOne : Integer ) : Integer;

в вашем случае теперь написать нужно так

frmApplication.barCodeOrderPryom.Value := Random(99999999);

Спасибо. Т.е теперь писать без Trunc и без*?

5

(9 replies, posted in Russian)

Обновился до последней Beta, теперь ошибкой подсвечивается ранее нормально отрабатывавшая строка

frmApplication.barCodeOrderPryom.Value := Trunc(Random*99999999);

Что может быть?

6

(1 replies, posted in Russian)

vovka3003 wrote:

OnChanging - "до"
OnChangе - "после"

Оперируя свойством AllowChange можно запретить переход на другие вкладки.
Например такая проверка:

procedure Form1_PageControl1_OnChanging (Sender: TObject; var AllowChange: Boolean);
begin
    if (TPageControl(Sender).ActivePage.Name = 'TabSheet1') then
    AllowChange := (Form1.Edit1.Text <> '')
  else
    AllowChange := True;
end;

Не даст уйти на другую вкладку пока не заполнен Edit1.

Огромное спасибо!

7

(1 replies, posted in Russian)

Всех приветствую!
Кто расскажет о возможностях данного события? PageControl_OnChangе тут всё понятно, а вот варианты использования PageControl_OnChanging ?

Всех приветствую. Кто подскажет решение задачки?! В таблице есть запись о поступлении товара, на основании ей делаю в дальнейшем списание товара. В таблице соответственно есть запись о приходе товара и его списании. Так же при поступлении товара проставляется статус НЕТ (т.е товар не двигался). Как только я на основании поступления делаю расход, в чек боксе поступления и расхода ставиться/изменяется статус с НЕТ на ДА (т.е товар двигался). На основании статуса ДА, у меня запись не выводится в таблицу (в базе сохраняется). А теперь вопрос, как при удалении сделанного расхода изменить в поступлении статус с ДА на НЕТ? Как удалить в выбранной строке грида понятно

procedure активные_заказы_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
    SQLExecute('UPDATE таблица SET поле_с_чеком = 0 WHERE id = '+IntToStr(ваша_форма.TableGrid1.dbItemID));
end;


как удалить (при удалении расхода) запись о приходе тоже разобрался

procedure Form1_Button44_OnAfterClick (Sender: TObject);
begin
    SQLExecute('DELETE FROM sklad WHERE record_count='+Form1.Edit25.sqlValue);
    Form1.GridSklad.dbUpdate;
end;

а вот как изменить чек бокс поступления, не могу придумать/понять.

Всем привет. Есть форма, на которой грид1 и несколько текстовых полей (Text1 и Text2 для заполнения). Что необходимо, выбрать несколько строк в гриде1 (мультиселект), заполнить текстовые поля (Text1 и Text2) и сохранить всё это в своей таблице( №2). В гриде1 информация из своей таблицы (№1). Кнопка Сохранить, сохраняет данные из текстовых полей (Text1 и Text2) и грида1 в свою таблицу (№2). После, на другой форме, в гриде2 всё это выводится. Просто выбрать строку грида1 и заполнив текстовые поля (Text1 и Text2) всё это сохранить получается, а при мультиселекте сохраняется только одна строка грида1 и соответственно текстовые (Text1 и Text2).

10

(8 replies, posted in Russian)

Дмитрий, спасибо за ответ!!!

А можно ещё вопрос, как скопировать/перенести данные с одного грида в другой? Через мультиселект, т.е несколько строк?

11

(8 replies, posted in Russian)

DriveSoft wrote:

Приветствую.


С выводом в TreeView есть сложность, дело в том, что если будет отфильтрован родительский элемент ветки, то и дочерние элементы перестанут быть видимыми, даже если они подходят для поиска, т.е. дерево будет как бы разорванным.


Пока поиск можно организовать скриптом, используя свойство компонента dbFilter, где можно указать условия для поиска. Можете приложить ваш проект с описанием, какой именно поиск необходим, постараюсь помочь.

Дмитрий здравствуйте. А можно простейший пример? Дальше надеюсь сам разберусь.

kovalenko wrote:
DriveSoft wrote:

Что то не пойму суть )


Редактирование в TreeView осуществляется двумя способами, через всплывающее меню, либо через свойство компонента Form, в котором вы можете указать форму, которая будет служить для создания/редактирования записей в TreeView

Здравствуйте Дмитрий. Енто понятно. Попробую в кратце. Есть услуги, они могут быть 1.2.3.4.и т.д Типа, при этом каждая услуга кроме типа, имеет ещё и своё наименование.Хотел сделать таблицу, куда заводить Тип и Наименование услуги, дальше всё это отображать в Tree, но поиск с выводом в Tree на работает. Решил сделать на форме Tree и Gride и под них отдельные таблицы, При создании новой услуги, ей присваивается наименование и тип-сохраняется в своей таблице (по типам наверное сделаю через справочник), и те-же самые Тип и Наименование сохраняются в таблице Tree. На форме в таблице Tree отображается только основная запись, а остальное в соседнем Gridt. Если мне надо изменить Тип услуги, то это изменение должно касаться Типа услуги и таблицы для Gride и таблицы для Tree. Очень хочется производить замену "Одной кнопкой", т.е максимально упростить.

Вопрос закрыт, разобрался. Кому интересно, материал для изучения

procedure frmDict_Button44_OnClick (Sender: TObject; var Cancel: boolean);
begin
   frmAddEditTypeTreeService.CheckBox2.Checked := True;
end;

procedure frmAddEditTypeTreeService_OnShow (Sender: TObject; Action: string);
begin
     if frmAddEditTypeTreeService.CheckBox2.Checked then
     begin
     frmAddEditTypeTreeService.GroupBox1.Visible := True;
     frmAddEditTypeTreeService.GroupBox2.Visible := False;
     frmAddEditTypeTreeService.ComboBox4.Caption := SQLExecute('SELECT serviseTypeName FROM serviceType WHERE id = ' + IntToStr(frmDict.GrideServiceType.dbItemID));
     frmAddEditTypeTreeService.ComboBox4.DoOnChange;
     end else
     begin
     frmAddEditTypeTreeService.GroupBox1.Visible := False;
     frmAddEditTypeTreeService.GroupBox2.Visible := True;
     frmAddEditTypeTreeService.ComboBox5.Caption := SQLExecute('SELECT serviceName FROM service WHERE id = ' + IntToStr(frmDict.GrideService.dbItemID));
     frmAddEditTypeTreeService.ComboBox5.DoOnChange;
     frmAddEditTypeTreeService.ComboBox6.Caption := frmAddEditTypeTreeService.Edit11.Text;//frmAddEditTypeTreeService.Edit16.Text; //смотрим их в таблице Tree
     frmAddEditTypeTreeService.ComboBox6.DoOnChange;
     frmAddEditTypeTreeService.Edit16.Text := IntToStr (frmAddEditTypeTreeService.ComboBox6.dbItemID);
     end;
end;

procedure frmAddEditTypeTreeService_Edit11_OnChange (Sender: TObject);
begin
   frmAddEditTypeTreeService.Edit12.Text := frmAddEditTypeTreeService.Edit11.Text;
end;

procedure frmAddEditTypeTreeService_Button7_OnClick (Sender: TObject; var Cancel: boolean);
begin
   frmAddEditTypeTreeService.Button8.Click;
end;

procedure frmAddEditTypeTreeService_Button8_OnClick (Sender: TObject; var Cancel: boolean);
begin
   SQLExecute('UPDATE serviceTipeTree SET serviceTipeNameTree = ' + frmAddEditTypeTreeService.Edit12.sqlValue + ' where id ='+inttostr(frmAddEditTypeTreeService.ComboBox4.dbitemid));

end;

procedure frmAddEditTypeTreeService_Edit13_OnChange (Sender: TObject);
begin
   frmAddEditTypeTreeService.Edit14.Text := frmAddEditTypeTreeService.Edit13.Text;
end;

procedure frmAddEditTypeTreeService_Button9_OnClick (Sender: TObject; var Cancel: boolean);
begin
   frmAddEditTypeTreeService.Button10.Click;
end;

procedure frmAddEditTypeTreeService_Button10_OnClick (Sender: TObject; var Cancel: boolean);
begin
   SQLExecute('UPDATE serviceTipeTree SET serviceTipeNameTree = ' + frmAddEditTypeTreeService.Edit14.sqlValue + ' where id ='+inttostr(frmAddEditTypeTreeService.ComboBox5.dbitemid));
   //SQLExecute('UPDATE serviceTipeTree SET ParrentID = ' + frmAddEditTypeTreeService.Edit16.sqlValue + ' where id ='+inttostr(frmAddEditTypeTreeService.ComboBox6.dbitemid));
end;

procedure frmAddEditTypeTreeService_Edit16_OnChange (Sender: TObject);
begin
   if frmAddEditTypeTreeService.Edit16.Text = '-1' then
begin
     frmAddEditTypeTreeService.Edit16.Clear;
  end;
end;

procedure frmAddEditTypeTreeService_OnClose (Sender: TObject; Action: string);
begin
    frmAddEditTypeTreeService.CheckBox2.Checked := False;

    frmDict.TreeViewServiceTipeTree.dbUpdate;
    frmDict.GrideServiceType.dbUpdate;
    frmDict.GrideService.dbUpdate;
end;
DriveSoft wrote:

Что то не пойму суть )


Редактирование в TreeView осуществляется двумя способами, через всплывающее меню, либо через свойство компонента Form, в котором вы можете указать форму, которая будет служить для создания/редактирования записей в TreeView

Здравствуйте Дмитрий. Енто понятно. Попробую в кратце. Есть услуги, они могут быть 1.2.3.4.и т.д Типа, при этом каждая услуга кроме типа, имеет ещё и своё наименование.Хотел сделать таблицу, куда заводить Тип и Наименование услуги, дальше всё это отображать в Tree, но поиск с выводом в Tree на работает. Решил сделать на форме Tree и Gride и под них отдельные таблицы, При создании новой услуги, ей присваивается наименование и тип-сохраняется в своей таблице (по типам наверное сделаю через справочник), и те-же самые Тип и Наименование сохраняются в таблице Tree. На форме в таблице Tree отображается только основная запись, а остальное в соседнем Gridt. Если мне надо изменить Тип услуги, то это изменение должно касаться Типа услуги и таблицы для Gride и таблицы для Tree. Очень хочется производить замену "Одной кнопкой", т.е максимально упростить.

DriveSoft wrote:

Не могли бы вы рассказать подробней о проблеме, т.к. не совсем ясно, какая проблема с редактирование основной записи в Tree, и что имеется ввиду под основной записью?

Основная, это главная в дереве. Есть справочник Типов и есть дерево (для удобства сортировки). в дереве основная (первая в структуре) запись, это запись аналогичная записи в справочнике Типов. При изменении записи Типа в справочнике, надо бы менять и основную запись в дереве. Вот как это сделать не используя двух форм? Редактирование основной записи Tree в самой таблице Tree, не самый лучший, в моём понимании, вариант.

Есть две таблицы (одна Tree) для корректного изменения в Tree основной записи, её надо менять через ShowRecord. Можно как-то в одну форму вытащить на ShowRecord записи для корректного редактирования из двух не связанных таблиц? Можно через две формы

procedure frmDict_Button54_OnClick (Sender: TObject; var Cancel: boolean);
begin
   ShowRecord(frmAddEditTypeTreeService, 'serviceTipeTree', frmDict.ComboBox2.dbItemID);
   ShowRecord(frmtest, 'serviceType', frmDict.ComboBox1.dbItemID);
end;

, но хотелось бы всё делать в одной.

16

(8 replies, posted in Russian)

k245 wrote:
kovalenko wrote:

Спасибо! Попробую сам разобраться.

Если не получится - пишите в личку: есть проверенный вариант фильтрации дерева с сохранением его структуры.

Спасибо, обращусь. Но сначала хочу сам попробовать разобраться. Ещё раз спасибо.

17

(8 replies, posted in Russian)

DriveSoft wrote:

Приветствую.


С выводом в TreeView есть сложность, дело в том, что если будет отфильтрован родительский элемент ветки, то и дочерние элементы перестанут быть видимыми, даже если они подходят для поиска, т.е. дерево будет как бы разорванным.


Пока поиск можно организовать скриптом, используя свойство компонента dbFilter, где можно указать условия для поиск. Можете приложить ваш проект с описанием, какой именно поиск необходим, постараюсь помочь.

Спасибо! Попробую сам разобраться.

18

(8 replies, posted in Russian)

Всем доброе утро! Может кто подскажет, как сделать поиск с выводом результатов в TreeView? С гридом всё понятно, edit + настройка кнопки поиск, вот только при настройке кнопки поиск, нет возможности выбрать TreeView как таблицу, куда будут выводится результаты поиска,  только грид. Можно наверное скриптом, только вот как? Заранее спасибо!

Здравствуйте. Может кто подскажет как реализовать следущее. Есть в гриде какое-то кол-во позиций товаров/услуг, у каждой позиции есть своя цена. Выбрать позицию и сохранить её и её стоимость проблемы нет, а вот как сделать множественный выбор в гриде с сохранением и наименования и их стоимости. В голову приходит только через поле memo, может посоветуете варианты? Это надо для добавления позиций в заказ, в форме заказа на данный момент позиции отображаются тоже в гриде.
Добавление в мемо работает

procedure frmDictService_Button7_OnClick (Sender: TObject; var Cancel: boolean);
var
   i,c: integer;
   iColumn: integer;
begin
    iColumn := frmDictService.GridService.Columns.Count-2;
    c := frmDictService.GridService.RowCount - 1;
    for i :=0 to c do
    if frmDictService.GridService.Selected[i] then
  begin
    if Form1.Memo3.Lines.IndexOf(frmDictService.GridService.Cells[iColumn, i] + ', ' ) = -1 then
       Form1.Memo3.Lines.Add(frmDictService.GridService.Cells[iColumn, i] + ', ' ) else ShowMessage('Дубликат');
end;
    frmDictService.Close;

end;

А вот как их вставить в грид Form1.GridService из frmDictService.GridService не пойму.

С переходом во вкладку Работа с заказами для редактирования выбранного заказа в гриде вкладки Заказы разобрался. Повесил на кнопку Показать запись и на этой же кнопке скриптик

procedure Form1_editOrder_OnAfterClick (Sender: TObject);
begin
   Form1.PageControl1.ActivePageIndex := 1; //открываем вкладку Работ по заказу
end

А вот есть-ли возможность при клике на выбранный заказ в гриде вкладки Заказы, просматривать его во вкладке Работы по заказу? Что я имею ввиду, выбираю в гриде заказ, кликаю на вкладку Работы по заказу и просматриваю заказ. Хочется понять возможность реализации.
Делал так

ShowRecord(Form1, 'application', Form1.GridOrder.dbItemID);

Тогда да, во вкладке (если на неё кликнуть) выводиться выбранный в гриде заказ, но "слетает" подсветка выбранного заказа в самом гриде.


Разобрался. Сделал так:

procedure Form1_PageControl1_OnChange (Sender: TObject);
begin
   if Form1.PageControl1.ActivePageIndex = 1 then ShowRecord(Form1, 'application', Form1.GridOrder.dbItemID);
end;

Всем спасибо!

Дмитрий, спасибо за ответ. С переходом во вкладку Работа с заказами для редактирования выбранного заказа в гриде вкладки Заказы разобрался. Повесил на кнопку Показать запись и на этой же кнопке скриптик

procedure Form1_editOrder_OnAfterClick (Sender: TObject);
begin
   Form1.PageControl1.ActivePageIndex := 1; //открываем вкладку Работ по заказу
end

А вот есть-ли возможность при клике на выбранный заказ в гриде вкладки Заказы, просматривать его во вкладке Работы по заказу? Что я имею ввиду, выбираю в гриде заказ, кликаю на вкладку Работы по заказу и просматриваю заказ. Хочется понять возможность реализации.
Делал так

ShowRecord(Form1, 'application', Form1.GridOrder.dbItemID);

Тогда да, во вкладке (если на неё кликнуть) выводиться выбранный в гриде заказ, но "слетает" подсветка выбранного заказа в самом гриде.

Всем добрый день. Вопрос такой. Есть PageControl с вкладками Заказы, Работа с заказом, Склад. На вкладке Заказы есть кнопка, которая переводит(открывает/делает активной) на вкладку Работа с заказом, где я создаю и впоследствии записываю заказ. Так-же на вкладке Заказы есть Gride в который выводятся все созданные заказы. Вопрос, как сделать так, что-бы при выборе конкретного заказа в Gride вкладки Заказы, информация по нему выводилась во вкладку Работа с заказом? Т.е аналог "Показать запись"?  Хочется попробовать избежать лишних форм.

DriveSoft wrote:

Приветствую.


К сожалению не ясно, что именно вы планируете показывать в TreeView?
Приведите пример.

Есть форма где отображается список оборудования. Есть желание при внесении позиции закреплять за ней параметр из TreeView (например Бренд) и потом кликом по TreeView отфильтровывать данные в форме. Есть конечно и параметр Тип, но как я понял при сохранении новой позиции я могу её закрепить только за одним параметром из TreeView. Пробовал сохранить два параметра TreeView (TreeView1 / TreeView2 т,е Тип /  Бренд), но сортировка происходит только по одному (по TreeView1 / Тип). Когда сделал сохранение только по TreeView2 / Бренд, сортировка соответственно стала по нему (соответственно Бренд в структуре TreeView подчиняется Тип-у). Вот тоже момент, есть Тип, например Ноутбуки и есть Бренд Asus/Sony и т.д. Получается я не могу кликнув по TreeView Ноутбуки посмотреть все позиции в Ноутбуках, надо кликать по Бренду и уже там смотреть что где есть. Или общий список.

Дмитрий здравствуйте. Не подскажите как сделать оптимально? Есть для примера два (из многих других) справочника Тип и Бренд (используются в разных формах). Сейчас экспериментирую  с "прикруткой" новой функции к форме Устройства (есть отдельная для неё таблица) . Для TreeView как сделать лучше , завести в таблице OrgStructure отдельными строками Тип и Бренд, или сделать одну строку для Тип и Бренд в таблице OrgStructure. Вопрос касается дальнейшего использования OrgStructure в других формах. Или для каждой формы надо делать свою таблицу OrgStructure? Или для каждого справочника сделать свою таблицу OrgStructure? Просто только начал разбираться и не хочется в дальнейшем всё переделывать и/или городить "огород".
И ещё вопрос, есть ли возможность поиска в TreeView? Стандартные методы что-то не работают.

25

(25 replies, posted in Russian)

Дмитрий здравствуйте. Не подскажите как сделать оптимально? Есть для примера два (из многих других) справочника Тип и Бренд (используются в разных формах). Сейчас экспериментирую  с "прикруткой" новой функции к форме Устройства (есть отдельная для неё таблица) . Для TreeView как сделать лучше , завести в таблице OrgStructure отдельными строками Тип и Бренд, или сделать одну строку для Тип и Бренд в таблице OrgStructure. Вопрос касается дальнейшего использования OrgStructure в других формах. Или для каждой формы надо делать свою таблицу OrgStructure? Или для каждого справочника сделать свою таблицу OrgStructure? Просто только начал разбираться и не хочется в дальнейшем всё переделывать и/или городить "огород".