Последняя версия DataExpress 3 beta от 24 июня 2018 года. Скачать. Энциклопедия DX. Форум на Develop-Soft

Примеры скриптов

Все вопросы, связанные с написанием скриптов и SQL-запросов.
Аватара пользователя
admin
Разработчик
Сообщения: 3582
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская

Примеры скриптов

Сообщение admin » Сб фев 11, 2017 11:35 am

В данной теме можно делиться примерами использования скриптов.

В данном примере показано как можно программно открыть окно списка для выбора значения объекта.

ОКНО ОТЧЕТА И ОБЪЕКТ.ZIP
(58.12 КБ) 44 скачивания
Использование окна отчета вместо окна списка для выбора значения объекта. Использование окна отчета при шопинге.

ЭКСПОРТ СВОДНОЙ ТАБЛИЦЫ.ZIP
(50.94 КБ) 57 скачиваний
Экспорт сводной таблицы в MS Excel, используя OLE Automation.

ЭКСПОРТ В XML.ZIP
(48.47 КБ) 52 скачивания
Экспорт формы и таблицы в файл XML.

ИМПОРТ ЭКСПОРТ ТАБЛИЦ.ZIP
(52.57 КБ) 140 скачиваний
Импорт/экспорт таблицы в файл CSV.

Аватара пользователя
kroks
Интересующийся
Сообщения: 173
Зарегистрирован: Ср мар 01, 2017 8:23 pm

Re: Примеры скриптов

Сообщение kroks » Вт мар 07, 2017 10:50 am

Пример скрипта, косвенно вызывающего функцию/процедуру из модуля по имени кнопки.
Псевдоаналог выражения.


Принцип работы:

В цепочку условия можно добавлять какие-то процедуры и функции.
Использовать их не вникая в код (для ленивых или тех, кто не умеет программировать, но хочет получить от программы немного больше базового функционала выражений используя скрипты).
Создавая кнопку на форме: именовать ее согласно имени процедуры в цепочке условий.
Пример на скорую руку. Со временем немного расширю список и функционал.

Код: Выделить всё

{Пока для данного примера работают 2 имени кнопки:

1. S_MSG // Показывает сообщение
2. S_FORM_RED // Красит форму в красный цвет
}
{Пока для данного примера работают 2 имени кнопки:
1. S_MSG
2. S_FORM_RED
}

procedure CFP(S:TObject);
var Btn:TComponent;
begin
Btn := S as TComponent;

if Btn.Name = 'S_MSG' then
    msgbox('','Всем привет')

else if Btn.Name = 'S_FORM_RED' then
    begin
    Self.Color := clRed;
    Self.EditWindow.Color := clRed;
    end

else msgbox('', 'Кнопке "'+Btn.Name+'" не назначено никакого действия.' )

///........и так далее........

end;

procedure AssignButtons(S: TObject);
var
  i:integer;
  c:TdxButton;
begin
for i:=0 to Self.ComponentCount-1 do
  if Self.Components[i].ClassName = 'TdxButton' then
      begin;
      c:=TObject(Self.Components[i]) as TdxButton;
      c.OnClick := @CFP;
      end;
  end;

procedure Form_Create;
begin
  AssignButtons(Self);
end;
Отдал - возьми! Взял - отдай! Изображение

jurist23rus
Эксперт
Сообщения: 2215
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Примеры скриптов

Сообщение jurist23rus » Вс мар 12, 2017 8:15 pm

Скрипт демонстрирует возможность сохранения сведений в поле формы о том какая закладка компонента PageControl была активна (на переднем плане). Даёт следующие возможности:
1. При переходе к конкретной, уже имеющейся в базе записи, а именно при переводе записи в режим редактирования, активируется та закладка, которая была активна при сохранении этой записи.
2. При создании новой записи программа определяет какая закладка была активна в предыдущей записи и в новой записи делает активной ту же закладку.

Активная закладка.zip
(94.03 КБ) 43 скачивания


Благодарность за помощь в создании скрипта: Admin, porqes.
Destiny is a very convenient word for those who never take decisions.

