Предлагаемые изменения в вашем проекте:
1,152 2019-10-30 15:46:20
Re: Сквозной поиск (28 replies, posted in Russian)
Попробуйте так:
Это для поиска по полям "Контакт", "email", "Городской", "Сотовый". Если нужно сюда же добавить поля из связанных таблиц, то придется учить SQL и добавить нужные поля через запрос SELECT
Я не собирался давать вам наставления или нравоучения, это привилегия для моих учеников. Вам - только советы:
1. Не используйте в названии полей кириллицу - это усложнит вам составление SQL-запросов.
2. Прочитайте книгу автора этой системы, там есть много из того, что вы ищите: http://myvisualdatabase.com/forum/viewtopic.php?id=2554
1,153 2019-10-30 14:45:09
Re: What to implement first? (187 replies, posted in General)
How about opening MyVisualDatabase to plugins developed by the community? With a very strong validation process to make sure that data and privacy cannot be compromised, I think that would bring some awesome features.
If initially the project architecture was not designed for plug-ins, it is unlikely to be easy to screw this feature into a mature project. Specify what kind of plug-ins you want to see in this project? Visual components? Components for working with data (other DBMS)?
Usually a plugin replaces some standard module and differs from the rest only in appearance. Or the plugin uses API to expand the functionality of the system.
If I'm not mistaken, in the current implementation of script support, to add each new class, you need to rewrite the core of the program. I don’t even have an idea yet how this could be implemented, but the last word is up to the developer of this system.
In the meantime, you can use the standard DLL mechanism to expand functionality.
1,154 2019-10-30 08:38:44
Re: Сквозной поиск (28 replies, posted in Russian)
Обожаю такие ответы, сразу чувствуется, что вы программист именно так на форумах по программированию и отвечают. Спасибо конечно, но я прошу помощи с данным проектом. Без танцев с бубном и изучения SQL. Тем более, что мне это нужно всего один раз. Я же не так много прошу.
Обожаю такие просьбы: сделайте за меня мою работу; я не хочу разбираться и вникать, а уж тем более чему-то учиться; просто дайте мне то, что мне сейчас нужно.
1,155 2019-10-30 07:59:02
Re: Сквозной поиск (28 replies, posted in Russian)
Если хотите иметь расширенный функционал, надо изучать SQL
Для решения вашей задачи вам понадобится вычисляемое поле, в котором будут присутствовать текстовые данные из всех полей, по которым вы хотите искать, например, такое:
( coalesce( name, '' ) || ' ' || coalesce( phone, '' ) || ' ' || coalesce( e_mail, '' ) )
функция coalesce() нужна для того, чтобы предотвратить превращение результата в null, если в записи отсутствует какое-то из значений в искомых полях. https://www.sqlite.org/lang_corefunc.html
Это поле вы можете использовать при настройке фильтра на форме, в свойстве Filter не забудьте прописать %s%, чтобы поиск был по вхождению.
1,156 2019-10-30 07:47:12
Re: К дате прибавить год (3 replies, posted in Russian)
Возможно, требуется обновление до последней версии:
1,157 2019-10-30 07:42:04
Re: графика (9 replies, posted in FAQ)
может я не правельно понимаю? но у меня TextHint отображает нормально (без PasswordChar).
Действительно, после обновления до последней версии 5.7 beta проблема решилась! Спасибо Дмитрию
1,158 2019-10-29 15:54:13
Re: К дате прибавить год (3 replies, posted in Russian)
Используйте функцию IncMonth() - она возвращает исходную дату, увеличенную на нужное количество месяцев.
1,159 2019-10-29 15:41:13
Re: графика (9 replies, posted in FAQ)
в этом архиве 18 примеров формы авторизации...
Хорошая работа! Интересные и разнообразные дизайнерские решения.
Рекомендую добавить для формы двойную буферизацию, чтобы исключить мерцание при анимации кнопок:
begin
Form1.DoubleBuffered := true;
end.
Если у поля для ввода пароля установить свойство PasswordChar, то TextHint также будет отображаться звездочками. Но тут без вмешательства разработчика не обойтись (я пытался решить данную проблему скриптами, на ходу меняя свойство PasswordChar при вводе текста, но положительного эффекта не получил - контрол начинает вести себя неадекватно).
1,160 2019-10-18 20:13:35
Re: Run CMD window inside a Form (9 replies, posted in Script)
procedure frmMain_Button3_OnClick (Sender: TObject; var Cancel: boolean);
var
h: integer;
Max: integer;
begin
Openfile('cmd');
// finding window's
h := 0;
Max := 20;
while (h = 0) and (Max > 0) do
begin
h := FindWindow('', 'c:\windows\system32\cmd.exe'); // find window using caption
Dec(Max);
Sleep(50);
end;
if h <> 0 then
begin
SetWindowPos( h, 0, -7, -30, 0, 0, SWP_NOSIZE); // set position
SetParent( FindWindow('', 'c:\windows\system32\cmd.exe'), frmMain.Panel1.Handle);
end;
end;
1,161 2019-10-18 19:59:04
Re: Need help with Memo Field (3 replies, posted in General)
An alternative solution may be to use the reverse log display chronology. Then the last entry will be the first in the memo.
1,162 2019-10-17 20:14:36
Re: Не понимаю почему не работает условие... (3 replies, posted in Russian)
Волшебная фраза "Загрузите проект" способна исправить 95% ошибок
1,163 2019-10-17 20:12:15
Re: Что-то не то с кирилицей... (5 replies, posted in Russian)
vit007 wrote:Заполнял условие и заметил странную реакцию скрипта на букву 'я' - меняется цвет ниже расположенного кода, как как-будто незакрытая скобка, если добавить еще - я, становится, норм, еще - опять открылась скобка...
If (frmAddNote.ComboBox1.Text='я') then
вот
просто после Я ставьте пробел..
Именно в этом примере пробел ставить не надо, а то условие не выполнится. Используйте chr(1103). А в других случаях, если по смыслу можно, то добавьте пробел после буквы "я" - это известная и неисправимая проблема редактора.
1,164 2019-10-13 09:54:28
Re: Закрытий окон по-порядку (6 replies, posted in Russian)
Так и должно быть.
Метод Show() делает окно видимым. Вы можете работать с ним, а можете с любыми другими видимыми окнами, переключаясь между ними..
Для того, чтобы работать только с одним окном, используйте метод ShowModal(), который открывает окно в модальном режиме. Кнопка "Показать форму" использует метод ShowModal().
1,165 2019-10-06 11:25:55
Re: TableGrid (24 replies, posted in Russian)
DateTimePicker выдает дату, а не год, поэтому одними настройками компонентов тут не обойтись, потребуется написание кода и использование вычисляемого поля, о котором говорил derek. Код понадобится для преобразования даты в номер (года), который нужно поместить в невидимый Edit. А фильтр настроить по Edit для вычисляемого поля с номером года.
1,166 2019-10-03 07:20:29
Re: What to implement first? (187 replies, posted in General)
How do I run only one instance of an application.
This topic discusses suggestions for improving the program. Please create a separate topic or look for the answer to your question on this forum.
1,167 2019-10-03 06:31:45
Re: What to implement first? (187 replies, posted in General)
var
ReallyClose:boolean = false;
procedure Form1_btnClose_OnClick (Sender: TObject; var Cancel: boolean);
begin
ReallyClose := True;
Form1.Close;
end;
procedure Form1_OnCloseQuery (Sender: TObject; var CanClose: Boolean);
begin
if not ReallyClose then
begin
SendMessage(Form1.Handle, $0112, 61472, 0); //WM_SYSCOMMAND - $0112, SC_MINIMIZE - 61472
CanClose := False;
end;
end;
begin
Form1.OnCloseQuery := @Form1_OnCloseQuery;
end.
1,168 2019-09-27 08:25:26
Re: Есть ли в MyVisualDatabase такие функции ? (3 replies, posted in Russian)
1. Потребуются две таблицы и связь один-ко-многим, (один огурец - несколько картинок)
cucumber
id
name
pict
id
id_cucumber
image
2. Да, по клику на заголовке сортируются отображаемые данные на экране
P.S. Всё так сложно, потому что люди разные и у них разные потребности и представления о том, как все должно быть в этом мире устроено )))
1,169 2019-09-26 07:14:40
Re: WebBrowser (29 replies, posted in Russian)
Посмотрите эту ветку форума - там есть пример кода для "приклеивания" окон (в том числе окна браузера) на панель: http://myvisualdatabase.com/forum/viewtopic.php?id=5614
1,170 2019-09-25 05:28:33
Re: Web browser on MVD form? (8 replies, posted in General)
C:\Windows\System32\calc.exe
You want to say that in MVD can only glue 32-bit applications?
1,171 2019-09-24 15:50:35
Re: Web browser on MVD form? (8 replies, posted in General)
You can pin the window of any application inside the MVD application. See an example for a calculator. It can also be used for the browser.
procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
h: integer;
Max: integer;
begin
// run calculator
OpenFile('calc.exe');
// finding window's calculator
h := 0;
Max := 20;
while (h = 0) and (Max > 0) do
begin
h := FindWindow('', 'Calculator'); // find window using caption
Dec(Max);
Sleep(50);
end;
// move the calculator to the Form1
if h <> 0 then
begin
SetWindowPos( h, 0, 10, 10, 0, 0, SWP_NOSIZE); // set position x=10, y=10
SetParent( FindWindow('', 'Calculator'), Form1.Handle);
end;
end;
P.S. It's not work on Win10
1,172 2019-09-24 15:31:17
Re: Клиент-Сервер "из коробки" (8 replies, posted in Russian)
ffpereverzeff, клиент-серверная архитектура подразумевает наличие клиента и сервера. Используйте MySQL.
sibprogsistem, вы все это на SQLite навесили? И что вы называете "Серверной частью"?
1,173 2019-09-19 13:39:25
Re: Масштабирование формы (2 replies, posted in Russian)
Забудьте про масштабирование в Windows. Серьёзно. Установите свойство Scaled := false, чтобы какой-нибудь пользователь не угробил ваш гениальный дизайн своими кривыми настройками масштабирования )))
Но вы можете использовать якоря для "привязывания" краёв визуальных компонентов к краям формы, чтобы они растягивались и сжимались вместе с ней.
1,174 2019-09-19 11:00:26
Re: Вопрос к знатокам баз данных (2 replies, posted in Russian)
Возможно средствами программы: добавляйте колонки, строки и данные в таблицу в с помощью скриптов.
Пример, который использует два запроса для формирования кросс-таблицы:
procedure UpdateStatistic(Grid: TdbStringGridEx);
var
WorkmanData: TDataSet;
WorkmanData2: TDataSet;
col, row : integer;
s: string;
ShiftCount: integer;
ShiftProc: integer;
MaxSP: integer;
begin
SQLQuery('select workman.id, workman.code, ( select count(id) from shiftbook where shiftbook.id_workman = workman.id ) as shift from workman order by code',WorkmanData);
SQLQuery('select * from workman order by code',WorkmanData2);
MaxSP := SQLExecute('select IntersectionRate from config');
// ShowMessage( INTTOSTR(MaxSP) );
Grid.Columns.Clear;
try
Grid.Columns.Add(TNxTextColumn);
except
end;
Grid.Columns[0].Width := 40;
Grid.FixedCols := 1;
Grid.Columns[0].Color := clbtnFace;
while not WorkmanData.Eof do
begin
try
Grid.Columns.Add(TNxTextColumn);
except
end;
Grid.Columns[Grid.Columns.count-1].Header.Caption := WorkmanData.FieldByName('code').asString;
Grid.Columns[Grid.Columns.count-1].Color := clWhite;
Grid.Columns[Grid.Columns.count-1].Width := 40;
Grid.AddRow;
Grid.Cells[0, Grid.RowCount-1] := WorkmanData.FieldByName('code').asString;
//
WorkManData.next;
end;
row := 0;
WorkmanData.First;
while not WorkmanData.Eof do
begin
col := 1;
WorkmanData2.First;
while not WorkmanData2.Eof do
begin
if WorkmanData.FieldByName('id').asString = WorkmanData2.FieldByName('id').asString then
Grid.Cells[col, row] := '-'
else
begin
// совместные выходы
s := ' select count(*) from shiftbook left join shiftbook as sb2 on sb2.id_shift = shiftbook.id_shift'+
' where shiftbook.id_workman = '+WorkmanData.FieldByName('id').asString+' and sb2.id_workman = '+WorkmanData2.FieldByName('id').asString;
ShiftCount := SQLExecute(s);
if WorkManData.FieldByName('shift').asInteger = 0 then
ShiftProc := 0
else
ShiftProc := trunc( ShiftCount / WorkManData.FieldByName('shift').asInteger * 100 );
//
Grid.Cells[col, row] := inttostr(ShiftProc)+'%';
if ShiftProc > MaxSP then
Grid.Cell[col, row].color := RGB(255,200,200);
end;
col := col + 1;
WorkManData2.next;
end;
//
row := row + 1;
WorkManData.next;
end;
end;
P.S. С помощью запроса тоже можно, но сам запрос придётся генерировать с помощью скриптов, а результат не всегда будет гарантирован.
1,175 2019-09-10 14:11:59
Re: Управление максимизацией окна (2 replies, posted in Russian)
Как говорится, нет заголовка - нет проблемы )))
BorderStyle := bsNone