Есть таблица "Проекты", у которой есть поле "Статус проекта".
К этому полю привязана таблица "Статусы проекта".
На форме Проекты есть комбобокс "Статус проекта", который запускает SQL запрос, отображающий на форме проекты с выбранным в комбобоксе статусом.
Т.е. выбираем в комбобоксе какой то один статус и на форме отображаются проекты только с этим статусом.
Требуется построить отчет сразу по всем значениям комбобокса, т.е. чтобы в отчете было так:
Статус "Открытые"
Проект 1
Проект 4
Проект 8
Статус "Приостановленные"
Проект 2
Проект 3
Проект 9
Статус "В работе"
Проект 5
Проект 7
Что то не могу сообразить, каким образом решать эту задачу с помощью дизайнера отчетов. Посоветуйте, пожалуйста.
1 2023-06-07 09:13:27
Topic: Как построить отчет с перебором значений комбобокса? (4 replies, posted in Russian)
2 2021-03-14 18:38:19
Topic: Как отформатировать вычисляемое поле в денежный формат? (1 replies, posted in Russian)
Есть вычисляемое поле "Сумма" (Цена * Кол-во).
Цена в таблице на форме отображается как положено с пробелом в качестве разделителя тысяч и двумя знаками после запятой.
А вычисляемое поле Сумма, хоть и выбрал ее формат в БД как денежный, отображается без разделения тысяч.
Что нужно сделать, чтобы сумма в таблице отображалась с разделением тысяч и двумя знаками после запятой?
3 2021-03-01 20:09:07
Re: Как динамически создать контекстное меню для TableGrid ? (2 replies, posted in Russian)
Задачу свою решил по материалам форума.
Может кому-нибудь полезно будет:
//
procedure CreateTblMenu();
var
TemplateItem:TMenuItem;
SData:TDataSet;
begin
// построение всплывающего меню шаблонов писем
SQLQuery('SELECT id, template_name FROM tbl_email_templates', SData);//список всех id шаблонов писем
while not SData.eof do
begin
TemplateItem:= TMenuItem.Create(Form_1);
TemplateItem.Caption := SData.FieldByName('template_name').asString; // пункт меню = наименование шаблона письма
TemplateItem.Hint := SData.FieldByName('id').asString; // запоминаем id шаблона письма у данного пункта меню
Form_1.TableGrid_1.dbPopupMenu.Items.Insert(3, TemplateItem); // Отображаем пункт меню
TemplateItem.OnClick := @CreateMessage; //у всех пунктов меню одна и та же процедура
SData.Next;
end;
end;
procedure CreateMessage(Sender:string);
begin
// создаем сообщение
Frm_Email_Message.Edit_TemplateID.Text := TMenuItem(Sender).Hint; // получаем ID шаблона выбранного пункта меню
...
Frm_Email_Message.Show; // отображаем форму письма, применив шаблон письма в соотв. с его ID
end;
//
А если кто-нибудь подскажет, как создавать подобным образом пункты меню, передавая еще и имя процедуры, которую он должен выполнить, то совсем здорово будет.
4 2021-02-27 15:55:57
Topic: Как динамически создать контекстное меню для TableGrid ? (2 replies, posted in Russian)
Есть таблица в БД "Шаблоны писем".
Таблица содержит поля "Имя шаблона","Тема письма", "Текст письма"
На форме есть таблица "Товары".
Надо при запуске приложения создать динамически контекстные пункты меню (правый клик) для этой таблицы, где каждый пункт меню соответствует шаблонам писем.
Т.е. сколько есть разных шаблонов в БД, столько и пунктов меню.
При клике на выбранный пункт шаблона должна запускаться одна и та же процедура, но в нее надо передать список выбранных строк товаров (массив ID товаров) и ID шаблона письма.
Каким образом динамически задавать пункты меню, если обычно их надо объявлять в блоке var?
5 2021-02-26 13:03:52
Re: Можно ли вывести в комбобокс значения из нескольких полей? (2 replies, posted in Russian)
Спасибо! То, что надо !
6 2021-02-26 10:05:37
Topic: Можно ли вывести в комбобокс значения из нескольких полей? (2 replies, posted in Russian)
Комбобокс обычно привязывается к одному из полей таблицы.
А мне для наглядности надо выводить определенным образом композицию данных из двух полей.
Т.е. в таблице есть поле ФИО и поле email.
И в комбобоксе надо чтобы выводилось так: Сергей Иванов <email@mail.ru>
Как это сделать?
7 2021-02-21 16:52:34
Topic: Как вывести сообщение в область уведомлений Windows? (0 replies, posted in Russian)
Можно ли вывести всплывающее сообщение в область уведомления Windows?
В Delphi вроде бы для этого используется класс TNotification.
Но в MVD его нет.
Кто-нибудь знает, как это сделать?
8 2021-02-16 17:08:40
Topic: Как записать из Memo файл в кодировке UTF-8 без BOM (4 replies, posted in Russian)
При выполнении метода Memo.SaveToFileUTF8 записывается файл в кодировке UTF8 с меткой кодировки BOM в начале файла.
Есть ли способ отключить эту метку при сохранении в UTF8?
Или можно ли как-то избавиться от этой метки после сохранения?
Т.е. нужен файл в кодировке UTF8, но без метки BOM.
9 2021-02-10 13:58:03
Topic: Как отменить Selected у таблицы? (1 replies, posted in Russian)
На главной форме есть кнопка, которая открывает форму справочника адресов (таблица).
Кликаю по выбранному адресу, справочник адресов закрывается и скриптом передаю в edit на главной форме выбранное значение адреса.
Это значение я беру путем определения, какая строка в таблице справочников адресов была selected.
Все работает как надо.
Однако, каждый раз когда открываю справочник адресов, то в таблице адресов всегда selected строка предыдущего выбранного адреса.
Можно ли как-то сделать так, чтобы таблица делала что-то типа UnselectRows при открытии формы справочника адресов?
10 2021-02-08 18:46:22
Re: Как открывать немодальную форму с любой другой формы? (4 replies, posted in Russian)
Нет такого оператора "open".
Если его заменить на Show, то так тоже не работает.
Немодальная форма доступна только с того окна, с которого открылась первой.
11 2021-02-07 12:31:16
Topic: Как открывать немодальную форму с любой другой формы? (4 replies, posted in Russian)
Есть главная форма MainForm.
На ней кнопка, которая по клику открывает немодально HistoryForm (HistoryForm.Show).
В результате можно работать одновременно на обеих формах.
На главной форме также есть таблица, с которой модально открывается форма редактирования проекта ProjectForm.
На форме проекта тоже есть кнопка, которая открывает немодально HistoryForm (HistoryForm.Show).
Если немодальную форму HistoryForm, открытую с главной формы, не закрыть вручную перед открытием проекта, то с формы проекта к ней нет доступа, т.к. ее родительская форма не форма проекта, а главная.
Можно ли как-то организовать программно изменение родительской формы у HistoryForm.?
Т.е. надо иметь возможность немодально открывать форму HistoryForm с любой другой формы, не заботясь об ее ручном закрытии если она перед этим была вызвана с другой формы.
12 2021-02-05 13:13:31
Re: Новая версия 6.5 (21 replies, posted in Russian)
3. К сожалению не понял, не могли бы показать скриншотом?
Приложена картинка по поводу изменения положения текста у чекбокса.
13 2021-02-05 13:07:59
Re: Новая версия 6.5 (21 replies, posted in Russian)
4. Изменение цвета кнопок невозможно даже без стиля начиная с Windows Vista.
Как это невозможно?
Приложены цветные кнопки в реальном проекте на Win10.
Их цвет затирается стилем, если запускать проект со стилями.
14 2021-02-04 16:01:00
Re: Новая версия 6.5 (21 replies, posted in Russian)
1. В моем проекте я делал квадратные маленькие кнопки такой ширины, чтобы стандартные иконки (добавление, редактирование, удаление) отображались по центру кнопки.
Но, если проект запускать со стилями, то иконки сдвинулись влево, прилипнув к самому левому краю кнопки.
2. Подавляющее кол-во стилей как будто застряли в Win XP и сделаны по принципу "вырви глаз". Сочетание цветов удивительное.
Очевидно, надо добавить возможность редактирования стилей.
3. В чекбоксах - если надпись чекбокса размещена слева от него, то правым краем она прилипает к квадратику чекбокса, хотя при разработке был выбран размер рамки надписи так, чтобы надпись не касалась квадратика.
4. Стили не дают возможность изменять скриптом цвет кнопок.
5. Стили изменяют высоту компонента "файл".
Т.е. получается, что применить стили нет возможности (пока). Хотя очень хочется.
15 2021-02-03 15:36:19
Topic: Как получить номера выделенных строк в таблице (1 replies, posted in Russian)
Выделяю несколько строк в таблице (не по порядку).
Каким образом получить в скрипте номера этих строк?
16 2021-01-30 17:47:27
Topic: Как получить массив из строки ? (1 replies, posted in Russian)
Есть текстовая строка, в которой между словами может быть не один, а несколько пробелов (случайное кол-во).
Надо получить массив слов, разбивая эту строку функцией SplitString.
Например, это можно сделать так: ArrStr := SplitString (mystring, ' ');
Кол-во слов в этом массиве получаем используя функцию Length (ArrStr);
Далее каждое слово выдергиваем перебором массива по кол-ву элементов в массиве.
Однако, функция SplitString неправильно разбивает строку на слова, если между словами больше, чем один пробел.
Второй пробел она считает началом следующего слова.
Как решить эту проблему? Может как то по другому решить?
17 2021-01-28 14:53:07
Topic: Как установить ширину в HTML коде RichEdit? (0 replies, posted in Russian)
Компонент RichEdit имеет метод SaveHTML для записи в файл HTML формата.
Когда сохраняешь данные в HTML файл, то при его открытии браузером весь текст, естественно, растягивается на всю ширину экрана.
Но, мне необходимо, чтобы ширина текста была ограничена, например, 600 пикселями.
В HTML коде, понятно, для этого можно весь текст поместить в теги table и задать для этого тега его ширину.
В RichEdit можно вручную создавать таблицы и их ширина попадает в HTML код, но это не выход в реальной работе.
Есть ли способ автоматического задания ширины текста в тегах HTML файла при выполнении метода SaveHTML?
18 2021-01-12 09:57:53
Re: Не работает прокрутка строк при ручной установке высоты строк (4 replies, posted in Russian)
Вертикальный скрол включается автоматом, когда форму максимизирую.
Т.е. утверждение, что анкоры и автоскролл несовместимы тут не работает.
Ладно, может кто подскажет, как вертикальный скрол включить принудительно при открытии формы?
Т.е. не AutoScroll включить, а просто вертикальный скролл, чтобы он был Enabled.
19 2021-01-11 13:54:35
Re: Не работает прокрутка строк при ручной установке высоты строк (4 replies, posted in Russian)
Переставил изменение высоты строк на OnShow формы. Не помогло. Есть еще версии?
20 2021-01-11 09:56:16
Topic: Не работает прокрутка строк при ручной установке высоты строк (4 replies, posted in Russian)
Имеется главная форма с размером при разработке, меньше чем весь дисплей.
При запуске приложения она отображается посередине экрана.
На форме есть таблица с анкорами по всем сторонам.
Таблица имеет включенное свойство AutoScroll.
На событии таблицы OnChange есть код установки высоты всех строк:
Frm_Project_List2.TableGrid_MainWall.Row[ii].RowHeight := 33;
Если кол-во строк такое, что при такой высоте все они не влезают при начальном отображении формы, то должна включаться вертикальная полоса прокрутки.
Но, она не включается!!!
Т.е. отображение таблицы при первоначальном запуске формы как бы не понимает, что высота строк по умолчанию была изменена на другое значение и поэтому, надо включить полосу вертикальной прокрутки.
А вот если развернуть окно формы на весь экран, то только тогда включается автопрокрутка.
Хотя при этом она может быть и не нужна, т.к. при полноэкранном отображении формы все строки полностью влезают в экран и их прокручивать не надо.
Как побороть этот баг?
21 2021-01-08 13:13:23
Topic: Как поймать исключение "Connect time out" в MySQLConnection.Connect ? (0 replies, posted in Russian)
Есть код:
try
Frm1.MySQLConnection.Connect;
except
ShowMessage('Соединиться с сервером базы данных не удалось ');
Frm1.Close;
exit;
end;
Этот код правильно срабатывает, если есть ошибка при подключении к работающему MySQL серверу.
Но, если на сервере не запущена служба MySQL, то этот код через некоторую временную задержку сначала вызывает окно ошибки "Connect time out", а только потом обрабатывает код в блоке except.
Как предотвратить появление окна с ошибкой "Connect time out", если сервер не запущен?
22 2020-12-28 17:39:24
Topic: Как программно закрыть вызвавшую форму? (0 replies, posted in Russian)
Есть главная форма Проекты с таблицей Проекты.
Для ввода проектов используется форма "Проект".
На ней есть таблица - "Задачи".
Т.е. чтобы открыть Задачу, надо с формы Проекты открыть нужный Проект и потом открыть форму Задача.
...
Для быстроты доступа к задачам таблица базы данных "Задачи" выведена также на главную форму Проекты.
Когда кликаю по Задаче программно открываю окно формы редактирования нужной Задачи.
Но, из этого окна задачи мне надо реализовать открытие проекта, к которому эта задача принадлежит.
Для этого кодом кнопки я закрываю окно задачи (Frm_Task.Close), а затем показываю окно Проект Frm_Project.Show
Это все работает, но, поскольку код Frm_Task.Close находится в процедуре обработки нажатия кнопки на форме Frm_Task, то эта форма остается видимой, а поверх нее открывается окно Проекта.
И если сейчас попытаться открыть форму Задачи, то оно не отобразится, поскольку остается сзади формы Проекта.
Ведь форма Frm_Task является вызвавшей форму Проект.
Можно ли как то программно по настоящему закрыть вызвавшую форму?
Или поместить вызвавшую форму поверх вызванной?
23 2020-12-25 10:27:44
Topic: Как получить порядок столбцов таблицы после их перетаскивания? (0 replies, posted in Russian)
Есть таблица у которой включено свойство возможности перетаскивания столбцов (изменения их порядка).
Требуется организовать цикл перебора столбцов по их порядку после перетаскивания.
Если обращаюсь к номерам столбцов через их индексы (Columns i), то эти индексы никак не меняются, когда произошло перетаскивание.
Их порядок всегда такой, как прописано в настройках таблицы.
Каким образом получить порядковые номера столбцов после их перетаскивания?
24 2020-12-18 13:20:22
Re: Определить приложение, ассоциированное с файлом (2 replies, posted in Russian)
Нет, это не то.
У нас в офисе на компьютерах пользователей стоят разные программы для работы с таблицами Excel, PlanMaker (FreeOffice), WPS Office.
Я создаю скрипт экспорта данных из базы, который должен взаимодействовать с той программой, которая ассоциирована с xls файлом на конкретном ПК.
Синтаксис взаимодействия по OLE у Excel, PlanMaker (FreeOffice), WPS Office не идентичный.
Поэтому, до начала запуска OLE мне надо знать, какая программа ассоциирована с xls файлом.
25 2020-12-11 11:43:25
Topic: Определить приложение, ассоциированное с файлом (2 replies, posted in Russian)
Есть ли какая-нибудь функция, которая позволяет определить, какое приложение ассоциировано с файлом определенного расширения?