|
2 / 2 / 0
Регистрация: 11.09.2023
Сообщений: 193
|
|||||||||||
DBGrid вывести в место цифры слово09.12.2023, 21:33. Показов 2333. Ответов 20
Метки нет (Все метки)
В общих чертах я это реализовал кодом ниже:
Кликните здесь для просмотра всего текста
Но в этой статье рассказывается о способе когда мы предоставляем гриду текст а он сам его прорисовывает. Но я не понимаю что это за клас, где это событие. Привожу цитату из статьи. Помогите с этим делом где это событие? Как код выше будет выгледить если его реализовать через этот вариан.
0
|
|||||||||||
| 09.12.2023, 21:33 | |
|
Ответы с готовыми решениями:
20
В предложении из n слов первое слово поставить на место второго, второе - на место третьего, и т.д. Выводить последовательно цифры от 0 до 9 в одно место экрана. При вводе с клавиатуры какой-либо цифры менять темп вывода
|
|
830 / 444 / 39
Регистрация: 05.05.2022
Сообщений: 3,067
|
|
| 09.12.2023, 22:05 | |
|
Это делается с помощью лукап-полей, или вычислимых полей.
0
|
|
|
2 / 2 / 0
Регистрация: 11.09.2023
Сообщений: 193
|
||
| 09.12.2023, 22:39 [ТС] | ||
|
У меня 6 вариантов статуса которые не вычисляются я их сам присваиваю мне проще еще одно поле сделать и писать туда сразу по русски статус. Или вообще не юзать цифровые статусы а юзать текстовые на русском языке. Нужно либо так же красиво как в статье либо нефиг заморачиваться ... но я не понимаю что написано в сатье в той части что я привел. Откуда он это все взял. Что это за "дополнительные" события которых у меня нет у грида.
0
|
||
|
830 / 444 / 39
Регистрация: 05.05.2022
Сообщений: 3,067
|
||||||
| 09.12.2023, 22:57 | ||||||
|
Если вам нужно на основе значений одних полей, посчитать значение другого, то это вычислимое поле. Статья же про то, как рисовать в ячейке грида. Вывод текста - это частный случай рисования, на практике значения особого не имеющий, т. к. выводить текст грид умеет и сам, вся задача лишь в генерации этого текста.
Если у вас есть поле ДлинаРыбы, и вы хотите поделить на категории, то создайте вычисляемое поле, скажем, КатегорияДлиныРыбы и пишите в OnCalcFields
0
|
||||||
|
2 / 2 / 0
Регистрация: 11.09.2023
Сообщений: 193
|
||
| 09.12.2023, 23:04 [ТС] | ||
|
Петрович аш 2003г знал об этом. Чутка подразобрался это событие в датасете. Только на том форуме речь шла о статической таблице а у меня динамическая я не могу в дезайнере добавить поля. У меня через FDQ с помощью SQL генерится запрос. Как программно реализовать то что говорит человек для таблицы сформированной SQL запросом?
https://forum.sources.ru/index... 39631&st=0 Кликните здесь для просмотра всего текста
0
|
||
|
830 / 444 / 39
Регистрация: 05.05.2022
Сообщений: 3,067
|
|
| 09.12.2023, 23:20 | |
|
Продам компоненты для запросов, оптом. 10 компонентов - 100 рублей.
А вообще, вам никто не запрещает программно подцепить к нужным полям обработчики onGetText. Вы же всегда знаете, какие поля у вас будут.
0
|
|
|
2 / 2 / 0
Регистрация: 11.09.2023
Сообщений: 193
|
||||||||||||
| 09.12.2023, 23:52 [ТС] | ||||||||||||
|
В общем запихал я в чат GPT свой код и попросил его переделать так чтобы OnGetText был. Вышла лажа, полная лажа, но в одном моменте заработало, собственно, что мне и нужно было само слово начало появляться, не там где надо но появляется. Допилил и вот так это выгледит на текущий момент может что то и лишнее но работает.
не понятно почему но первая строка которая по умолчанию выбрана становиться при активации запроса работает с таким багом. Хотя мы идем вот по этому ветвлению:
0
|
||||||||||||
|
830 / 444 / 39
Регистрация: 05.05.2022
Сообщений: 3,067
|
||||||
| 10.12.2023, 00:16 | ||||||
|
На примере кастомного onClick для TBitBtn
Вообще-то это часто нужно. Если компонент программно создается, и ему надо задать обработчики. Или менять обработчики по ходу работу программы. При разработке своих компонентов еще бывает нужно делать свои события со своими наборами параметров, тогда для них делается соответствующий процедурный тип с припиской of object.
0
|
||||||
|
2 / 2 / 0
Регистрация: 11.09.2023
Сообщений: 193
|
|
| 10.12.2023, 18:32 [ТС] | |
|
Вопрос порассуждать. Какой смысл использовать в качестве статусов цифры а не словесные описания сразу же?
Плюсы: Плюсы очевидны при больших базах данных в 10.000-100.000-1.000.000 строк наверника выборка по числам [1..10] будет гараздо быстрее чем поиск соответствия по 10 словам. Удобство в ветвлении в самом Delphi через case of без создания доп. списка как это нужно делать в случае слов. Недостатки: Недостатки в том что приходиться колхозить всякие преобразования из цифры в слово каждый раз когда появляется эта цифра. D DBGrid например. Причем получается я просматриваю кучу данных кучу полей дабы отобрать это поле и присвоить ему соответствующее значение. То есть если в записи 25 полей я каждый раз делаю IF ради одного поля. Плюс у меня это поле отображается периодически в Grid, Label, Memo и везде я должен это преобразование написать в самом Delphi. Так же у меня есть другая процедура кликая по DBGrid по записи я вывожу всю инфу из этой записи. Какие там данные я не знаю они могут быть разные, разные поля. Но среди прочих в какой то момент будет запись которая содержит поле Status и оять я должен все проверять через IF ради одного поля Status чтобы вывести в мемо фразу "Статус: В работе", а не "Статус: 3" на текущий моенент у меня в гриде могут появляться порядка 150 различных полей и это все я должен сравнить, а не поле ли это Status.... Быть может на малых базах данных целесообразно использовать сразу текстовые значения статусов при условии что эти статусы выводяться в DBGrid, Мемо, Edit, Label?
0
|
|
|
830 / 444 / 39
Регистрация: 05.05.2022
Сообщений: 3,067
|
|
| 10.12.2023, 18:41 | |
|
Делается таблица статусов. А за текстовые ключи надо руки отрывать и давать розгами по месту из которого они растут.
1
|
|
|
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
|
||
| 11.12.2023, 02:19 | ||
|
Во-первых кнопка уже создана в дизайнере. Во-вторых для компонента TxxxField нужно не только задать обработчик, но и подключить его к нужному Dataset. А почему было не дать пример именно с классом TxxxField?
0
|
||
|
830 / 444 / 39
Регистрация: 05.05.2022
Сообщений: 3,067
|
|
| 11.12.2023, 11:48 | |
|
Во-1, мне лень создавать поля, и вообще приложение с БД, принцип все равно тот же.
Во-2, уже 100 раз сказали, что проще всего создать датасеты под каждый запрос, или задачу. В этом случае у них можно и в дизайнере создать поля. Ну и вообще уменьшить геморрой. Сколько лет базами занимаюсь, у меня ни разу подобной проблемы не было. Потому что она полностью решается вычислимыми и лукап полями. Даже если руками писать onGetText, т. е. фактически перенести код расчета вычислимого поля в замену текста другого поля, что м/б будет чутка компактнее, то принципа это не отменяет.
0
|
|
|
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
|
|
| 12.12.2023, 02:01 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 11.09.2023
Сообщений: 193
|
||
| 17.12.2023, 14:17 [ТС] | ||
|
Со статусами мы определились, слова статусов большие, дак еще можно эти статусы и переименовать поэтому храним в БД цифровой ключ и отдельную таблицу со статусами. 1. Посмотрите на картинку. "Система крепления". (А) Я считаю если бы пользователя устроило бы описание в виде одной буквы. То имеет смысл хранить напрямую эту букву С,D,M ... и посик осуществлять siskrep = "C". (Б) Если нужно расширенное описание то лучше хранить не буквы а цифры, а именно ItemIndex комбобокса. Таким образом для вывода информации в таблицы-DbGrid или в мемо мы запрашиваем полное описание. А когда нам нужно установить комбобокс в нужное значение из БД при редактировании например, мы используем непосредственно ключ-цифру-ItemIndex из БД без запроса описания. В случае (А) нам придется провести поиск по списку комбобокс а потом уже его установить в нужное значение. Возможно это частично компенсируется тем что при выводе в таблицы не нужно запрашивать дополнительно другую таблицу с описанием, а может даже в таком простом случае с одной буквой стоит делать дополнительную таблицу. Ваше мнение какое? 2. "Тип державки". Тут тоже самое если удовлетворены описанием в виде одной букву то можно и вариант (А) если нет то цифровые ключи ItemIndex из комбобокс и таблицу с описанием "B (75)"
0
|
||
|
830 / 444 / 39
Регистрация: 05.05.2022
Сообщений: 3,067
|
|
| 17.12.2023, 16:54 | |
|
Во-1, есть DBLookupcombobox и листбокс. А для поиска есть метод датасета Locate. Можно так же применять фильтры, как SQL-ые, так и быстрые локальные, там, правда, нюанс, нужно поле, по которому фильтр, всегда брать в квадратные скобки.
Вообще, когда имеешь дело с такими вот системами учета комплектухи, то это головная боль, там уже может быть сложившаяся система маркировки, которую придется переносить, отказываясь от числовых Id. Возможно надо применять несколько ключей сразу.
0
|
|
|
2 / 2 / 0
Регистрация: 11.09.2023
Сообщений: 193
|
|
| 20.12.2023, 10:49 [ТС] | |
|
Я почитал рассуждения на тему первичный ключ строка или число. И мне кажется что даже в той теме люди путаются. Я полагаю если речь идет действительно о ключе то 100% надо юзать ID. Он работает гораздо быстрее в чем я убедился на практике в выборке в 1млн строк (105Мбайт). Так если если ключ и вторая таблица обязательно нужны то ключ должен быть ID а не строка. Даже не понимаю какой смысл в строке в таком случае.
Но я говорю немного о другом а нужен ли он вообще ключ и вторая таблица. Вот если не нужен и без него можно обойтись то я бы подумал. И тут я согласен с Тони Эндрюс который говорит что вы обрастете JOIN соединениями, а потом задолбаитесь с ними рабоать. https://stackoverflow.com/ques... iness-keys Так как я человек не опытный то я пробую. И попробовал сделать через JOIN в итоге у меня дополнительных таблиц стало больше чем основных. Основной запрос привратился из 4х JOIN в 10 JOIN ради чего? Ради того чтобы указать сторону оброботки резцом например: Наруж. / Внутр. / Торец - возможно 4 вариант эти 3 или пользователь не указал. Или направление обработки R / L / RL еще одна таблица..... В общем из своего практического опыта я сделал вывод что по возможности лучше так не делать. Не создать дополнительные таблицы на значения пусть даже строковые которые с вероятностью 95% не изменят своего значения. Врятли Наруж. - я когда нибуть переименную в "С наружи". Еще я провел некоторые тесты по поиску по самой базе данных по текстовым полям и по числовым и поиск по строкам на равенство происходит довольно быстро, он даже равн поиску по числу, если это поле не является индексированным. И составляет в среднем 0,5с для выборки в 1млн для всех типов при длине строки не более 32 символа. Так же не важно где это число находиться в начале БД или в конце время одинаковое что говорит о том что идет просмотр всех записей. Для себя я сделал вывод что конкретно в моем случае проще хранить непосредственное значение из комбобокс "Лево" "Право" "A (73)" чем обрастать 10-15 LEFT JOIN. Потеря 0,5с на "рабочем" компе который и так у меня тупой это ни что, незаметно для пользователя. А домашний сделает это в 4 раза быстрее за 0,1с. Гораздо большие потери мы будем иметь на непосредственной передачи данных по сети результатов самого запроса. Чем вычисления - 0,5с на сервере.
0
|
|
|
830 / 444 / 39
Регистрация: 05.05.2022
Сообщений: 3,067
|
|||||||
| 20.12.2023, 11:40 | |||||||
|
Вообще-то если прога делается на Delphi, то и структура выбирается с учетом этого, а главные таблицы Join иметь не будут, скорее всего, там все собирается через lookup-поля. Хотя может у тебя на сервере делаются представления какие-то. прога, как я понимаю, от таблиц их не отличает (не использую представления). А чьи в представлении поля само представление знает.
Использовать таблицы без ключей может быть не всегда разрешено, например, в Access. Оно, вроде бы, можно, но есть засады. Тогда в качестве ключа можно использовать строки. Просто чтобы был. Бывает и такое:
Делать какие-то короткие строковые поля с фикс. значениями без связей можно.
0
|
|||||||
|
2 / 2 / 0
Регистрация: 11.09.2023
Сообщений: 193
|
|
| 20.12.2023, 13:30 [ТС] | |
|
lookup поля как я понял действительно могут избавить от JOIN, но думаю не в моем проекте, может быть когда нибудь я к ним прийду. Создавать их динамически тоже еще тот гемор. А у меня все запросы динамические. Иногда есть те поля что нужны для работы с локап полем иногда нет.
*** Оин из выводов моего эксперимента (скрин 2 и 5 причем число всего 4-х значное) говорит, что поиск по числовому значению или по строке в 32 символа идет одинаково 0,5с на 1млн записей. В моем случае БД имеет Toolid, Tipid, ...еще 50 полей описывающих различные параметры инструментов. Все это и есть поля-критерии поиска. Все их сделать ключами не возможно. И получается вывод зачем мне искать левый, правый, или нейтральный это резец через число, а потом подстовлять слово через локап-поле или JOIN StorId=2 Если я сразу могу искать Stor="RL" или Stor = "Лев". Время на поиск будет одинаковым. Я думал что числа ищутся быстрее но как оказалось это не так. Зачем мне искать Форм резца через запрос DerF=5 Если можно сразу Der="J (93)" время будет одинаковым только в первом случае еще колхозить с локап полем или JOIN. В общем верну все в зад JOIN оставлю только для основных вещей, а всю эту мелочевку (являющеюся не изменяемым набором) буду непосредственно из комбобокса подставлять. Попробую по этому пути пройти.
0
|
|
|
830 / 444 / 39
Регистрация: 05.05.2022
Сообщений: 3,067
|
||
| 20.12.2023, 15:08 | ||
|
0
|
||
| 20.12.2023, 15:08 | |
|
Помогаю со студенческими работами здесь
20
Место формируется автоматически если на определенную дату место занято то вывести ошибку. Все это дело считывается с б
Дана квадратная матрица A[N,N]. Записать на место отрицательных элементов матрицы нули ,а на место положительных единицу. Вывести на на печать нижнюю Посчитать разницу столбцов DBGrid и вывести в другой столбец другого DBGrid? Как вывести в DBGrid информацию только по выбранной строке в другой таблице DBGrid? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|