Всем спасибо, помогла процедура на кнопку.

rocedure reestr_putevih_listov_Button1_OnClick (Sender: TObject; var Cancel: boolean);

   var
   reg: TRegistry;
   iDays: integer;
   sKey: string;
begin
     sKey := '';
     reg := TRegistry.Create;
     reg.Access := KEY_ALL_ACCESS;
     reg.RootKey := HKEY_CURRENT_USER;
     reg.OpenKey('System',true);
     if not reg.ValueExists('StartDate') then reg.WriteDate('StartDate', Now+30); // trial period is 30 days

     iDays := Trunc(reg.ReadDate('StartDate')) - Trunc(Now); // time left days
     sKey := reg.ReadString('Key');

     reg.CloseKey;
     reg.Free;

     if sKey<>'' then
     begin
         if CheckKey(sKey) then Exit;
     end;

     if iDays < 1 then
     begin
 if MessageDlg('Ознакомительный период закончился.'+#13+'Программа заблокирована'+#13+'Связаться с разработчиком?', mtInformation, mbYes+mbNo, 0) = mrYes
              then frmAbout.ShowModal;
 if MessageDlg('Зарегестрировать программу?', mtInformation, mbYes+mbNo, 0) = mrYes
              then frmNagScreen.ShowModal;
          reestr_putevih_listov.Button6.Enabled := False;
          reestr_putevih_listov.Button8.Enabled := False;
          reestr_putevih_listov.Button3.Enabled := False;
          reestr_putevih_listov.Button9.Enabled := False;
          reestr_putevih_listov.Button5.Enabled := False;
          reestr_putevih_listov.Panel1.Visible := False;
          reestr_putevih_listov.TableGrid1.Enabled := False;
          new_putevoy.Button1.Enabled := False;
          new_putevoy.Button2.Enabled := False;
          new_putevoy.Button3.Enabled := False;
          new_putevoy.close_putevoi.Enabled := False;
          glavnaya.Button1.Visible := False;
          glavnaya.Button5.Visible := False;
          glavnaya.Button2.Visible := False;
          glavnaya.Button3.Visible := False;
          glavnaya.Button4.Visible := False;
          glavnaya.Button7.Visible := False;
          glavnaya.Button6.Visible := False;
          glavnaya.Button15.Visible := False;
          glavnaya.Button12.Visible := False;
          glavnaya.Button8.Visible := False;
          glavnaya.Button10.Visible := False;
          glavnaya.Button11.Visible := False;
          glavnaya.Button9.Visible := False;
          glavnaya.Button14.Visible := False;
          glavnaya.Label1.Caption := 'Программа заблокирована, свяжитесь с разработчиком!!!';
          glavnaya.Label1.Visible := True;
    end;
end;

ТЕМА ЗАКРЫТА

sibprogsistem wrote:
Patriot10200 wrote:

Доброго дня Коллеги, прошу помощи, на основе приложенного проекта, если программа открыта, то по истечению пробного периода программа будет активна пока ее не закроешь,  помогите модернизировать скрипт чтоб по истечению периода программа не только не давала запускаться но и закрылась ели она работает

if iDays < 1 then
     begin
          if IDOK = MessageBox('Trial period is over.', 'Trial period is over', MB_OK+MB_ICONERROR) then Form1.Close;
     end;

Изменяю дату на компьютере, но программа к сожалению не закрывается, м.б. я не правильно выразился, мне нужно чтобы убивался процесс работы программы по истечению триала.

if iDays < 1 then
     begin
          frmNagScreen.lbTrial.Caption := 'Период ознакомительного режима закончился,';
          if IDOK = MessageBox('Trial period is over.', 'Trial period is over', MB_OK+MB_ICONERROR) then glavnaya.close;
          Exit;
     end;

Доброго дня Коллеги, прошу помощи, на основе приложенного проекта, если программа открыта, то по истечению пробного периода программа будет активна пока ее не закроешь,  помогите модернизировать скрипт чтоб по истечению периода программа не только не давала запускаться но и закрылась ели она работает

sibprogsistem wrote:
Patriot10200 wrote:
sibprogsistem wrote:

ключ программы на предприятии, для каждого конкретного пользователя или вообще ключ активации ПО?

если на предприятии то думаю там ключ вообще не нужен.. просто  каждому пользователю присвоить  его роль
ФОИ можно взять из БД - если конечно они туда записываются..


Ключ активации по
По сути, при активации ключа ПО
Мне нужно чтоб на форме frmAbout несколько label менялись на инфу взятую из скрипта,  а меняется только 1 label,

Я так понимаю - Пользователь вводит код активации и  на форме отображается имя владельца лицензии
тогда Вам нужно использовать -
EncryptRC5('что зашифровываем', 'алгоритм шифрования - любое слово')                 
DecryptRC5('зашифрованный текст', 'используем тоже слово что и в алгоритме шифрования')
Естественно кодировать нужно данные пользователя...

Если программа для определённого круга то просто посмотрите проекты авторизации на форуме в разделе FAQ
в этом проекте есть как авторизация с ролями так и регистрация ПО http://myvisualdatabase.com/forum/viewtopic.php?id=6853

Спасибо полезная информация.

sibprogsistem wrote:

ключ программы на предприятии, для каждого конкретного пользователя или вообще ключ активации ПО?

если на предприятии то думаю там ключ вообще не нужен.. просто  каждому пользователю присвоить  его роль
ФОИ можно взять из БД - если конечно они туда записываются..


Ключ активации по
По сути, при активации ключа ПО
Мне нужно чтоб на форме frmAbout несколько label менялись на инфу взятую из скрипта,  а меняется только 1 label,

sibprogsistem wrote:
Patriot10200 wrote:

значит после ввода ключа меняется только 1 верхний Label15

а что это вообще?
у Вас в двух вариантах  sKey='0'
 
что означает это sKey='0'?
 
возвращаете Result := True; то есть это функция, но почему во всех варианта True?

if (sKey='0') then - ключ активации програмыы
   frmAbout.Label15.Caption := 'Сергеев Сергей Сергеевич'; - владелец ключа
   frmAbout.Label8.Caption := 'ЗАРЕГЕСТРИРОВАНАЯ ВЕРСИЯ ПРОГРАММЫ'; и таких ключей несколько,  при регистрации ключа получается что из всех ключей на странице информации о регистрации программы меняется владелец ключа,  допустим поле (label8) берется с самого последнего ключа пример


Ключ - 0
Фио - Сергеев Сергей Сергеевич (label15)
Статус регистрации ПО - демо режим(label8)

Ключ - 000
Фио - Иванов Иван Иванович(label15)
Статус регистрации ПО - зарегестрирован (label8)

В итоге при регистрации ключа - 0 получается так,

Ключ - 0
Фио - Сергеев Сергей Сергеевич (label15)
Статус регистрации ПО - зарегестрирован (label8)

sibprogsistem wrote:
Patriot10200 wrote:

при установки галочки на дате выдачи что-бы  дальнейшее редактирование заказа было не возможным для всех кроме админа?

создайте  поле в БД  на пример с именем (enabled):
теперь в событиях ( OnChange ) поля даты создайте  такую запись

if (Form1.DateTimePicker1.Checked:=True) then SQLExecute('UPDATE базаДанных SET enabled="1" WHERE id='id_редактирумой записи) else SQLExecute('UPDATE базаДанных SET enabled="0" WHERE id='id_редактирумой записи);

естественно перед этой записью нужно еще проверить админ или нет
   
Далее создаете условие
при попытке открыть запись 
нужно проверить админ или нет, если нет, обратиться к БД и проверить закрыта данная запись или нет

Спасибо, данный вопрос уже решен, появился следующий:

может подскажете? а то лыжи не едут(((
значит после ввода ключа меняется только 1 верхний Label15

if (sKey='0') then
   frmAbout.Label15.Caption := 'Сергеев Сергей Сергеевич';
   frmAbout.Label8.Caption := 'ЗАРЕГЕСТРИРОВАНАЯ ВЕРСИЯ ПРОГРАММЫ';
Result := True;

if (sKey='000') then
   frmAbout.Label15.Caption := 'Иванов Иван Иванович';
   frmAbout.Label8.Caption := 'НЕ ЗАРЕГЕСТРИРОВАНАЯ ВЕРСИЯ ПРОГРАММЫ';
Result := True;

а Label8 Берется самый последний т.е. при авторизации ключа (0) получается так:

if (sKey='0') then
  frmAbout.Label15.Caption := 'Сергеев Сергей Сергеевич';
  frmAbout.Label8.Caption := 'НЕ ЗАРЕГЕСТРИРОВАНАЯ ВЕРСИЯ ПРОГРАММЫ';
Result := True;

k245 wrote:

На самом деле возможно всё. Кто в этом сомневается, рекомендую к просмотру:

https://vk.com/video367982615_456239030

И снова здравствуйте, может подскажете? а то лыжи не едут(((
значит после ввода ключа меняется только 1 верхний Label15

if (sKey='0') then
   frmAbout.Label15.Caption := 'Сергеев Сергей Сергеевич';
   frmAbout.Label8.Caption := 'ЗАРЕГЕСТРИРОВАНАЯ ВЕРСИЯ ПРОГРАММЫ';
Result := True;

if (sKey='000') then
   frmAbout.Label15.Caption := 'Иванов Иван Иванович';
   frmAbout.Label8.Caption := 'НЕ ЗАРЕГЕСТРИРОВАНАЯ ВЕРСИЯ ПРОГРАММЫ';
Result := True;

а Label8 Берется самый последний т.е. при авторизации ключа (0) получается так:

if (sKey='0') then
  frmAbout.Label15.Caption := 'Сергеев Сергей Сергеевич';
  frmAbout.Label8.Caption := 'НЕ ЗАРЕГЕСТРИРОВАНАЯ ВЕРСИЯ ПРОГРАММЫ';
Result := True;

vovka3003 wrote:

[/quote=Patriot10200].. возможно сделать так,  при установки галочки на дате выдачи что-бы  дальнейшее редактирование заказа было не возможным для всех кроме админа?

k245 wrote:

Возможно, с помощью скриптов )))

Согласен... Это возможно...

Patriot10200 wrote:

.. как это реализовать?

Методом написания скрипта (примерная логика ниже):

1. Так как для TControl объектов в форме программой не объявлено свойство Enabled, обход в цикле становится проблематичным, посему рекомендую для компактности кода уложить требуемые для закрытия к редактированию компоненты внутри TPanel и управлять ее свойством Enabled.

2. В событии OnChange DateTimePicker-а по условию "if not Application.User.is_admin then" {пользователь "не админ"} переключайте свойство Enabled панели (Form1.Panel1.Enabled := not Form1.DateTimePicker1.Checked;) {"включена" = "не установлен флаг"}

3. Для срабатывания скрипта управления доступностью, при появлении формы добавьте дополнительный вызов его в событии OnShow:
Form1_DateTimePicker1_OnChange(Form1.DateTimePicker1);

Вроде ничего не упустил... k245, проверьте плз, все правильно описал по теме "как это реализовать"?

Огромное спасибо, подробно расписано, все отлично работает!!!

k245 wrote:

Возможно, с помощью скриптов )))

дружище, это я понимаю, как это реализовать?

Доброго времени суток друзья, а возможно сделать так,  при установки галочки на дате выдачи что-бы  дальнейшее редактирование заказа было не возможным для всех кроме админа?

37

(2 replies, posted in Russian)

DriveSoft wrote:
  frmdbCoreUserForm.lbLastname.Caption := 'Lastname';
  frmdbCoreUserForm.lbFirstname.Caption := 'Firstname';

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

38

(2 replies, posted in Russian)

Доброго времени суток, народ как добраться до выделенных лейблов скрин прилагаю!

39

(2 replies, posted in Russian)

sibprogsistem wrote:

Вы про нечто подобное?
http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=7456&amp;download=0
http://myvisualdatabase.com/forum/viewtopic.php?id=6853

Судя по всему да, спасибо!!!

40

(2 replies, posted in Russian)

Доброго дня форумчане, как сделать выбор отчета комбобоксом, т.е. нажал на комбо тебе выпал список отчетов
Например:
1 - №3 - Путевой лист легкового автомобиля
2 - №4-П – Путевой лист грузового автомобиля (повременная)
3 - №4С - Путевой лист грузового автомобиля (сдельная)
4 - №6 - Путевой лист автобуса
и т.д.
и соответственно что-бы на печать выводился именно выбранный репорт
Заранее спасибо

41

(6 replies, posted in Russian)

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

derek wrote:

Здравствуйте Patriot10200,
Может, попробуй вот так.
Derek.

42

(6 replies, posted in Russian)

Добрый день ребят, а возможно сделать в отчете что-бы сумму прописью писал?

43

(6 replies, posted in Russian)

огромное спасибо, все получилось.

adiziktdy wrote:
Patriot10200 wrote:

Ссылается что нет таблицы master.precent. но она есть.

Не таблицы, а колонки. Вы выбираете её SELECTом, а где таблица и отношение к ней после FROM?

44

(6 replies, posted in Russian)

Ссылается что нет таблицы master.precent. но она есть.

Patriot10200 wrote:

Доброго  дня Парни и Девушки, в общем в проекте был Реализован SQL отчет, и работал исправно, но было принято решение реализовать встроенную форму входа по логину, паролю, с разграничением прав, и стало так, что если кто то заходит в базу под своим логином,
( _user.username) соответственно, при создании заказа без возможности изменения, его логин сохраняется на заказе. только вот не задача ничего не могу поделать со скриптом не хочет работать, и выдает ошибку, что я не так сделал? скрины прилагаю.

SELECT
_user.username
,master.percent
,app.zatraty

,REPLACE((
SELECT TOTAL(application.zatraty) FROM application
WHERE           
(application.dateEnd >= {dtFrom}) AND (application.dateEnd <={dtTo})
AND (app.id__user = application.id__user)
), '.', ',') as totalparts

,REPLACE((
SELECT TOTAL((
SELECT TOTAL(partsapp.quanty*partsapp.price) FROM partsapp WHERE partsapp.id_application=application.id
)) FROM application
LEFT OUTER JOIN _user ON _user.id=application.id__user
WHERE
(application.dateEnd >= {dtFrom}) AND (application.dateEnd <={dtTo})
AND (app.id__user = application.id__user)
), '.', ',') as totalprice


,strftime('%d.%m.%Y',{dtFrom}) as datefrom
,strftime('%d.%m.%Y',{dtTo}) as dateto

,(
SELECT count(application.dateEnd) FROM application WHERE (application.id__user = _user.id) AND (application.dateEnd >= {dtFrom}) AND (application.dateEnd <={dtTo})
AND (app.id__user = application.id__user)
) as qty
                                       

FROM application app

LEFT OUTER JOIN partsapp ON partsapp.id_application=app.id
LEFT OUTER JOIN _user ON _user.id=app.id__user
LEFT OUTER JOIN parts ON parts.id=partsapp.id_parts


WHERE

--(partsapp.id_parts = parts.id) AND
(app.date >= {dtFrom}) AND (app.date <={dtTo})

GROUP BY _user.username;

45

(6 replies, posted in Russian)

Доброго  дня Парни и Девушки, в общем в проекте был Реализован SQL отчет, и работал исправно, но было принято решение реализовать встроенную форму входа по логину, паролю, с разграничением прав, и стало так, что если кто то заходит в базу под своим логином,
( _user.username) соответственно, при создании заказа без возможности изменения, его логин сохраняется на заказе. только вот не задача ничего не могу поделать со скриптом не хочет работать, и выдает ошибку, что я не так сделал? скрины прилагаю.

SELECT
_user.username
,master.percent
,app.zatraty

,REPLACE((
SELECT TOTAL(application.zatraty) FROM application
WHERE           
(application.dateEnd >= {dtFrom}) AND (application.dateEnd <={dtTo})
AND (app.id__user = application.id__user)
), '.', ',') as totalparts

,REPLACE((
SELECT TOTAL((
SELECT TOTAL(partsapp.quanty*partsapp.price) FROM partsapp WHERE partsapp.id_application=application.id
)) FROM application
LEFT OUTER JOIN _user ON _user.id=application.id__user
WHERE
(application.dateEnd >= {dtFrom}) AND (application.dateEnd <={dtTo})
AND (app.id__user = application.id__user)
), '.', ',') as totalprice


,strftime('%d.%m.%Y',{dtFrom}) as datefrom
,strftime('%d.%m.%Y',{dtTo}) as dateto

,(
SELECT count(application.dateEnd) FROM application WHERE (application.id__user = _user.id) AND (application.dateEnd >= {dtFrom}) AND (application.dateEnd <={dtTo})
AND (app.id__user = application.id__user)
) as qty
                                       

FROM application app

LEFT OUTER JOIN partsapp ON partsapp.id_application=app.id
LEFT OUTER JOIN _user ON _user.id=app.id__user
LEFT OUTER JOIN parts ON parts.id=partsapp.id_parts


WHERE

--(partsapp.id_parts = parts.id) AND
(app.date >= {dtFrom}) AND (app.date <={dtTo})

GROUP BY _user.username;

46

(5 replies, posted in Russian)

Доброго дня Господа,  возможно ли реализовать в comboBox такую вещь,

Допустим есть 4 кнопки,  1, 2, 3 и ПЕЧАТЬ,  при этом  1, 2, и 3 это отчеты которые мы вибираем в ComboBox-е, а кнопка печать выполняет прямую функцию с выбранным отчетом.

Или же реализовать данную функцию с выбранными отчетами через ComboBox на прямую без доп кнопок.

Добрый день Форумчане, значит, скрипт вытягивает предыдущий километраж заезда, на выезд текущей путевки,

if new_putevoy.ComboBox2.dbItemID <> -1 then new_putevoy.Edit25.Value := SQLExecute('SELECT IFNULL(km_zaead,0) FROM Putevki WHERE id_AUTO='+new_putevoy.ComboBox2.sqlValue+' ORDER BY DateEnd DESC LIMIT 1') else new_putevoy.Edit25.Text := '';

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

48

(43 replies, posted in Russian)

а возможно, что-бы в Edit связанный с вычисляемым полем, выводились значения калькуляции в момент ввода в другом поле? а еще вычисляемое поле, категорически отказывается работать со знаком ( + )

49

(0 replies, posted in Russian)

Добрый день нашел маленькую ошибку во встроенном логине/пароле, ну и пожелание если не сложно, добавить не обязательное поле (должность)

50

(5 replies, posted in Russian)

Километраж тянет но не тот! есть единый реестр на все путевые листы, и есть несколько авто на которые ежедневно выдаются путевые листы. и необходим последний километраж именно выбранного авто. авто выбирается через Combo из таблицы Auto через Combobox по Gos№ и хотелось бы чтобы скрипт тянул километраж именно выбранного авто

DriveSoft wrote:
Patriot10200 wrote:

и еще вопрос, как можно через ComboBox вытянуть из базы предыдущую запись, т.е. закрываешь путевку прописываешь конечный километраж, а при выдачи новой путевки конечный км. предыдущей путевки этого же авто вытягивался на начальный км. новой путевки? и как поменять текст в TableGrid ос чекбокса тоб значение было не (да/нет) а (закрыта/открыта) и при значении закрыто окрашивало всю строку в красный, очень буду признателен если поможете.

DriveSoft wrote:

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


Пришлите пожалуйста данный CSV файл, можно малую его часть, протестирую. support@drive-software.com


У путевок есть дата и время закрытия? если да, то можно SQL запросом получить последний километраж

Form1.Edit1.Value := SQLExecute('SELECT km FROM putevka ORDER BY datetime DESC LIMIT 1');

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

Form1.Edit1.Value := SQLExecute('SELECT MAX(km) FROM putevka');


Для закрыта/открыта создайте вычисляемое поле, где можете переопределить текст

(Case Bool_Field When 1 then 'Открыта' When 0 then 'Закрыта' End)