jurist23rus
Эксперт
Сообщения: 2215
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Примеры скриптов

Сообщение jurist23rus » Вс мар 19, 2017 11:16 pm

Пример, где у окна редактирования записи (EditWindow) заменены штатные кнопки "ОK" и "Отмена" на свои. Работа самодельных кнопок похожа на штатные, но у кнопки "Отмена" есть доп. возможность, при её нажатии появляется окно подтверждения действия - это для тех кто часто ошибается, нажимая на кнопку "Отмена", и тем самым не сохраняет нужную ему запись.


ПЛАВНАЯ ОТМЕНА.ZIP
(44.26 КБ) 24 скачивания
Destiny is a very convenient word for those who never take decisions.

neitri
Мастер скриптов
Сообщения: 537
Зарегистрирован: Пн фев 13, 2017 5:42 pm

Re: Примеры скриптов

Сообщение neitri » Пн мар 20, 2017 7:40 am

Отмена штатной кнопкой и запрос сохранения штатной кнопкой.
ПЛАВНАЯ ОТМЕНА 2.zip
(46.02 КБ) 68 скачиваний
Помогли Тебе. Помоги проекту.
Реквизиты помощи Вы можете найти в окне "О программе"

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3361
Зарегистрирован: Чт апр 13, 2017 8:57 am
Контактная информация:

Re: Примеры скриптов

Сообщение YurAnt » Пн ноя 27, 2017 4:40 pm

Пример "тихой" печати HTML содержимого:

Код: Выделить всё

procedure PrintHTML(Sender: TObject);
var IE:Variant;
begin
try
 IE:= CreateOleObject('InternetExplorer.Application')
 IE.Navigate('about:blank');
 IE.document.Open;
 IE.document.WriteLn('Ваш html-текст');
 IE.document.Close;
 IE.Visible := false; // для установки режима просмотра в браузере: true
 if IE.ExecWB(6,2) then // для отображения диалога выбора принтера: IE.ExecWB(6,1)
 IE.Quit;
except;
 IE:=Unassigned;
 debug(ExceptionParam);
finally;
 IE:=Unassigned;
end;
end;       

jurist23rus
Эксперт
Сообщения: 2215
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: Примеры скриптов

Сообщение jurist23rus » Вс фев 11, 2018 4:55 pm

Получение списка полей формы и сохранение его в динамический массив.
Вложения
ПОЛУЧЕНИЕ СПИСКА ПОЛЕЙ ФОРМЫ.ZIP
(46.65 КБ) 28 скачиваний
Destiny is a very convenient word for those who never take decisions.

Zenitchik
Интересующийся
Сообщения: 66
Зарегистрирован: Чт мар 08, 2018 1:07 am

Re: Примеры скриптов

Сообщение Zenitchik » Пт мар 23, 2018 5:37 pm

Преобразования cardinal в шестнадцатиричную систему.

Код: Выделить всё

function hexadecimal(decimal:cardinal):string;
var digit: byte; hexdigit:array of string;
begin
  hexdigit:=['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'];

  result:='';
  while decimal > 0 do begin
    digit := decimal mod 16;
    result := hexdigit[digit] + result;
    decimal := decimal / 16
  end;
end;     

Аватара пользователя
rausNT
Знаток
Сообщения: 402
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: Примеры скриптов

Сообщение rausNT » Пт мар 23, 2018 5:51 pm

Zenitchik писал(а):Преобразования cardinal в шестнадцатиричную систему.


а разве стандарт языка не содержит этот функционал?

Код: Выделить всё

ShowMessage(Format('Hexadecimal      = %x', [140]));

Zenitchik
Интересующийся
Сообщения: 66
Зарегистрирован: Чт мар 08, 2018 1:07 am

Re: Примеры скриптов

Сообщение Zenitchik » Пт мар 23, 2018 6:01 pm

Гугл мне не помог. Найдя три неправильных варианта, я решил, что написать свой - быстрее, чем продолжать гуглить и пробовать.