для смены пороля скрипт не нужен...
создайте новйю форму добавьте в нее поле edit и свяжите его с полем пороля в базе данных добавте кнопку укажите кнопке деиствие сохранить запись ...  теперь на главной форме расположите кнопку выбирите для нее действие "ПОКАЗАТЬ ЗАПИСЬ"  укажите ту самую новую форму... и ТД

1,352

(8 replies, posted in Russian)

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

1,353

(8 replies, posted in Russian)

наверное примерно так...

(SELECT Phone FROM phones WHERE Phones.id_Kontragent=Kontragent.id)

1,354

(8 replies, posted in Russian)

не у кого вариантов больше нет?  .... Гугл что-то тоже не помощьник

1,355

(8 replies, posted in Russian)

k245 wrote:

В идеале нужно делать онлайн подтверждение ключа раз в месяц, чтобы блокировать / отзывать лицензии  тех пользователей, которые нарушают пользовательское соглашение. Хотя даже Microsoft это не очень помогает )))

я понимаю, что идеальной защиты нет, просто хочу уменьшить колличество (пиратских) копий... Кулибин все равно найдется, но моленький )

1,356

(8 replies, posted in Russian)

не, это то же самое.. мне нужен серийник именно харда... серийник основанный на томе диска долго не проработает стоит только отформатировать и ТП.. тоесть придется постоянно делать новый ключ...  Жеский диск обычто держится дольше ))

Пользователь будет покупать лицензию на каждый диск.. на тома дисков денег не хватит)

Можно и обычной активацией воспользоваться но коды активации такого варианта быстро разлетятся по сети.. все таки лучше привязываться к диску..

1,357

(8 replies, posted in Russian)

как мне получить номер жетского диска?

GetHardDiskSerial возвращает либо с: либо d:  но это разделы диска..

1,358

(3 replies, posted in Russian)

решил
сделал на заднем фоне еще панель, чуточку больше..

теперь так:  жму кнопку появляются понели при это панель на заднем фоне не активированна, когда курсор попадает на внешнию панель, та , что на заднем фоне активируется и привыводе курсора панели закрываются

1,359

(3 replies, posted in Russian)

DriveSoft wrote:

К сожалению не совсем вас понял.
Чтобы панель не исчезала, нужно просто убрать скрипт, который вы привели в пример.

Панель должна исчезнуть, но  не когда я наважу курсор на кнопки (расположенные на этой понели) а когда вывожу курсор за пределы панели

1,360

(3 replies, posted in Russian)

procedure frmAdmin_pOtherKon_OnMouseLeave (Sender: TObject);
begin
  frmAdmin.pOtherKon.Visible:=False;
end;

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

1,361

(1 replies, posted in Russian)

Я хотел добавить в свою программу работу с quintadb
https://quintadb.ru/api/index#create_database
 
но там нужно проверять SSL сертификат сервера на валидность
как это можно сделать?

1,362

(3 replies, posted in Russian)

комонент TreeView

все дошло

// если открыта форма * то переменная содежит имя этой формы
  if sender = 'frmAdmin' then mur:=frmAdmin else
  if sender = 'frmMasterWork' then mur:=frmMasterWork else
  if sender = 'frmServiceCen' then mur:=frmServiceCen;
  rta.free;
     // создаем выподающее меню
   mnFile := TMenuItem.Create (mur);
   mnFile.Caption := pupmFa;
k245 wrote:

Очень странно, что код вообще работает )))  Свойство формы, в котором хранится ссылка на главное меню формы (а это обычно экземпляр класса TMainMenu), называется Menu.  Разница между главной формой и остальными формами MVD в том, что на главной форме меню уже создано, а на остальных его нужно создавать скриптом.

Вот полностью рабочий скрипт обновления

