4,126

(32 replies, posted in Russian)

sidhillsaid wrote:

И ещё два вопроса, касаемых TWebBrowser
1) Как растянуть компонент на всю форму, при разворачивании окна?
2) Вы встроите весь вышеописаный функционал в версию 2.х - ведь TWebBrowser компонент этой версии.
Просто необходимо сдавать проект, а он в триал версии 3 создан, вскоре покупку попросит, или скажите, когда можно будет купить стабильную 3 версию?)

1. В другой вашей теме я сделал для вас пример.


2. Вы можете приобрести новую лицензию со скидкой 40% ($30), если необходимо, я могу вам на e-mail отправить ссылку для приобретения.

4,127

(2 replies, posted in Russian)

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


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


команду VACUUM можно выполнить так для конкретной таблицы

SQLExecute('VACUUM tablename');

либо так для всех таблиц

SQLExecute('VACUUM');

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


скрипт:

procedure Form1_edGroupSearch_OnChange (Sender: string);
begin
    Form1.cbGroups.dbFilter := 'groupname LIKE "%'+ Form1.edGroupSearch.Text +'%"';
    UpdateDatabase('groups');

    if Form1.cbGroups.Items.Count = 2 then
    begin
        Form1.cbGroups.DroppedDown:=False;
        Form1.cbGroups.ItemIndex := 1;
    end else Form1.cbGroups.DroppedDown:=True;

    if Form1.cbGroups.Items.Count = 1 then
    begin
        if (LowerCase(Form1.edGroupSearch.Text) = 'дом') or
           (LowerCase(Form1.edGroupSearch.Text) = 'хата') then
        begin
            Form1.cbGroups.dbFilter := '';
            UpdateDatabase('groups');
            Form1.cbGroups.DroppedDown:=False;
            Form1.cbGroups.dbItemID := 1;
        end;

        if (LowerCase(Form1.edGroupSearch.Text) = 'работа') then
        begin
            Form1.cbGroups.dbFilter := '';
            UpdateDatabase('groups');
            Form1.cbGroups.DroppedDown:=False;
            Form1.cbGroups.dbItemID := 2;
        end;


        if (LowerCase(Form1.edGroupSearch.Text) = 'друг') or
           (LowerCase(Form1.edGroupSearch.Text) = 'кореш') or
           (LowerCase(Form1.edGroupSearch.Text) = 'друган') then
        begin
            Form1.cbGroups.dbFilter := '';
            UpdateDatabase('groups');
            Form1.cbGroups.DroppedDown:=False;
            Form1.cbGroups.dbItemID := 3;
        end;


    end;

end;



Проект:

Скачайте снова бета версию.


Проект:

4,130

(5 replies, posted in Script)

clyde wrote:

Hello.
I've searched the forum but have been unable to find how to open a form to a specific record using a script. I have the id, I just want to do something like FormName.Show(id of the record I want to see on screen). Any help appreciated. Thanks.

Hello.


Please download latest beta version
http://myvisualdatabase.com/forum/viewtopic.php?id=2888


I have added method for form

Form2.ShowRecord('tablename', 1);

and


ShowRecord(Form2, 'tablename', 1); 

4,131

(32 replies, posted in Russian)

sidhillsaid wrote:

Разместил кнопку с данным кодом,
ругается на слово Stop

Я упомянул что сделаю метод Stop в следующей версии. Скачайте версию 3.05b

Скачайте версию 3.05b, пришлось добавить функцию ShowRecord
http://myvisualdatabase.com/forum/viewtopic.php?id=2887


Только после редактирования грид автоматически не будет обновляться.

4,133

(46 replies, posted in Russian)

Игоревич wrote:

Продлю обязательно чуть позже. Срок продления какой

Ключ высылается как правило в течении 2-3 часов. Все минорные обновления бесплатны, т.е. v3.0 - 3.99


Версия 4 предположительно будет в ноябре 2017

4,134

(46 replies, posted in Russian)

Игоревич wrote:

Вы добавили в версию setup 3.02a функцию GetComputerName которая мне необходима. но при этом там появились какие-то ошибки которых в версии 2,8 версии не было. Вопрос о продлении лицензии стоит.

Продление лиценции будет стоить $30, если желаете продлить, могу отправить на ваш e-mail ссылку для приобретения обновления.

4,135

(32 replies, posted in Russian)

sidhillsaid wrote:

Отправил проект на почту, с описанием

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

procedure frmAvito_Button3_OnClick (Sender: string; var Cancel: boolean);
begin
    Web.Stop;
end;

после нажатию на эту кнопку форму можно будет закрыть.



Также при создании объекта web, добавьте эту строку

Web.Silent := 1;

тогда сообщения об ошибках на странице мешать не будут.

4,136

(46 replies, posted in Russian)

Игоревич wrote:

Вообще не понял. Вы поправили но у меня получается незарегестрироованная версия. И что мне делать. Версии 2,9  не было. Вы исправили ошибки и что дальше. Мой проект который я делал в чопе. Круто. А делал его не один месяц.

Скачайте версию 2.8, там этой ошибки нет.

4,137

(32 replies, posted in Russian)

sidhillsaid wrote:

Почему-то окно форма с tWebBrowser закрывается (как крестиком, так и по баттону закрытия формы) через раз. Иногда вообще не закрывается, с чем может быть связано?
И ещё, не понимаю значения строчки
while Web.ReadyState <> 4 do Application.ProcessMessages;
что она означает?

Приложите проект, с описанием, что необходимо сделать чтобы воспроизвести данное поведение.


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

Приведите пожалуйста ваш код, который осуществляет поиск в ComboBox

4,139

(8 replies, posted in General)

Hello.


