2 2019-12-10 13:38:41
Re: Функции Min и Max (2 replies, posted in Russian)
Спасибо за пример.
Я почти так и сделал.
function Max(const A, B: Integer): Integer;
begin
case A > B of
true: Result := A;
false: Result := B;
end;
end;
function Min(const A, B: Integer): Integer;
begin
case A < B of
true: Result := A;
false: Result := B;
end;
end;
3 2019-12-06 14:17:33
Re: WebBrowser (29 replies, posted in Russian)
А какие еще браузеры поддерживает?
Любые. Надо только в коде указать что запускать и что искать.
Например, для Firefox в скрипте надо изменить три строчки:
...
Openfile('ya.ru', 'firefox');
...
h := FindWindow('MozillaWindowClass', '');
...
SetParent( FindWindow('MozillaWindowClass', ''), Form1.Panel1.Handle);
4 2019-12-05 20:06:25
Re: WebBrowser (29 replies, posted in Russian)
Скрипт иногда срабатывает частично. То есть может открыть браузер с адрессом как обычную программу, и только на 3 или 4 раз заключить его в форму. Редко бывало что-бы срабатывал с первого раза. Но такое было. Как то это можно подправить?
Причина в том, что скрипт успевает отработать поиск окна браузера до его загрузки.
Чтобы найти оптимальное время поиска можно поэкпериментировать со значением переменной Max.
5 2019-12-03 21:15:29
Topic: Функции Min и Max (2 replies, posted in Russian)
Наткнулся на эти функции при переделке делфи-кода. Компилятор их проглатывает и не возмущается.
ShowMessage(Max(1,2));
ShowMessage(Min(1,2));
Но они не работают и всегда возвращают 0.
6 2019-11-25 08:37:28
Re: Помогите со свертыванием окон... (11 replies, posted in Russian)
... Как, я понял, отцентровать содержимое формы сложно, ...
Если требуется отцентрировать форму, которая запихивается в форму, то можно так:
procedure Form1_OnResize (Sender: TObject);
begin
if Form2 <> nil then
begin
Form2.Left:= Form1.ClientWidth div 2 - Form2.Width div 2;
Form2.Top:= Form1.ClientHeight div 2 - Form2.Height div 2;
end;
end;
procedure Form1_OnShow (Sender: TObject; Action: string);
begin
Form2.Show;
Form2.Parent:= Form1;
Form2.Align:= alCustom;
end;
procedure Form2_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
Form1.WindowState := wsMinimized;
end;
procedure Form1_OnClose (Sender: TObject; Action: string);
begin
Form2:= nil;
end;
procedure Form2_OnClose (Sender: TObject; Action: string);
begin
Form1.Close;
end;
begin
end.
7 2019-11-24 17:01:21
Re: Помогите со свертыванием окон... (11 replies, posted in Russian)
... Как, я понял, отцентровать содержимое формы сложно, ...
Первой форме цепляем на событие OnResize код:
procedure Form1_OnResize (Sender: TObject);
begin
Form2.Position:= poMainFormCenter;
end;
Вуаля! Вторая форма центрируется по первой .
8 2019-11-08 00:34:52
Re: Users and Roles (Version 6 Beta) (3 replies, posted in General)
Hello.
Please download latest beta version again
...
Что-то с этой сборкой (07.11.19) не так.
На форме с компонентами RichEdit и Button не срабатывает код:
procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var
i: integer;
begin
for i := 0 to Form1.ComponentCount - 1 do
begin
if (Form1.Components[i] is TdbRichEdit) then
begin
ShowMessage(Form1.Components[i].Name);
end;
end;
end;
В предыдушей сборке (06.11.19) всё работало.
9 2019-03-04 12:30:54
Re: Крестик (7 replies, posted in Russian)
Если нельзя, но очень хочется - значит можно.
procedure Form1_OnCloseQuery (Sender: TObject; Action: string);
begin
if Action = 'true' then Action:= 'false';
end;
begin
Form1.BorderIcons:= Form1.BorderIcons - biSystemMenu;
Form1.Caption:= 'Форму можно закрыть в Диспетчере задач';
Form1.OnCloseQuery:= @Form1_OnCloseQuery;
end.
ПРЕДУПРЕЖДЕНИЕ! Не запускайте скрипт, если не знакомы с "Диспетчером задач"!
10 2019-03-01 09:53:08
Re: скрипт переноса содержимого. (11 replies, posted in Russian)
procedure Form1_TableGrid1_OnCellDoubleClick (Sender: TObject; ACol, ARow: Integer);
begin
if Form1.Edit1.Text <> '' then Form1.Edit1.Text := Form1.Edit1.Text + ', ';
Form1.Edit1.Text := Form1.Edit1.Text + Form1.TableGrid1.Cells[ACol,ARow];
end;
Google Переводчик
Процедура срабатывает при двойном клике по ячейке таблицы.
Начало
Если текстовое поле не пустое, то в него добавляется запятая.
В текстовое поле добавляется содержимое ячейки по которой кликнули.
Завершение
11 2019-02-18 02:10:36
Re: Курсы обучения и статьи о разработке приложений (241 replies, posted in Russian)
Панель инструментов
Читать статью полностью: https://vk.com/@createmyvisualdatabasea … strumentov
// загрузка картинок в TImageList
procedure LoadImages( AImageList:TImageList; AImageNames: TStringList; ASize:integer; AImageDir:string );
// загрузка картинок сделана процедурой с параметрами, так как в приложении может быть несколько размеров изображений
// которые должны храниться в разных списках; картинки в формате png
Если предусматривается наличие нескольких разных списоков с картинками, то
для универсальности не мешало бы передавать списки как параметры и для другой процедуры
// назначить индекс изображения по названию файла
procedure SetImage( AImageList:TImageList; AImageNames: TStringList; AButton:TdbButton; AImageName:string );
12 2019-02-17 22:35:25
Re: WebBrowser (29 replies, posted in Russian)
А как то можно прописать логин и пароль для каждого конкретного веба? допустим их на форме сразу 2. Panel1 и Panel2. Они настроены оба уже на нужный сайт, но 1 логинется в свой аккаунт, а второй в свой.
3. Добавил методы, которые позволяют заполнять элементы на форме, находя их по id или name, примеры
Web.FillElementByName('fd1', 'test'); // заполнение текстового поля Web.FillElementByID('qjump-select', '4'); // выбираем 4 элемент из списка Web.FillElementByID('fld3', '1'); // установка галочки в CheckBox Web.FillElementByName('req_username', 'test'); Web.FillElementByName('qjump-select', '4'); Web.FillElementByName('checkboxname', '1');
13 2019-02-06 16:45:18
Re: [РЕШЕНО] Обрамление надписи (Label) (19 replies, posted in Russian)
Волшебное заклинание подействовало!
Волшебство пропадёт, если форму минимизировать и развернуть.
Можно вынести код в отдельную процедуру и вызывать её в GLForm_OnShow и GLForm_OnResize.
procedure CanvasShow ();
var
Canvas:TCanvas;
ww, hh: Integer;
begin
GLForm.Canvas.Font.Size:=18;
GLForm.Canvas.Font.Color:=clRed;
GLForm.Canvas.Brush.Style:=bsClear;
ww:=GLForm.Canvas.TextWidth('Hello World');
hh:=GLForm.Canvas.TextHeight('Hello World');
GLForm.Canvas.Rectangle(80, 60, 80+ww, 60+hh);
GLForm.Canvas.TextOut(80,60,'Hello World');
end;
procedure GLForm_OnResize (Sender: TObject);
begin
Application.ProcessMessages;
CanvasShow;
end;
procedure GLForm_OnShow (Sender: TObject; Action: string);
begin
SendMessage(GLForm.Handle,274,61728,0);
GLForm_OnResize(GLForm);
end;
Но если перетащить форму за пределы экрана, волшебство опять исчезнет.
А совет от админа быстрее и красивше.
Я только показал, что при использовании Canvas надо перерисовывать форму.
14 2019-02-06 06:03:36
Re: [РЕШЕНО] Обрамление надписи (Label) (19 replies, posted in Russian)
Исправила ошибки синтаксиса
procedure GLForm_OnShow (Sender: TObject; Action: string); var Canvas:TCanvas; ww, hh: Integer; begin GLForm.Canvas.Font.Size:=18; GLForm.Canvas.Font.Color:=clRed; GLForm.Canvas.Brush.Style:=bsClear; ww:=GLForm.Canvas.TextWidth('Hello World'); hh:=GLForm.Canvas.TextHeight('Hello World'); GLForm.Canvas.Rectangle(80, 60, 80+ww, 60+hh); GLForm.Canvas.TextOut(80,60,'Hello World'); end;
но ничего на прорисовалось
Если мне память не изменяет, вот так должно прорисоваться:
procedure GLForm_OnShow (Sender: TObject; Action: string);
var
Canvas:TCanvas;
ww, hh: Integer;
begin
SendMessage(GLForm.Handle,274,61728,0);
Application.ProcessMessages;
GLForm.Canvas.Font.Size:=18;
GLForm.Canvas.Font.Color:=clRed;
GLForm.Canvas.Brush.Style:=bsClear;
ww:=GLForm.Canvas.TextWidth('Hello World');
hh:=GLForm.Canvas.TextHeight('Hello World');
GLForm.Canvas.Rectangle(80, 60, 80+ww, 60+hh);
GLForm.Canvas.TextOut(80,60,'Hello World');
end;
15 2019-01-23 15:00:11
Re: Утопленная кнопка (5 replies, posted in Russian)
Не надо изобретать велосипеды. Пользуйтесь общественным транспортом.
MVDB поддерживает класс TSpeedButton.
Кнопки SpeedButton имеют возможность быть зафиксированными в утопленном состоянии.
16 2019-01-23 12:25:19
Re: Публикация и работа программы в сетевом режиме (11 replies, posted in Russian)
Может разработчик что-то поменял?
Ничего разработчик не менял. Всё как было, так и есть. И мистики тут нет.
Чтобы разобраться в тонкостях работы программ на высоком и низком уровнях, достаточно почитать про интерпретацию, компиляцию, машинный и байт-код.
А в случае, когда программа отказывается работать с файлом script.dcu, может помочь повторная компиляция. Возможно файл повреждён.
Не знаю как сейчас, но в более ранних версиях MVDB бывали ситуации, когда при запуске проекта программа закрывалась с ошибкой, но продолжала висеть в исполняемых процессах.
Приходилось убивать этот процесс вручную, иначе при повторном запуске проекта начинали появляться ошибки чтения и записи.
17 2019-01-22 13:03:22
Re: Публикация и работа программы в сетевом режиме (11 replies, posted in Russian)
Вот и получается, что результат моего эксперимента противоречит информации на форуме....
Результат эксперимента противоречит логике работы MVDB.
Файл script.pas нужен MVDB для компиляции всех скриптов в один файл script.dcu, который использует в своей работе созданная программа.
Если в папке Script после запуска проекта в MVDB не появляется файл script.dcu, можно сделать вывод, что в созданной программе не используются скрипты.
18 2018-05-22 14:52:50
Re: Обнаружил баг. (4 replies, posted in Russian)
Присутствует проблема с буквой "я" в редакторе скриптов программы.
Если в строковом выражении последняя буква 'я', то ломается дальнейшая подсветка синтаксиса.
Чтобы не портилась подсветка можно после буквы поставить пробел 'я ' или использовать костыль
ShowMessage('Информаци'#1103);
Не фонтан, но действует.
19 2018-05-06 11:43:27
Re: How To Show Original Content ? (4 replies, posted in Script)
script.pas
var
RichEdit: TRichEdit;
procedure Form1_TableGrid1_OnCellClick (Sender: TObject; ACol, ARow: Integer);
var
td: Tdataset;
begin
SQLQuery('select * from help_topic where id = ' + Form1.TableGrid1.Cells[0,Form1.TableGrid1.SelectedRow],td);
Form1.Memo1.Clear;
Form1.Memo1.Lines.Add(td.Fields[3].AsString); //By column number
RichEdit.Lines.Clear;
RichEdit.Lines.Add(td.Fields[3].AsString);
end;
procedure Init ();
begin
RichEdit:= TRichEdit.Create(Form1);
RichEdit.Parent:= Form1;
RichEdit.Top:= 281;
RichEdit.Left:= 608;
RichEdit.Width:= 489;
RichEdit.Height:= 272;
RichEdit.Color:= clYellow;
RichEdit.Font.Name:= 'Courier New';
RichEdit.Font.Size:= 8;
RichEdit.ScrollBars:= ssBoth;
end;
begin
Init;
end.
20 2018-05-04 10:05:52
Re: From a running program pass variables to another running program (5 replies, posted in Script)
You can pass parameters through the system registry.
Class TRegistry.
21 2018-03-21 06:40:03
Re: Финальная версия 4.3 (25 replies, posted in Russian)
А где финал 4,3?
Версия 4.3
качать: http://myvisualdatabase.com/download/myvisualdb.exe
22 2018-03-21 05:49:23
Re: Финальная версия 4.3 (25 replies, posted in Russian)
Подскажите, пожалуйста, можно ли скрыть в компоненте TreeView строчки слева?
Свойства компонента
Options
goIndicator = False
23 2018-01-09 16:22:25
Re: Как получить точное время из внешнего источника? (7 replies, posted in Russian)
Можно разместить на форме TWebBrowser.
Загрузить в него страничку с часами и парсить.
24 2017-12-27 03:40:31
Re: Ошибка в новой версии программы. (34 replies, posted in Russian)
Подправил код
procedure Form2_bt1_OnClick (Sender: string; Action: string);
begin
if CurrentCtrl is TdbEdit then
TdbEdit(CurrentCtrl).Text := TdbEdit(CurrentCtrl).Text + TdbButton(Form2.FindComponent(Sender)).Caption;
if CurrentCtrl is TdbMemo then
TdbMemo(CurrentCtrl).Text := TdbMemo(CurrentCtrl).Text + TdbButton(Form2.FindComponent(Sender)).Caption;
end;
на
procedure Form2_bt1_OnClick (Sender: string; Action: string);
begin
if CurrentCtrl is TdbEdit then
TdbEdit(CurrentCtrl).Text := TdbEdit(CurrentCtrl).Text + TdbButton(Sender).Caption;
if CurrentCtrl is TdbMemo then
TdbMemo(CurrentCtrl).Text := TdbMemo(CurrentCtrl).Text + TdbButton(Sender).Caption;
end;
Не знаю правильно это или нет, но работает.
---
Ещё случайно наткнулся на баг при работе в редакторе скриптов.
Если в строковом выражении последняя буква 'я', то ломается дальнейшая подсветка синтаксиса.
Чтобы не портилась подсветка можно после буквы поставить пробел 'я ' или использовать костыль
ShowMessage('Информаци'#1103);
Не фонтан, но действует.
25 2017-12-27 00:45:58
Re: Ошибка в новой версии программы. (34 replies, posted in Russian)
Обнаружилась ошибка в работе скрипта VK_fixed2.zip после компиляции в версии программы 4.XX
(в версии 2.8 компилируется и работает нормально).
Скрипт был взят из темы: My Visual Database → Russian → Виртуальная клавиатура
При нажатии на цифровую кнопку на форме появляется ошибка