51

(5 replies, posted in Russian)

mitrich45 wrote:

Или сделать на форме что то наподобии гиперссылки без использования таблиц

Нужна ссылка на сайт? Если да, то можно сделать так:

OpenURL(Form1.Label1.Caption);  //URL находится в надписи и будет открыто в браузере по умолчанию. 

Код можно поместить в любое событие, хоть самого лейбла, хоть отдельной кнопки, напр., OnClick, OnDoubleClick.

П.С.
Если же нужно скопировать текст в буфер обмена, то можно поместить на форме скрытый компонент TEdit.
Затем пишем примерно такой код, напр., в событие OnClick самого лейбла, в котором находится адрес:

  Form1.Edit1.Text:= Form1.Label1.Caption; //Помещаем текст лейбла в текстовое поле.
  Form1.Edit1.SelectAll; //выделяем весь текст
  Form1.Edit1.CopyToClipBoard; //копируем в буфер

52

(13 replies, posted in Russian)

mitrich45 wrote:

кстати такой вопрос, если будет 2 лейбела, получается нужно и 2 переменные вводить

Пока можно только один "заставить бегать". Думаю, как сделать, чтобы несколько работало.
П.С. Нет. В принципе заставить несколько лейблов "бегать" не проблема, но тогда нужно будет не одной процедурой делать, а расписывать на несколько. А хочется автоматизировать процесс. smile

53

(13 replies, posted in Russian)

Вот мой пример реализации бегущей строки.
В версии 1.46 должен работать.

54

(4 replies, posted in Russian)

Как сделать в версии 1.46 и старше не знаю, поскольку в них нет возможности менять меню грида. А вот для более новых версий мой вышеуказанный метод вполне должен работать. Только надо сделать проверку: в начале работы программы создать глобальную переменную, которая будет запоминать текущего юзера. И тогда в скрипте OnCellDoubleClick нужно будет сделать проверку: если пользователь админ, то срабатывает клик стандартной кнопки редактирования, если не админ, то спецкнопка, которая открывает другую форму.

55

(4 replies, posted in Russian)

Не совсем понял. Вам нужно, чтобы при двойном клике на строке таблицы появлялась не та форма, которая для редактирования, а другая?
Если так, то можно сделать ещё одну кнопку, назначить ей нужные действия. Затем скрыть пункт меню Show Record (см. в решебнике пример по замене меню грида. Только для версии 1.47 и новее!) и на свойство OnCellDoubleCliсk нужной таблицы в скрипте прописать <название формы>.<название кнопки>.Click.

56

(3 replies, posted in Russian)

Стартовое (Главное) окно - это самая крайняя левая форма (сразу за вкладкой с таблицами и скриптами). Её иконка красного цвета. Просто перетащите нужную форму до упора влево, и она станет главной.

Из того, что сразу заметил: я бы добавил для формы log ещё такую строчку в код OnShow

log.Button1.Default:= True; 

.
Это для того, чтобы после ввода пароля, можно было по нажатию на Enter войти.

На форме addTC забыли поставить Action 'Close'. Форма не закрывается. smile

zoomix wrote:

Это наверное для версий старше 1.46 - у меня вылетает ошибка про незадекларированную функцию.

Да. Это для версии 1.47 и старше.

РУСИФИКАЦИЯ ИЛИ ПОЛНАЯ ЗАМЕНА СТАНДАРТНОГО МЕНЮ ГРИДА для версии 1.47 и новее
Пример того, как можно русифицировать или полностью заменить стандартное меню грида (то меню, которое появляется при щелчке правой кнопкой мыши на таблице).
Добавлены две соответствующие процедуры для удобства.
Ставить их нужно на событие OnShow формы.
Если нужно оставить некоторые пункты меню, то просто поставьте True в нужных строчках.

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

П.С. Перезалил файл. Добавил новую процедуру, которая сокращает количество кода для создания нового пункта меню.

И теперь можно делать собственные контекстные меню к таблицам. smile

Дмитрий, можете кратенько описать, за что отвечают параметры в Options? А то в справке они просто перечислены. некоторые понятны, а некоторые нет.
Напр., Colons.Options
coCanClick
coCanInput
coCanSort
coDisableMoving
coDontHighlight
coEditing
coEditorAutoSelect
coFixedSize
coImageForIcon
coPublicUsing
coFullResort
coSearchColumn
coShowTextFitHint
coTextForCaption
Или Options самой таблицы
goArrowKeyExitEditing
goCanHideColumn
goDisableColumnMoving
goDisableKeys
goEscClearEdit
goFooter
goGrid
goHeader
goIndicator
goInput
goLockFixedCols
goMultiSelect
goRowResizing
goRowMoving
goSecondClickEdit
goSelectFullRow
goUseDefaultValues
goInplaceEditEvents

