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


Пожалуйста создайте отдельную тему для данного вопроса.


Попробуйте также уточнить вопрос, т.к. он сформулирован немного размыто, и приложите ваш проект (zip файл без exe и dll)

3,927

(23 replies, posted in General)

Example for save dialog

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
    SaveDialog: TSaveDialog;
begin
    SaveDialog := TSaveDialog.Create(Form1);

    if SaveDialog.Execute then
    begin
        ShowMessage( SaveDialog.FileName );
    end;

    SaveDialog.Free;
end;


for select folder:

procedure Form1_Button2_OnClick (Sender: string; var Cancel: boolean);
var
    s: string;
begin
    s := '';
    SelectDirectory('Caption', 'c:\', s); // default dialog
    SelectDirectory('Caption', 'c:\', s, True); // with button create a directory
    SelectDirectory('Caption', 'c:\', s, True, True); // with button create a directory and shows files
    if s<>'' then ShowMessage(s);
end;

В дизайнере отчета, у объекта Page1 есть свойство BackPicture, в котором вы можете выбрать необходимый рисунок.


Только его предварительно необходимо подготовить, создать рисунок с размером листа A4. Проще всего это сделать с помощью Photoshop, в котором можете создать рисунок, выбрав размер A4 при создании документа.

3,929

(10 replies, posted in Russian)

bemorhona-qt wrote:

Form1.Edit1.Text := DateToStr(now); выдает дату например - 07.01.2017, а надо чтобы было в секундах, как это реализовать?

Можно так

Form1.Edit1.Text := FloatToStr(now*24*60*60); 

Получите количество секунд прошедших с даты December 30, 1899

3,930

(4 replies, posted in Russian)

Грид будет обновляться автоматически, если он настроен (Settings), также в настройках должна стоять галочка на против пункта "Показать все записи из таблицы"


Если все равно не работает, приложите пожалуйста ваш проект.

3,931

(27 replies, posted in Russian)

Vlacery wrote:

А нельзя настроить софт так, что бы отправлять sms по Украине через этот сервис - https://www.epochta.com.ua/products/sms/ ? Просто тут цены на рассылку подешевле, чем в турбосмс

Можно.


Скачайте пожалуйста последнюю бета версию
https://www.dropbox.com/s/1y0jek64gzfdy … a.zip?dl=0



Я добавил в нее функцию HTTPPost


Данный сервис поддерживает отправку смс посредством POST запроса с передачей данных с помощью XML, подробней
https://www.epochta.com.ua/products/sms/v2.php


Также сделал тестовый проект для отправки смс, протестировал, работает.

3,932

(8 replies, posted in Talks about all)

Gilberto_Schiavinatto wrote:

Ok. Dmitry.


Thank you.

Did you get license code?

3,933

(2 replies, posted in General)

It's not problem if you put different scripts to one event

procedure Form1_OnShow (Sender: string; Action: string);
begin
   // script1
   // ...


   // script2
   // ...


   // script3
   // ...
end;


or you can use procedures for that:


procedure Form1_OnShow (Sender: string; Action: string);
begin
   OnShow1;
   OnShow2;
   OnShow3;
end;

procedure OnShow1;
begin
  // some script
end;

procedure OnShow2;
begin
  // some script
end;

procedure OnShow3;
begin
  // some script
end;

3,934

(8 replies, posted in Talks about all)

Gilberto_Schiavinatto wrote:

newsletter@schiavinatto.com

gilbertoschiavinatto@yahoo.com.br

I have sent you an email to gilbertoschiavinatto@yahoo.com.br


Please confirm that you have received this email.

3,935

(8 replies, posted in Talks about all)

Gilberto_Schiavinatto wrote:

No problem, Dmitry, I was on vacation, my email is gilberto@schiavinatto.com.

Please let me know another e-mail, I already sent on this e-mail your license key, but for some reason you have  not received my messages.

3,936

(8 replies, posted in General)

After for to do try to add

SaleTransHist.tgSaleInvTransHist.CalculateFooter;

3,937

(8 replies, posted in General)

Try to add 0 values for the cells, like this

SaleTransHist.tgSaleInvTransHist.Cells[12,i] := '0';

3,938

(5 replies, posted in General)

Work with USB devices and DLLs not planned yet.

3,939

(8 replies, posted in Talks about all)

Hello.


It seems that you can't get my e-mails.
I found your profile on facebook and sent your license code using fb message.


Also you can let me know another your e-mail.


Sorry for inconvenience.

3,940

(5 replies, posted in General)

What exactly method to connect via network you need, Socket?
https://en.wikipedia.org/wiki/Winsock


may be I can add it in the next version, I'll check it.

3,941

(5 replies, posted in General)

Hello.


My Visual Database can use COM port to work with external devices.


Also you can make HTTP request and get result of request.

HTTPGet(url: string): string

Or even download file from the web.

HTTPGetFile(url: string; SaveToFile: string): boolean


You can open any text files (like HTML or XML) and parse it using regular expression.

3,942

(31 replies, posted in General)

bulutsuzgece
Unfortunately I can't help you, because you use pirated version of software.

На вкладке "Таблицы базы данных" в самом верхнем левом углу есть кнопка, которая позволяет переключиться на другую СУБД.


Импорт и экспорт данных необходимо произвести самостоятельно, экспорт из SQLite можно сделать с помощью утилиты SQLite Studio, импорт в MySQL например программой MySQL Workbench, ее же можете использоваться для администрирования MySQL.

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

3,945

(8 replies, posted in General)

Please download latest beta version here:
https://www.dropbox.com/s/1y0jek64gzfdy … a.zip?dl=0


Then check it out:

procedure SaleTransHist_tgSaleInvTransHist_OnChange (Sender: string);
var
    i,c: integer;
    sPrevRow: string;
begin
    sPrevRow := '';
    c := SaleTransHist.tgSaleInvTransHist.RowCount-1;
    for i := 0 to c do
    begin
        if SaleTransHist.tgSaleInvTransHist.Cells[0,i] = sPrevRow then
        begin
            sPrevRow := SaleTransHist.tgSaleInvTransHist.Cells[0,i];
            SaleTransHist.tgSaleInvTransHist.Cell[0,i].Empty := true;
            SaleTransHist.tgSaleInvTransHist.Cell[1,i].Empty := true;

            SaleTransHist.tgSaleInvTransHist.Cell[3,i].Empty := true;
            SaleTransHist.tgSaleInvTransHist.Cell[4,i].Empty := true;

            SaleTransHist.tgSaleInvTransHist.Cell[12,i].Empty := true;

            SaleTransHist.tgSaleInvTransHist.Cell[13,i].Empty := true;
            SaleTransHist.tgSaleInvTransHist.Cell[14,i].Empty := true;
            SaleTransHist.tgSaleInvTransHist.Cell[15,i].Empty := true;
            SaleTransHist.tgSaleInvTransHist.Cell[16,i].Empty := true;
        end else sPrevRow := SaleTransHist.tgSaleInvTransHist.Cells[0,i];

    end;
end;

3,946

(14 replies, posted in FAQ)

попробуйте так

Email := '';
if RegExp.Exec then
  repeat
        // Матчи
        Form1.Memo2.Lines.Add( RegExp.Match[0] );

        // группы
        for i := 1 to RegExp.Match.Count-1 do
        begin    
            Email:= Email + 'Group'+IntToStr(i)+': '+RegExp.Match[i] + #10#13;           
            Form1.Memo3.Lines.Add('Group'+IntToStr(i)+': '+RegExp.Match[i]);
        end;            

  until not RegExp.ExecNext;
  SQLExecute ('INSERT INTO AAA (aaa) VALUES ("'+ Email +'");');
  Form1.TableGrid1.dbUpdate;

Igor.Stepanov
Заново переделывать не нужно, просто переключите проект на MySQL, и он будет работать. Также у вас должена быть установлена СУБД MySQL.


Возможно потребуется доработка SQL запросов, если вы их использовали в проекте.

Можете нажать Ctrl+C когда на экране сообщение с SQL запросом и оно скопируется в буфер обмена.


Либо выводите SQL запрос например в компонент Memo, и копируйте оттуда.

Form1.Memo1.Text := Form1.TableGrid1.dbGetSqlStatement;

3,949

(2 replies, posted in Script)

Hello.


The unit must have same structure, like script.pas
example:

function TreeFindItem(Sender: TTreeView;NodeItem: TTreeNode;Name: String):TTreeNode;
begin
  if(NodeItem=Nil) then NodeItem := Sender.Items.GetFirstNode
  else NodeItem := NodeItem.GetFirstChild;
  if(NodeItem<>Nil) and (NodeItem.Text <> Name) then
  repeat
    NodeItem := NodeItem.GetNextSibling;
  until (NodeItem=Nil) or (NodeItem.Text=Name);
  Result := NodeItem;
end;

function TreeAddItem(Sender: TTreeView;ItemList: TStrings;BookMark: TBookMark;Resort: Boolean):TTreeNode;
var
  ThisNode,Node: TTreeNode;
  i:    integer;
begin
  Node := Nil;
  for i := 0 to ItemList.Count-1 do
  begin
    ThisNode := TreeFindItem(Sender,Node,ItemList[i]);
    if(ThisNode<>Nil) then Node := ThisNode
    else begin
      if I<Itemlist.count-1
        then begin
          if I=0 then Node := Sender.items.Add(Node, Itemlist[i])
          else Node := Sender.items.AddChild(Node, Itemlist[i]);
        end
        else begin
          if I=0 then Node := Sender.items.AddObject(Node, Itemlist[i],Bookmark)
          else Node := Sender.items.AddChildObject(Node, Itemlist[i],Bookmark);
        end;
      Node.stateIndex := Node.level + 1;
      if Resort and (Node.parent <> nil) then Node.parent.alphasort;
    end;
  end;
  Result := Node;
end;

function TreeGetItem(Sender: TTreeView;ItemList: TStrings):TTreeNode;
begin
  Result := TreeAddItem(Sender, Itemlist, nil, false);
end;

procedure TreeDeleteItem(Sender: TTreeView;ItemList: TStrings;level: integer);
var
  Node, Parent: TTreeNode;
begin
  Node := TreeGetItem(Sender,ItemList);
  while Node.level>=Level do
    begin
      Parent := Node.parent;
      Node.delete;
      if (Parent=nil)or(Parent.hasChildren) then break;
      Node := Parent;
    end;
end;


begin

end.

but this unit for delphi, it will not work for MVD.

Игоревич
1. Довольно трудно сделать защиту базы данных при использовании SQLite, если необходима надежная защита, вам нужно использовать СУБД MySQL, т.о. базу данных можно расположить на сервере и создать необходимые настройки привелегий, чтобы исключить доступ к базе для посторонних лиц.


2. Вы первый кто просит об этом. Какую задачу это сможет решить?


3. Планируется возможность загрузки своих иконок.