procedure UpdateMenu;
var
   fiLang:TStringList;
   i,s, c: integer;
   subfiLangi: TMenuItem;
   mnFilereport: TMenuItem;
   subfiLangiEdit: TMenuItem;
   subfiLangirepor: TMenuItem;
   subfiLangiDel: TMenuItem;
   subfiLangiPrint: TMenuItem;
   subfiLangipdf: TMenuItem;
   mnFile: TMenuItem;
   mnfiLangi: TMenuItem;
   subFileNextUser: TMenuItem;
   subFileClose: TMenuItem;
   mnDictionary: TMenuItem;
   subDictionaryPriceList: TMenuItem;
   subDictionaryDash1: TMenuItem;
   subDictionaryDash2: TMenuItem;
   subDictionaryDash3: TMenuItem;
   subDictionaryDash4: TMenuItem;
   subDictionaryDash5: TMenuItem;
   subDictionaryStatusUser: TMenuItem;
   subDictionaryStatusEquipment: TMenuItem;
   subDictionaryCompany: TMenuItem;
   subDictionaryEquipment: TMenuItem;
   subDictionaryBrand : TMenuItem;
   subDictionaryAccessories: TMenuItem;
   subFilereport: TMenuItem;
   mnActivities: TMenuItem;
   subEvents: TMenuItem;
   subDonations: TMenuItem;



begin



   Form1.mniFile.Visible := False;
   Form1.mniOptions.Visible := False;
   Form1.mniAbout.Visible := False;


   c := Form1.MainMenu.Items.Count-1;
   for i := c downto 0 do
       if Form1.MainMenu.Items[i].Visible then Form1.MainMenu.Items[i].Free;



   mnFile := TMenuItem.Create (Form1.MainMenu);
   mnFile.Caption := 'Файл';

       subFileNextUser := TMenuItem.Create (Form1.MainMenu);
       subFileNextUser.Caption := 'Сменить пользователя ';
       subFileNextUser.OnClick := @MenuClick1;

       subFileClose := TMenuItem.Create (Form1.MainMenu);
       subFileClose.Caption := 'Выход';
       subFileClose.OnClick := @MenuClick2;

   mnDictionary := TMenuItem.Create (Form1.MainMenu);
   mnDictionary.Caption := 'Словари';

       subDictionaryPriceList := TMenuItem.Create (Form1.MainMenu);
       subDictionaryPriceList.Caption := 'Прайс лист';
       subDictionaryPriceList.OnClick := @MenuClick3;

       subDictionaryDash1:= TMenuItem.Create (Form1.MainMenu);
       subDictionaryDash1.Caption := '-';
       subDictionaryDash1.Enabled:= False;

       subDictionaryStatusUser := TMenuItem.Create (Form1.MainMenu);
       subDictionaryStatusUser.Caption := 'Статус пользователя ';
       subDictionaryStatusUser.OnClick := @MenuClick4;

       subDictionaryStatusEquipment := TMenuItem.Create (Form1.MainMenu);
       subDictionaryStatusEquipment.Caption := 'Статус оборудования ';
       subDictionaryStatusEquipment.OnClick := @MenuClick5;

       subDictionaryDash2:= TMenuItem.Create (Form1.MainMenu);
       subDictionaryDash2.Caption := '-';
       subDictionaryDash2.Enabled:= False;

       subDictionaryCompany := TMenuItem.Create (Form1.MainMenu);
       subDictionaryCompany.Caption := 'Компании ';
       subDictionaryCompany.OnClick := @MenuClick6;

       subDictionaryEquipment := TMenuItem.Create (Form1.MainMenu);
       subDictionaryEquipment.Caption := 'Оборудование';
       subDictionaryEquipment.OnClick := @MenuClick7;

       subDictionaryBrand := TMenuItem.Create (Form1.MainMenu);
       subDictionaryBrand.Caption := 'Бренды';
       subDictionaryBrand.OnClick := @MenuClick8;

       subDictionaryDash3:= TMenuItem.Create (Form1.MainMenu);
       subDictionaryDash3.Caption := '-';
       subDictionaryDash3.Enabled:= False;

       subDictionaryAccessories := TMenuItem.Create (Form1.MainMenu);
       subDictionaryAccessories.Caption := 'Комплектующие';
       subDictionaryAccessories.OnClick := @MenuClick9;



   mnActivities := TMenuItem.Create (Form1.MainMenu);
   mnActivities.Caption := 'Помощь';

       subEvents := TMenuItem.Create (Form1.MainMenu);
       subEvents.Caption := 'Сайт программы';
       subEvents.OnClick := @MenuClick10;

       subDictionaryDash4:= TMenuItem.Create (Form1.MainMenu);
       subDictionaryDash4.Caption := '-';
       subDictionaryDash4.Enabled:= False;

       subDonations := TMenuItem.Create (Form1.MainMenu);
       subDonations.Caption := 'О программе';
       subDonations.OnClick := @MenuClick11;

 mnFilereport := TMenuItem.Create (Form1.MainMenu);
 mnFilereport.Caption := langIniG.ReadString('pupmenu','report', '');

         subFilereport:= TMenuItem.Create (Form1.MainMenu);
         subFilereport.Caption := 'Новый отчет';
         subFilereport.OnClick := @clicknew;

         subDictionaryDash5:= TMenuItem.Create (Form1.MainMenu);
         subDictionaryDash5.Caption := '-';

 mnfiLangi := TMenuItem.Create (Form1.MainMenu);
 mnfiLangi.Caption := langIniG.ReadString('pupmenu','lang', ''); ;



   Form1.MainMenu.Items.Add(mnFile);
       mnFile.Add(subFileNextUser);
       mnFile.Add(subFileClose);

   Form1.MainMenu.Items.Add(mnDictionary);
        mnDictionary.Add(subDictionaryPriceList);
        mnDictionary.Add(subDictionaryDash1);
        mnDictionary.Add(subDictionaryStatusUser);
        mnDictionary.Add(subDictionaryStatusEquipment);
        mnDictionary.Add(subDictionaryDash2);
        mnDictionary.Add(subDictionaryCompany);
        mnDictionary.Add(subDictionaryEquipment);
        mnDictionary.Add(subDictionaryBrand);
        mnDictionary.Add(subDictionaryDash3);
        mnDictionary.Add(subDictionaryAccessories);

 Form1.MainMenu.Items.Add(mnfiLangi);



  try
 fiLang := TStringList.Create;
 fiLang.Text := GetFilesList('languages','*.ini',False);
 s := fiLang.Count-1;