procedure Form1_tgSearchExpenses_OnChange (Sender: string);
begin
    Form1.edMnetTotal.Value := Form1.tgSearchExpenses.Columns[5].Footer.FormulaValue;
    Form1.edMtaxTotal.Value := Form1.tgSearchExpenses.Columns[6].Footer.FormulaValue;
end;

4,140

(2 replies, posted in General)

v_pozidis wrote:

I like to stop the work of  a button when I press it and I use  Form1.Button1.Cancel:=False;  but it doesn't work.
In some cases I llike to work the button and in some cases not. Behind the button is a script
how is it possible ?

Please show me how exactly you use it.


Form1.Button1.Cancel it's not to stop something.

Determines whether the button's OnClick event handler executes when the Escape key is pressed.

If Cancel is true, the button's OnClick event handler executes when the user presses Esc.

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


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

4,142

(32 replies, posted in Russian)

RZ-007
после того как кликнули, поставьте паузу таким образом

Web.ClickElement('a', 'FORUM')

Sleep(1000);
Application.ProcessMessages;

4,143

(7 replies, posted in General)

Please open file tables.ini in any text editor.
Find and remove line

_ =TEXT

in [Rooms] section

4,144

(46 replies, posted in Russian)

Игоревич
Проверьте внесен ли в вашем проекте компонент DateTimePicker2 в настройках кнопки Поиск.


Ошибку поправил, скачайте пожалуйста снова бета версию
http://myvisualdatabase.com/forum/viewtopic.php?id=2887

4,145

(7 replies, posted in General)

stelios91 wrote:

https://postimg.org/image/mvjsj11x7/

this is a link to the img

https://postimg.org/image/mvjsj11x7/

Please attach your project (zip file without exe and dlls)

4,146

(3 replies, posted in Russian)

Kirs wrote:

Извиняюсь Дмитрий а с первым вопросом можете помочь? Попробую более конкретнее описать. Можно както искать одним комбобоксом связи из разных полей?

Для этого вам придеться реализовать поиск с помощью SQL запроса (кнопка с действием "SQL запрос")


пример запроса:

SELECT
person.firstname,
person.lastname,
groups.groupname,
groups1.groupname,
person.id

FROM person
  
LEFT OUTER JOIN groups ON groups.id=person.id_groups
LEFT OUTER JOIN groups groups1 ON groups1.id=person.id_groups1

WHERE
(CASE WHEN {cbGroup}=-1 THEN 1=1 ELSE person.id_groups={cbGroup} END) OR
(CASE WHEN {cbGroup}=-1 THEN 1=1 ELSE person.id_groups1={cbGroup} END)

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

4,147

(2 replies, posted in Russian)

Скорей всего в настройках вашего MySQL сервера установлен короткий таймаут.


Выполните данный SQL запрос, который установит таймаут на значение, которое обычно присутствует по умолчанию
SET @@GLOBAL.interactive_timeout=28800


выполнить данный sql запрос можно например с помощью кнопки с действием "SQL запрос"

4,148

(46 replies, posted in Russian)

дополнил

procedure Form1_bLineUpdate_OnClick (Sender: string; var Cancel: boolean);
var
    Results: TDataSet;
    DateValue: Double;
    QtyValue: string;

    sSQL, s: string;
    sCountry, sRegion, sCity, sDateFrom, sDateTo: string;
begin
    ChartBar.Series[0].Clear;

    sCountry := IntToStr(Form1.cbCountry.dbItemID);
    sRegion := IntToStr(Form1.cbRegion.dbItemID);
    sCity := IntToStr(Form1.cbCity.dbItemID);
    sDateFrom := Form1.DateTimePicker1.sqlDate;
    sDateTo   := Form1.DateTimePicker2.sqlDate;

    sSQL :=
    'SELECT '+
    '    Country.country, '+
    '    COUNT(Country.id) as qty'+

    '    FROM MyFavoriteCities '+

    '    LEFT OUTER JOIN City ON City.id=MyFavoriteCities.id_City '+
    '    LEFT OUTER JOIN Region ON Region.id=City.id_Region '+
    '    LEFT OUTER JOIN Country ON Country.id=Region.id_Country '+

    'WHERE '+
    '(CASE WHEN '+sCountry+'=-1 THEN 1=1 ELSE Country.id='+sCountry+' END) AND '+
    '(CASE WHEN '+sRegion+'=-1 THEN 1=1 ELSE Region.id='+sRegion+' END) AND '+
    '(CASE WHEN '+sCity+'=-1 THEN 1=1 ELSE City.id='+sCity+' END) AND' +
    '(CASE WHEN '+sDateFrom+' IS NULL THEN 1=1 ELSE MyFavoriteCities."Date">=date('+sDateFrom+') END) AND' +
    '(CASE WHEN '+sDateTo+' IS NULL THEN 1=1 ELSE MyFavoriteCities."Date"<=date('+sDateTo+') END) ' +
    'GROUP BY Country.id ';

    SQLQuery(sSQL, Results);

    while not Results.Eof do
    begin
        s :=  Results.FieldByName('country').asString ;
        QtyValue := Results.FieldByName('qty').asString;

        if ValidInt(QtyValue) then ChartBar.Series[0].AddY(StrToInt(QtyValue), s );
        Results.Next;
    end;


end;

в примере выше код всегда получается с текущей страницы

sHTML := Web.GetHTMLBody; // получем html код страницы
sidhillsaid wrote:

Большое спасибо, вечером опробую!
И, пока не опробывал, но посмотрел код, возможно будет проблема с конечной позицией, так как конечная позиция - это тег </div> которым заканчивается каждый блок в исходном коде, скрипт поймет какой именно <div> нужен?

Поймет, данная строка ищет закрывающий div начиная с начальной позиции, где div открывается

iEnd := PosEx('</div>', sHTML, iStart); 

в параметре iStart указывается начало поиска.