Подскажите, пожалуйста,  как можно сделать так, чтобы столбцы автоматически заполняли всю ширину таблицы? Т.е. чтобы не было горизонтального скрола, а только вертикальный.
Например, у меня есть справочники, которые состоят из одного столбца, хотелось бы, чтобы при открытии формы с такой таблицей, столбец занимал всю ширину. Сейчас делаю это с помощью скрипта: выставляю ширину колонки равной ширине таблицы.
Вообще, в делфи есть параметр, который автоматически выставляет ширину колонок по всей ширине таблицы.
Когда пытался разобраться в делфи, то частенько использовал его в связке с минимальной и максимальной шириной колонки.
Например, задаю для столбца "Номер заказа" минимальную ширину 50, а максимальную 80, для даты - 90 и 120, а для столбца "Примечания" ставлю только минимальное значение 150. И тогда у меня получается, что при размере таблицы 700, колонка с комментариями автоматически занимает б0льшую часть таблицы.

Но можно попробовать убрать системные кнопки, а соответствующие пункты (развернуть, свернуть) добавить в меню или на свои кнопки.

Спасибо!
Кое-что поправил (учет расширения начального файла, перенес копирование на кнопку сохранения записи) и все стало как хотелось!

Есть база данных заказчиков. На каждой карточке заказчика есть компонент DBFile. При выборе в нем файла с реквизитами он копируется в заранее определенную папку. Поскольку сейчас все файлы называются абы как, то хотелось бы, чтобы при копировании происходило переименование файла по определенную шаблону. Напр., "Реквизиты"+значение из поля Название фирмы, т.е. было "Файл с реквизитами для организации ОоО КАРАВАН (+телефоны).txt", а получилось "Реквизиты ООО КАРАВАН.txt".

67

(237 replies, posted in Russian)

Добавить в свойства компонентов Hint и Show Hint. Они сильно облегчают пользователям жизнь, поэтому я стараюсь для всех кнопок и полей заполнять это свойство. В результате сейчас у меня десятки строк кода, которые описывают эти подсказки...

68

(23 replies, posted in Russian)

Valler wrote:

скажите, а что прописать в скрипте для формы Splash чтобы убрать системные значки свернуть/развернуть/закрыть?

В событие OnShow формы frmSplash вставьте такой код:

  frmSplash.BorderIcons:= 0;

Подробнее можно почитать в справке. В разделе скрипты-форма-BorderIcons.

ИСПОЛЬЗОВАНИЕ HOTKEY В ПРОЕКТЕ
Назначение кнопкам и событиям возможности срабатывания при нажатии кнопок клавиатуры.
Коды клавиш можно посмотреть, напр., здесь  http://delphi-box.ru/kodi-klavish-delphi.html

70

(237 replies, posted in Russian)

Хотелось бы увидеть помимо ShowMesage и MessageDlg еще и MessageBox, т.к. он дает больше возможность по оформлению. Например, MssageDlg выдает названия кнопок только на английском языке, а в MessageBox можно задать и название, и текст, и кнопки на русском языке.

И будет ли все-таки возможность отключать меню, появляющееся при щелчке правой кнопки мыши у таблицы? У меня пользователей очень пугают надписи на английском языке. И очень хотелось бы иметь возможность вместо стандартного меню назначать свое. Стандартным вообще ни разу не пришлось пользоваться, а вот свои бы пункты хотелось бы добавить.

DriveSoft wrote:

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

Точно. Работает. Я просто неправильно их пытался использовать.

ВЫБОРКА ПО НЕСКОЛЬКИМ ВЫДЕЛЕННЫМ ЗАПИСЯМ ТАБЛИЦЫ.
Выборка данных из таблицы Сотрудники по нескольким выделенным строкам таблицы Категории.

Спасибо! Вроде бы то, что нужно. Буду разбираться.

И сразу ещё просьба добавить компоненту Memo опции LoadFromFile и SaveToFile. Ну или возможность реализовывать это через скрипты.

Добрый день!
Подскажите, пожалуйста, можно ли сделать такое:
Есть две таблицы: одна Категории, другая Список программ. При клике на поле таблицы Категории выводится список программ, у которых есть данная категория в дочерней таблице.
Можно ли сделать так, чтобы при выделении нескольких строк в таблице Категории происходила выборка по этим значениям?

Т.е. я выделяю в таблице Видео и Звук, и, соответственно, получаю программы, у которых есть данные категории в подчиненной таблице.

Сейчас использую такой запрос:

SELECT
  Main.ProgName,
  Main.id
FROM
  Main
LEFT OUTER JOIN ProgCategories ON Main.id = ProgCategories.id_Main
WHERE
  ProgCategories.id_Categories = {GridCategories};

75

(237 replies, posted in Russian)

DriveSoft wrote:

alex842
Данный компонент с относительными путями работает, если задать свойство CopyTo
http://myvisualdatabase.com/help_ru/com … opyto.html


может быть не совсем то, но ведь сперва придется скопировать файл в папку с программой, а затем выбрать его через компонент DBFile, как раз свойство CopyTo и создавалось, чтобы этот процесс автоматизировать.

А он точно делает путь к файлу относительным по этой комманде?  У меня что-то не получается... Например, программа лежит на флэшке. На  домашнем компьютере у нее буква H, а на рабочем G. В результате при попытке открыть файл на рабочем компьютере, у меня ничего не получается.