for i:=0  to s  do
 begin
  subfiLangi:= TMenuItem.Create (Form1.MainMenu);

  subfiLangi.AutoCheck := True;
  if fiLang[i] = strshowG then subfiLangi.Checked := True;

  subfiLangi.Caption := ExtractFileName(fiLang[i]);
  Delete(subfiLangi.Caption, Length(subfiLangi.Caption) -3 , 4);
  subfiLangi.Hint := (fiLang[i]);
  mnfiLangi.Add(subfiLangi);
  subfiLangi.OnClick := @clicklang;
 end;
finally
fiLang.free  ;
end;

Form1.MainMenu.Items.Add(mnFilereport);
   mnFilereport.Add(subFilereport);
   mnFilereport.Add(subDictionaryDash5);
 try
 fiLang := TStringList.Create;
 fiLang.Text := GetFilesList('Report','*.fr3',False);
 s := fiLang.Count-1;
for i:=0  to s  do
 begin
  subfiLangirepor:= TMenuItem.Create (Form1.MainMenu);
  subfiLangirepor.Caption := ExtractFileName(fiLang[i]);
  Delete(subfiLangirepor.Caption, Length(subfiLangirepor.Caption) -3 , 4);
  subfiLangirepor.Hint := (fiLang[i]);
  subfiLangiEdit := TMenuItem.Create(Form1.MainMenu);
  subfiLangiEdit.Caption := langIniG.ReadString('pupmenu','reportedit', '');
  subfiLangiEdit.Hint := (fiLang[i]);
  subfiLangiDel := TMenuItem.Create(Form1.MainMenu);
  subfiLangiDel.Caption := langIniG.ReadString('pupmenu','reportdel', '');
  subfiLangiDel.Hint := (fiLang[i]);
  subfiLangipdf := TMenuItem.Create(Form1.MainMenu);
  subfiLangipdf.Caption := 'PDF';
  subfiLangipdf.Hint := (fiLang[i]);
  subfiLangiPrint := TMenuItem.Create(Form1.MainMenu);
  subfiLangiPrint.Caption := langIniG.ReadString('pupmenu','reportprint', '');
  subfiLangiPrint.Hint := (fiLang[i]);


  subfiLangiEdit.OnClick := @clickEdit;
  subfiLangiDel.OnClick := @clickDel;
  subfiLangiPrint.OnClick := @clickPrint;
  subfiLangipdf.OnClick := @clickpdf;

  mnFilereport.Add(subfiLangirepor);
  subfiLangirepor.Add(subfiLangiEdit);
  subfiLangirepor.Add(subfiLangiDel);
  subfiLangirepor.Add(subfiLangipdf);
  subfiLangirepor.Add(subfiLangiPrint);

  end;
