Сп. помогло... думал что OnCloseQuery должно только в основном теле.
1 2023-09-29 10:29:57
Re: Контроль запуска одного экземпляра программы (21 replies, posted in Russian)
2 2023-09-29 10:00:31
Re: Контроль запуска одного экземпляра программы (21 replies, posted in Russian)
Это чтоб на панели задач не было открыто много окон при открытых двух формах...
3 2023-09-29 08:35:17
Re: Контроль запуска одного экземпляра программы (21 replies, posted in Russian)
А подскажите, как условия сделать приведенных примерах... не понимаю к чему привязываться...
А то у меня реализовано
frmFon.OnCloseQuery := @frmFon_OnCloseQuery;
и поэтому постоянно выскакивает подтверждение выхода.
А если поставить в теле программы
begin
...
end.
до OnCloseQuery , то появляется пустое окно, на которое надо нажать, чтоб оно исчезло...
т.е. мне надо условие чтоб можно было перепрыгнуть show следующей формы.
procedure frmFon_OnShow (Sender: TObject; Action: string);
begin
//Контроль запуска одного экземпляра программы
if FindWindow('','already_launched')>0 then
begin
MessageBox('Уже запущен экземпляр программы','Ошибка',MB_OK+MB_ICONINFORMATION);
Application.Minimize;
frmFon.Close;
end;
with TForm.Create(Application) do
begin
Name := 'already_launched';
BorderStyle := bsNone;
Width:=0;
Height:=0;
Show;
Hide;
end;
begin
//При стиле "без рамки" убирает второе окно
frmMain.Parent := frmFon;
frmMain.Show;
frmMain.TableGrid1.dbUpdate;
end;
end;
begin
frmFon.OnCloseQuery := @frmFon_OnCloseQuery;
end.
4 2023-09-28 12:17:10
Re: Контроль запуска одного экземпляра программы (21 replies, posted in Russian)
Люблю "сделать" красиво...
Блин, просто DeleteFile('~$applock') не прокатывает, надо оказывается путь прописывать или его создавать из начально в корне или Temp...
Ну это подумает сп. TZipMode - подходит.
try
ZF:=TZipFile.Create;
ZF.Open('C:\Windows\Temp\~$applock',zmWrite);
except
ZF.Free;
MessageBox('Уже запущен экземпляр программы','Ошибка',MB_OK+MB_ICONINFORMATION);
Application.Minimize;
frmFon.Close;
5 2023-09-28 11:56:35
Re: Контроль запуска одного экземпляра программы (21 replies, posted in Russian)
Как понял про TZipMode, она создает файл, и дальше смотрит его наличие... и после завершения созданная "какашка" остается... а функции удаления нет или скрытого параметра...
И больше подходит с TZipMode, т.к. у меня выскакивает запрос на закрытие...
6 2023-09-28 10:32:45
Re: Контроль запуска одного экземпляра программы (21 replies, posted in Russian)
Понял, сп.
7 2023-09-28 08:46:30
Re: Контроль запуска одного экземпляра программы (21 replies, posted in Russian)
Реакция на Zip...
8 2023-09-28 08:11:59
Re: Контроль запуска одного экземпляра программы (21 replies, posted in Russian)
if FindWindow(nil,'Database') <> 0 then
Перепробовал разные знаки и цифры. Реагирует на первый запуск.
9 2023-09-28 07:33:47
Re: Контроль запуска одного экземпляра программы (21 replies, posted in Russian)
Спасибо. А во втором случаи это если прогу из архива извлекать или для каких случаев...
10 2023-09-27 14:29:24
Topic: Контроль запуска одного экземпляра программы (21 replies, posted in Russian)
Здравствуйте, подскажите, как можно контролировать запуск одного экземпляра программы. Сп.
11 2022-02-08 10:00:10
Re: Доработка скрипта отправки смс. (45 replies, posted in Russian)
Странно, но я пробовал вбивать простое значение, чтоб выяснить... нужно маску снимать или нет... Тогда ошибку выдавало и так и так. В этот раз попробовал цикл сделать, как Вы мне предлагали в одной из веток.
procedure frmAddNew_OnShow (Sender: TObject; Action: string);
var
tel,telx : string;
i,i2 : Integer;
arr : string ='0123456789';
begin
tel := frmNew.Edit1.Text;
telx := '';
for i := 1 to Length(tel) do
begin
for i2 := 0 to Length(arr)-1 do
begin
if (tel[i] = arr[i2]) then
begin
telx := telx + tel[i];
end;
end;
end;
frmAddNew.Edit1.Text := telx;
end;
12 2022-02-05 10:05:07
Re: Доработка скрипта отправки смс. (45 replies, posted in Russian)
Опять решил палкой потыкать свой долгострой... Спасибо vovka3003, более красиво и компактно получается. Но вот попрежнему не могу получить вторую строку ответа...
ShowMessage(JSON(j,'["sms"]["'+SMSPhone+'"]["status_code"]'));
Выдает ошибку на функцию JSON
13 2021-09-21 09:36:07
Re: Прошу помощи со скриптом (3 replies, posted in Russian)
Вам достаточно создать кнопку с функцией редактирования оной таблицы.
14 2021-09-20 07:39:25
Re: Доработка скрипта отправки смс. (45 replies, posted in Russian)
sibprogsistem, json из примера Sms, причем в примере тоже, у меня, не работает.
function smsAnswer(sdata:string):string;
var
JSONObject, JSONObjProp, JSONObjProp2: TJSONObject;
JSONString: TJSONString;
sD: string;
begin
try
ShowMessage(smsquestion.ResponseText);
//if smsquestion.Status() = 200 then
//begin
//if smsAn = 'SMS.RU' then
//begin
JSONObject := nil;
JSONObject := TJSONObject(TJSONObject.ParseJSONValue(smsquestion.responsetext));
if JSONObject <> nil then
begin
//JSONString := TJSONString(JSONObject.GetPairByName('status_code').JsonValue);
//ShowMessage(JSONString.Value);
//if Pos('100',JSONString.Value) then
//begin
JSONObjProp := TJSONObject(JSONObject.GetPairByName('sms').JsonValue);
JSONObjProp2 := TJSONObject(JSONObjProp.GetPairByName(sD).JsonValue);
JSONString := TJSONString(JSONObjProp2.GetPairByName('status_code').JsonValue);
ShowMessage(JSONString.Value);
//end;
//Коды SMS
if Pos('100',JSONString.Value) then
begin
//ShowMessage('ОК');
JSONString := TJSONString(JSONObject.GetPairByName('balance').JsonValue);
//Вывод баланса
frmMain.Label4.Caption := JSONString.Value;
//Условие на проверку - открыта форма или нет
If frmWord.Visible then
begin
//Запомнить состояние флага
SQLExecute('UPDATE SMS SET sms_switch="'+frmWord.CheckBox2.sqlValue+'" WHERE id=1');
//Обновить содержимое
SQLEXecute('UPDATE SMS SET sms_API="'+frmWord.Memo1.Text+'" WHERE id=1');
SQLEXecute('UPDATE SMS SET sms_name="'+frmWord.Edit1.Text+'" WHERE id=1');
frmWord.Memo1.Enabled := False;
frmWord.Edit1.Enabled := False;
frmWord.Button25.Enabled := False;
frmMain.GroupBox2.Visible := True;
frmAddNew.CheckBox1.Visible := True;
end;
end;
if Pos('232',JSONString.Value) then ShowMessage('Превышен лимит одинаковых сообщений на этот номер в день');
if Pos('-1',JSONString.Value) then ShowMessage('Сообщение не найдено');
if Pos('107',JSONString.Value) then ShowMessage('Не может быть доставлено: неизвестная причина');
if Pos('108',JSONString.Value) then ShowMessage('Не может быть доставлено: отклонено');
if Pos('200',JSONString.Value) then
begin
ShowMessage('Неправильный API');
MessageBeep(1); //Звуковой сигнал
frmWord.Memo1.Text := '';
frmWord.Memo1.SetFocus;
end;
if Pos('201',JSONString.Value) then ShowMessage('Не хватает средств на лицевом счету');
if Pos('202',JSONString.Value) then ShowMessage('Неправильно указан номер телефона получателя, либо на него нет маршрута');
if Pos('203',JSONString.Value) then ShowMessage('Нет текста сообщения ');
if Pos('204',JSONString.Value) then ShowMessage('Имя отправителя не согласовано с администрацией');
if Pos('209',JSONString.Value) then ShowMessage('Вы добавили этот номер (или один из номеров) в стоп-лист');
if Pos('220',JSONString.Value) then ShowMessage('Сервис временно недоступен, попробуйте чуть позже');
if Pos('230',JSONString.Value) then ShowMessage('Превышен общий лимит количества сообщений на этот номер в день');
if Pos('231',JSONString.Value) then ShowMessage('Превышен лимит одинаковых сообщений на этот номер в минуту');
if Pos('233',JSONString.Value) then ShowMessage('Превышен лимит отправки повторных сообщений с кодом на этот номер за короткий промежуток времени ("защита от мошенников"), можно отключить в разделе "Настройки")');
if Pos('301',JSONString.Value) then ShowMessage('Неправильный api_id, либо логин/пароль');
if Pos('205',JSONString.Value) then ShowMessage('Сообщение слишком длинное (превышает 8 СМС)');
if Pos('206',JSONString.Value) then ShowMessage('Будет превышен или уже превышен дневной лимит на отправку сообщений ');
if Pos('207',JSONString.Value) then ShowMessage('На этот номер нет маршрута для доставки сообщений');
if Pos('302',JSONString.Value) then ShowMessage('Пользователь авторизован, но аккаунт не подтвержден (пользователь не ввел код, присланный в регистрационной смс)');
if Pos('500',JSONString.Value) then ShowMessage('Ошибка на сервере. Повторите запрос');
end;
//end;
except
end;
smsTimer.Enabled:=False;
end;
vovka3003. понимаю, что надо полученное сообщение загонять в константу и оттуда извлекать необходимое?
15 2021-09-18 09:26:24
Re: Доработка скрипта отправки смс. (45 replies, posted in Russian)
Ни как неполучается получить вторую страку строку из json. Постоянно выдает ноль...
JSONObject := nil;
JSONObject := TJSONObject(TJSONObject.ParseJSONValue(smsquestion.responsetext));
if JSONObject <> nil then
begin
JSONString := TJSONString(JSONObject.GetPairByName('status_code').JsonValue);
ShowMessage(JSONString.Value);
if Pos('100',JSONString.Value) then
begin
JSONObjProp := TJSONObject(JSONObject.GetPairByName('sms').JsonValue);
JSONObjProp2 := TJSONObject(JSONObjProp.GetPairByName(sD).JsonValue);
JSONString := TJSONString(JSONObjProp2.GetPairByName('status_code').JsonValue);
ShowMessage(JSONString.Value);
end;
16 2021-09-11 09:40:54
Re: как сбросить маску ввода (3 replies, posted in Russian)
Да вроде система SMS.ru проглатила маску...
17 2021-09-10 08:17:01
Topic: как сбросить маску ввода (3 replies, posted in Russian)
У меня в базе телефон вводится по маске, но надо ее сбросить для изьятия номера для работы с смс. Подскажите как. Сп.
19 2021-09-06 07:23:21
Re: А можно гиперссылку (4 replies, posted in Russian)
А нельзя через скрипт, чтоб автоматически открывался браузер по умолчанию.
20 2021-09-05 08:43:24
Topic: А можно гиперссылку (4 replies, posted in Russian)
Подскажите, как реализовать гиперссылку...
22 2021-09-02 12:13:39
Re: Настройка CheckBox (5 replies, posted in Russian)
Что-то и так никак. Остается делать грабли... Заносить значение 0 или 1 сравнивать с базой и устанавливать DefaultState... Может есть другие варианты?
23 2021-09-02 09:04:51
Re: Настройка CheckBox (5 replies, posted in Russian)
В лоб не получилось. Надо еще при старте делать SELECT?
24 2021-09-02 07:23:15
Topic: Настройка CheckBox (5 replies, posted in Russian)
Вроде понятно, как сиеминутно сделать выбор с помощью скрипта...
А вот как закрепить положение флажка в базе, чтоб, она, база, помнила, в каком положение, он стоит, при каждом ее запуске. Так понимаю нужно поле да/нет.
25 2021-09-01 07:43:10
Re: Возможно ли запретить ввод на другом языке? (2 replies, posted in Russian)
Ну как-то так
if not (Key in ['0'..'9', 'A'..'Z', 'a'..'z', #8, #32 ]) then Key:=#0;