1 (edited by zoomix 2014-11-18 16:33:22)

Topic: Идентификатор на первой записи

Доброе время суток всем! Подскажите, как сделать, что прописать, чтобы при старте проекта указатель (или курсор) самостоятельно устанавливался на первую запись в базе? (вывожу поля таблицы в form1 в гриде).
(И дело не в сортировке или инкременте #).

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

Re: Идентификатор на первой записи

Еще вопрос:
Как сделать чтобы поиск осуществлялся не по полностью введенной фамилии, а по первым двум-трем буквам? Хочется например так: ищем Петров, набираем "пет" и  получаем в гриде сразу несколько похожих результатов, например Петров, Петровский, Петраков, Петюнина и т.д.

Re: Идентификатор на первой записи

добавляем к букве %? А если без процента, как нибудь в скрипте на кнопку поиск?

Re: Идентификатор на первой записи

zoomix wrote:

Доброе время суток всем! Подскажите, как сделать, что прописать, чтобы при старте проекта указатель (или курсор) самостоятельно устанавливался на первую запись в базе?

Так, при старте программы, будет выделена первая строка в гриде:

procedure Form1_OnShow (Sender: string; Action: string);
begin
   if Action = 'Start' then Form1.TableGrid1.dbItemID := 1;
end;

Re: Идентификатор на первой записи

zoomix wrote:

Еще вопрос:
Как сделать чтобы поиск осуществлялся не по полностью введенной фамилии, а по первым двум-трем буквам? Хочется например так: ищем Петров, набираем "пет" и  получаем в гриде сразу несколько похожих результатов, например Петров, Петровский, Петраков, Петюнина и т.д.

В свойствах компонента TextBox, который участвует в поиске, в пункте Filter выбрать %s%. Если ещё в пункте Increm.Search выбрать кнопку, на которую назначен поиск, то записи будут отображаться по мере набора.

Re: Идентификатор на первой записи

Спасибо! попробуем.

7 (edited by zoomix 2014-11-18 18:26:10)

Re: Идентификатор на первой записи

c %s% получилось все замечательно.
А вот с процедурой - пока вопрос.
У меня в скрипте уже есть процедура с именем

procedure Form1_OnShow (Sender: string; Action: string);
begin
   ....
end;


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


Могу я назвать в скрипте Form1_OnShow1

или же Form1_OnShow это закрепленное системное
имя и его менять нельзя?

8 (edited by zoomix 2014-11-18 18:53:35)

Re: Идентификатор на первой записи

В событиях ТableGrid1 нет OnShow, есть OnMouse, OnEnter, OnExit, OnClick и т.д. Как прикрутить процедуру OnShow, с какого места событий?

9 (edited by Serhij 2014-11-18 18:47:19)

Re: Идентификатор на первой записи

Form1_OnShow - в событиях главной формы. Такая процедура может быть только одна.
Просто добавьте в свою процедуру procedure Form1_OnShow (Sender: string; Action: string); эту строчку между begin и end;:
if Action = 'Start' then Form1.TableGrid1.dbItemID := 1;

Re: Идентификатор на первой записи

Вставил

Undeclared identifier Action

Его нужно объявить переменной?

11 (edited by zoomix 2014-11-18 19:13:52)

Re: Идентификатор на первой записи

Из Вашей строки
begin
if Action = 'Start' then Form1.TableGrid1.dbItemID := 1;
end;

оставил только:
Form1.TableGrid1.dbItemID := 1;

и вставил между уже существующим
begin
....
(вот сюда, в конец)
end
в моем Form1_OnShow

остальные варианты - дают ошибку. То у end в конце требует "." вместо ";"
то вылетает ошибка про какой-то handler и т.д.

Короче, все равно на 1 запись курсор так и встает, приходится кликать на запись мышкой...

12 (edited by Serhij 2014-11-18 19:34:08)

Re: Идентификатор на первой записи

А какая у Вас версия My Visual Database? Я использую последнюю бесплатную бету https://www.dropbox.com/s/30ysr48sd8ca4 … 6.zip?dl=0
У меня при запуске программы выделяется строка, которая указана в Form1.TableGrid1.dbItemID := 1; (в данном случае первая).
Должен быть таокй вид:

procedure Form1_OnShow (Sender: string; Action: string);
begin
   if Action = 'Start' then Form1.TableGrid1.dbItemID := 1;
   ***тут и далее Ваш код****
end;

И да, действие Start, которое срабатывает при запуске приложения, работает только на главной форме.

13 (edited by zoomix 2014-11-18 19:36:17)

Re: Идентификатор на первой записи

Пожертвовал своей старой процедурой и заново задал в событиях формы1 новый Form1_OnShow и вставил туда весь Ваш скрипт. Ошибки нет, но и не работает - не встает курсор на первую запись сам - надо кликать на нее...

14 (edited by zoomix 2014-11-18 19:42:14)

Re: Идентификатор на первой записи

у меня тоже 1.46 и грид с записями из полей таблицы располагается на форме1.

м.б. еще проблема в том, что я сижу под Убунтой и MVDB запускаю ч/з Wine (для запуска Windows приложений). Хотя все работает кроме этого злополучного указателя на первой записи.

Re: Идентификатор на первой записи

курсор вместо первой записи, по старту прыгает в текстбокс поиска и сидит, зараза там мигает... В принципе меня это тоже устраивает, но хотелось бы, чтобы при этом автоматом выделялась первая запись, т.к. рядом с гридом поле "фото", где каждой записи светятся фотки, а если поле не активно, то и фото - нет... sad(( Приходится щелкать после старта мышью, чтобы появилось.

Re: Идентификатор на первой записи

Должен быть таокй вид:

procedure Form1_OnShow (Sender: string; Action: string);
begin
   if Action = 'Start' then Form1.TableGrid1.dbItemID := 1;
   ***тут и далее Ваш код****
end;

Прописываю точно так, вылетает окошко с ошибкой:

"event handler must be a procedure"

Re: Идентификатор на первой записи

Скиньте свой проект. Проверю на Windows.

Re: Идентификатор на первой записи

zoomix
можете мне тоже отправить свой проект на support@drive-software.com
только опишите в письме все ваши вопросы по проекту, а то уже сложно понять в топике, что решено, а что нет smile


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

Dmitry.

Re: Идентификатор на первой записи

}{орошо, спасибо, сегодня скину. Насчет множества вопросов в одной теме - исправлюсь. Просто думал, наоборот, чтобы не засорять форум. А так действительно, хорошая мысль - отдельный вопрос, отдельная тема. Только нужно сделать несколько разделов в Russian, чтобы как-то их каталогизировать для того, чтобы искать возможный ответ на свой вопрос...

Re: Идентификатор на первой записи

Отправил Димитрию на почту

Serhij wrote:

Скиньте свой проект. Проверю на Windows.

Т.к. почты Serhij у меня нет, отправил сообщение ч/з сайт, но без прикрепленного вложения (не нашел такой возможности)