finally
fiLang.free  ;
end;





   Form1.MainMenu.Items.Add(mnActivities);
        mnActivities.Add(subEvents);
        mnActivities.Add(subDictionaryDash4);
        mnActivities.Add(subDonations);



end;

но только для главной формы...
мой скрипт из первий записи выводит меню в 3-х формах кроме главной
и я не могу понять как мне  правельно изменить эту часть скрипта

c := frmLogin.TMainMenu.Items.Count-1;
   for i := c downto 0 do
       if frmLogin.TMainMenu.Items[i].Visible then frmLogin.TMainMenu.Items[i].Free;

или как еще можно перерисовать это меню?

1,365

(29 replies, posted in Russian)

ну логика разная
можете в переменную вывести результать а там уже
if (переменная > 80) AND (переменная < 89) then form1.label1.Caption:='Интеллект ниже среднего';

вот скрипт меню

procedure SwitchMenu (Sender: string);
var
   fiLang,reporfile:TStringList;
   i,s,t,c: integer;
   subfiLangi,mnFilereport,subfiLangiEdit,subfiLangirepor,subfiLangiDel,subfiLangiPrint,subfiLangipdf,mnFile,mnfiLangi,subFileNextUser,subFileClose,mnDictionary,subDictionaryPriceList,subDictionaryDash1,subDictionaryDash2,subDictionaryDash3,subDictionaryDash4,subDictionaryDash5,subDictionaryStatusEquipment,subDictionaryCompany,subDictionaryEquipment,subDictionaryBrand,subDictionaryAccessories,subFilereport,mnActivities,subEvents,subDonations : TMenuItem;
   rta:TMainMenu;
   mur:TForm;
begin
  // если открыта форма * то переменная содежит имя этой формы
  if sender = 'frmAdmin' then mur:=frmAdmin else
  if sender = 'frmMasterWork' then mur:=frmMasterWork else
  if sender = 'frmServiceCen' then mur:=frmServiceCen;

 c := frmLogin.TMainMenu.Items.Count-1;
   for i := c downto 0 do
       if frmLogin.TMainMenu.Items[i].Visible then frmLogin.TMainMenu.Items[i].Free;

   // создаем выподающее меню
   mnFile := TMenuItem.Create (mur);
   mnFile.Caption := pupmFa;

       subFileNextUser := TMenuItem.Create (mur);
       subFileNextUser.Caption := pupmnuser;
       subFileNextUser.OnClick := @MenuClick1;

       subFileClose := TMenuItem.Create (mur);
       subFileClose.Caption := pupmex;
       subFileClose.OnClick := @MenuClick2;

   mnDictionary := TMenuItem.Create (mur);
   mnDictionary.Caption := pupmlib;

       subDictionaryPriceList := TMenuItem.Create (mur);
       subDictionaryPriceList.Caption := pupmpr;
       subDictionaryPriceList.OnClick := @MenuClick3;

       subDictionaryDash1:= TMenuItem.Create (mur);
       subDictionaryDash1.Caption := '-';
       subDictionaryDash1.Enabled:= False;

       subDictionaryStatusEquipment := TMenuItem.Create (mur);
       subDictionaryStatusEquipment.Caption := pupmst;
       subDictionaryStatusEquipment.OnClick := @MenuClick5;

       subDictionaryDash2:= TMenuItem.Create (mur);
       subDictionaryDash2.Caption := '-';
       subDictionaryDash2.Enabled:= False;

       subDictionaryCompany := TMenuItem.Create (mur);
       subDictionaryCompany.Caption := pupmco;
       subDictionaryCompany.OnClick := @MenuClick6;

       subDictionaryEquipment := TMenuItem.Create (mur);
       subDictionaryEquipment.Caption := pupmeq;
       subDictionaryEquipment.OnClick := @MenuClick7;

       subDictionaryBrand := TMenuItem.Create (mur);
       subDictionaryBrand.Caption := pupmbr;
       subDictionaryBrand.OnClick := @MenuClick8;

       subDictionaryDash3:= TMenuItem.Create (mur);
       subDictionaryDash3.Caption := '-';
       subDictionaryDash3.Enabled:= False;

       subDictionaryAccessories := TMenuItem.Create (mur);
       subDictionaryAccessories.Caption := pupmeex;
       subDictionaryAccessories.OnClick := @MenuClick9;



   mnActivities := TMenuItem.Create (mur);
   mnActivities.Caption := pupmhe;

       subEvents := TMenuItem.Create (mur);
       subEvents.Caption := pupmsi;
       subEvents.OnClick := @MenuClick10;

       subDictionaryDash4:= TMenuItem.Create (mur);
       subDictionaryDash4.Caption := '-';
       subDictionaryDash4.Enabled:= False;

       subDonations := TMenuItem.Create (mur);
       subDonations.Caption := pupmab;
       subDonations.OnClick := @MenuClick11;

 mnFilereport := TMenuItem.Create (mur);
 mnFilereport.Caption := pupmreport;

         subFilereport:= TMenuItem.Create (mur);
         subFilereport.Caption := pupmreportnew;
         subFilereport.OnClick := @clicknew;

         subDictionaryDash5:= TMenuItem.Create (mur);
         subDictionaryDash5.Caption := '-';

 mnfiLangi := TMenuItem.Create (mur);
 mnfiLangi.Caption := pupmlang;

   // выводим выподающее меню
   rta:=TMainMenu.Create(mur);
   rta.Items.Add(mnFile);
       mnFile.Add(subFileNextUser);
       mnFile.Add(subFileClose);

   rta.Items.Add(mnDictionary);
        mnDictionary.Add(subDictionaryPriceList);
        mnDictionary.Add(subDictionaryDash1);
        mnDictionary.Add(subDictionaryStatusEquipment);
        mnDictionary.Add(subDictionaryDash2);
        mnDictionary.Add(subDictionaryCompany);
        mnDictionary.Add(subDictionaryEquipment);
        mnDictionary.Add(subDictionaryBrand);
        mnDictionary.Add(subDictionaryDash3);
        mnDictionary.Add(subDictionaryAccessories);
 // выводим в выподающем меню список файлов мультиязычности
 rta.Items.Add(mnfiLangi);
  try
 fiLang := TStringList.Create;
 fiLang.Text := GetFilesList('languages','*.ini',False);
 s := fiLang.Count-1;
for i:=0  to s  do
 begin
  subfiLangi:= TMenuItem.Create (mur);
  subfiLangi.Caption := ExtractFileName(fiLang[i]);
  Delete(subfiLangi.Caption, Length(subfiLangi.Caption) -3 , 4);
  subfiLangi.Hint := (fiLang[i]);
  mnfiLangi.Add(subfiLangi);
  subfiLangi.OnClick := @clicklang;
  end;
finally
fiLang.free  ;

end;
 // выводим в выподющем меню список фалов отчетов
rta.Items.Add(mnFilereport);
   mnFilereport.Add(subFilereport);
   mnFilereport.Add(subDictionaryDash5);
reporfile := TStringList.Create;
    reporfile.Text := GetFilesList( 'Report\','*.fr3',True); //ExtractFilePath(Application.ExeName) +

     t := reporfile.Count-1;
     for i:=0  to t  do
     begin
         subfiLangirepor:= TMenuItem.Create (mur);
         subfiLangirepor.Caption := ExtractFileName(reporfile[i]);
         subfiLangirepor.Hint := (reporfile[i]);
         mnFilereport.Add(subfiLangirepor);

         Delete(subfiLangirepor.Caption, Length(subfiLangirepor.Caption) -3 , 4);

         subfiLangiEdit := TMenuItem.Create(mur);
         subfiLangiEdit.Caption := pupmreportedit;
         subfiLangiEdit.Hint := (reporfile[i]);
         subfiLangiDel := TMenuItem.Create(mur);
         subfiLangiDel.Caption := pupmreportdel;
         subfiLangiDel.Hint := (reporfile[i]);
         subfiLangipdf := TMenuItem.Create(mur);
         subfiLangipdf.Caption := 'PDF';
         //subfiLangipdf.Hint := (fiLang[i]);
         subfiLangiPrint := TMenuItem.Create(mur);
         subfiLangiPrint.Caption := pupmreportprint;
         subfiLangiPrint.Hint := (reporfile[i]);

         subfiLangiEdit.OnClick := @clickEdit;
         subfiLangiDel.OnClick := @clickDel;
         subfiLangiPrint.OnClick := @clickPrint;
         subfiLangipdf.OnClick := @clickpdf;
    
         subfiLangirepor.Add(subfiLangiEdit);
         subfiLangirepor.Add(subfiLangiDel);
         subfiLangirepor.Add(subfiLangipdf);
         subfiLangirepor.Add(subfiLangiPrint);
     end;

   rta.Items.Add(mnActivities);
        mnActivities.Add(subEvents);
        mnActivities.Add(subDictionaryDash4);
        mnActivities.Add(subDonations);


end;

проблема в том, что вот эта часть

c := frmLogin.TMainMenu.Items.Count-1;
   for i := c downto 0 do
       if frmLogin.TMainMenu.Items[i].Visible then frmLogin.TMainMenu.Items[i].Free;

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

1,367

(2 replies, posted in Russian)

procedure frmComDoc_Button1_OnClick (Sender: TObject; var Cancel: boolean);
 var
 Printer:TPrinter;
 Canvas:TCanvas;
 Image:TImage;
begin
  Printer:=TPrinter.Create;
  Canvas:=TCanvas.Create;
  Image:=TImage.Create(frmComDoc);
  Image.Picture.LoadFromFile(frmComDoc.dbImage.dbFileName);
  Printer.BeginDoc;
    with Printer do
      begin
        Printer.Canvas.StretchDraw(0,0,PageHeight,PageWidth,Image.Picture.Graphic);
      end;
  Printer.EndDoc;
end;

у меня изображения (отсканированные A4) будут на A4 печататься PageHeight,PageWidth какой размер нужно установить или их можно не трогать (сам по исходному размеру печатает)?

1,368

(29 replies, posted in Russian)

zc13569 wrote:

Всем спасибо.
А можно ли поместить результат вычислений на форму в Label или Еdit?

form1.label1.Caption:=
form1.edit1.text:=

mikhail_a wrote:

Я же написал, что файл script.dcu есть, но я его удалил ради эксперимента.
И программа работает без него.
Скрипты в программе есть - больше 6000 строк.
Версия MVD 5.1
Может разработчик что-то поменял?

специально проверил на одном из проектов, все  работает..

1,370

(2 replies, posted in Russian)

vovka3003 wrote:

Через TPrinter. В гугле есть множество примеров на delphi.

На сколько я понял из моножества примеров гугл

procedure frmComDoc_Button1_OnClick (Sender: TObject; var Cancel: boolean);
 var
 Printer:TPrinter;
 Canvas:TCanvas;
 Image:TImage;
 Rect: string;
begin
  Printer:=TPrinter.Create;
  Canvas:=TCanvas.Create;
  Image:=TImage.Create(frmComDoc);
  Image.Picture.LoadFromFile(SQLExecute('SELECT scanDoc FROM comDoc WHERE id='+frmComDoc.tgResultSearch.sqlValue ));
  Printer.BeginDoc;
  with Printer do
  Printer.Canvas.StretchDraw(Rect(0,0,PageHeight,PageWidth),Image.Picture.Bitmap);
  Printer.EndDoc;
end;

 
но вот тут мне сообщает, что слишком много парраметров

Rect(0,0,PageHeight,PageWidth)

 
если, что-то убираешь, то тогда тут  не достаточно парраметров

.StretchDraw(Rect(0,0,PageHeight,PageWidth),Image.Picture.Bitmap)

1,371

(2 replies, posted in Russian)

Возможно-ли отправить на печать изображение из базы данных минуя отчет?

1,372

(4 replies, posted in Russian)

DriveSoft wrote:

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

TurboSmsUa.SendSMS и  ClickatellCom.SendSMS возвращает нам (готовый) ответ.
в какой-то теме я уже писал, что в конце возвращаемого ответа пользователю есть лишние знаки (пробел) и (переход на новую строку)
в частноти при ответе пользователю от turbosms ("Не достаточно параметров для выполнения функции") есть два лишних символа
другие ответы не проверял.
вот я и подумал... что тем кто собирается не просто выводить пользователю ответы но и стрить на них логику
проще сделать TurboSmsUa.CodeSendSMS (тоже самое, что TurboSmsUa.SendSMS) только в ответе не текст а 1,2,3,4,5,6,7 где:
   ПРИМЕР:
    1- Неправильный логин и/или пароль
    2- Неправильный формат XML
    3- Недостаточно кредитов на аккаунте пользователя
    4- Нет верных номеров получателей
    5- Неверный текст
    6- Ошибка в имени отправителя
    7- Сообщение принято!

mikhail_a wrote:

В TableGrid есть свойство goRowMoving, позволяющее разрешить изменение порядка строк перетаскиванием.
Однако, измененный порядок строк после закрытия формы не сохраняется.
Можно ли как-то сохранять измененный порядок строк?

TableGrid  выводит записи по порядку их id..

1,374

(2 replies, posted in Russian)

vovka3003 wrote:

Как вариант - можно попробовать ReplaceStr:

https://i.imgur.com/Ka9Bb2g.png

http://www.gifki.org/data/media/2113/3d-smayl-animatsionnaya-kartinka-0022.gif

1,375

(29 replies, posted in Russian)

zc13569 wrote:

подскажите на примере теста на iq:
Считаю сумму правильных ответов в вычисляемом поле1 и вывожу в tablegrid.
Хочу в соседнем столбце в поле2 записывать "диагноз" который зависит от вычисляемого поля1, то есть, например, если вычисляемое поле1 > 80 < 89 записать в поле 2 - "Интеллект ниже среднего" и т.п.
Как это правильно сделать?

примерно так

if (s>80) AND (s<89) then form1.edit1.text:='Интеллект ниже среднего';

где s переменная содержащая число..