powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос по Grid
32 сообщений из 32, показаны все 2 страниц
Вопрос по Grid
    #33225422
travek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делаю поиск в таблице, нахожу запись. RECNO()=8 (к примеру). На форме есть Grid. Как реализовать, что бы курсор в гриде перемещался на указанную запись. У Grid RecordSource=table1
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225429
travek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да,забыл ещё спросить. Перемещаясь по Grid мне ещё потребуется перемещаться в таблице. Как это организовать. К примеру,переместились в Grid на 2 строки в низ и Recno() увелицился на 2 в соответствующей таблице
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225510
5631
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавь ThisForm.Grid1.Refresh
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225564
travek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я немного не понял. Если я просто вставляю в код grid.Refresh то ничего не происходит. Проясню ситуацию. У меня есть форма, на которой размещён Грид. Ьам есть кнопка. При её нажатии открывается новая форма с текстовым полем, в котором указываешь фамилию и делаешь поиск. У меня правильно находится запись, но вот курсор в первойформе в гриде никуда не перемещаетсят и вообще не появляется!
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225595
Проходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сразу после нахождения записи надо нарисовать что-то вроде Твоя_первая_форма.grid1.refresh()
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225606
travek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот такой код ничего не делает!

SELECT "test1"
GO TOP IN test1
LOCATE FOR test1.name=ALLTRIM(thisform.text1.value)
frm1.Grid1.Refresh()
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225650
sar99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
добавь еще в конец кода:
frm1.grid1.setfocus()
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225664
travek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавил! Теперь устанавливает курсор на первую запись, но никак не на нужную!!!
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225684
sar99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> курсор устанавливается на 1 - ю запись
значит при возвращении в frm1 где то есть go top
(может в activate формы ?)
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225710
travek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Go top нигде не нашёл. Я код опубликую, может где ошибка какая.
Главная программа

DO FORM "form2" NAME frm1
DROP TABLE "test1"
SELECT name,p_ser,p_nom, adres from db_path+"vk_klie.dbf" INTO TABLE test1
frm1.Grid1.ColumnCount=4
frm1.Grid1.RecordSourceType=0
frm1.Grid1.RecordSource="test1"
frm1.Grid1.AutoFit()
frm1.Grid1.Column1.Header1.Caption="xxx"
frm1.Grid1.Column2.Header1.Caption="yyy"
frm1.Grid1.Column3.Header1.Caption="zzz"
frm1.Grid1.Column4.Header1.Caption="aaa"

READ EVENTS

Код кнопки формы, которую вызываю:
SELECT "test1"
GO TOP IN test1
LOCATE FOR test1.name=ALLTRIM(thisform.text1.value)
GO RECNO() IN "test1"
frm1.Grid1.Refresh()
frm1.Grid1.setfocus()
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225742
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что то наподобие этого
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT "test1"
LOCATE FOR test1.name=ALLTRIM(thisform.text1.value)
if !Found()
   messagebox('Запись не найдена')
endif 
_screen.ActiveForm.refresh()
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225758
sar99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А зачем эта строка?
GO RECNO() IN "test1"
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225759
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл поставить вконце
thisform.grid1.setfocus() &&Для получения фокуса
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225772
travek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to GoshaS
ваш вариант
_screen.ActiveForm.refresh()
не подходит, т.к. активная форма не та, на которой находится грид.
А вот такой код:
SELECT "test1"
GO TOP IN test1
LOCATE FOR test1.name=ALLTRIM(thisform.text1.value)
frm1.Grid1.Refresh()
frm1.Grid1.setfocus()
thisform.Release
всё так же устанавливает курсор на первую запись в таблице
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225783
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю что нужно убрать эту строчку GO TOP IN test1.
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225795
travek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если убрать результат одинаковый
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225798
sar99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не знаю как установлены set для сравнения строк,поэтому
для строгости надо:
LOCATE FOR ALLTRIM(test1.name)==ALLTRIM(thisform.text1.value)
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225800
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почитай статью В.Гринчишина про грид на Foxclub.ru
Там много очень полезных вещей хотя к 9 многие проблемы грида решены
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225816
Фотография бендер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а у тя таблица случаеи не под фильтром??? могет реляция какая, или set key ...
в общем точно погляди....... или запись там заблокированна нужная тебе....
--------------
И это пройдет...
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225817
travek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to sar99
Он правильно находит запись. Если указать messagebox(RECNO()) то там будет правильный номер!!!!! А вот Гриде он никак не перемещае курсор. В чём затуп - не пойму!!!
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225820
travek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to бендер
Практикиу меня не сильно много. Как посмотреть под фильтром ли таблицаа или нет???
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225830
sar99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
для тестирования поставь в кнопке после locate
brow (точно проверишь установку маркера курсора!)
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225839
travek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поставил browse
Как я и говорил.... Всё устанавливается!!!! Только не в Гриде!!!
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225857
sar99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все же внимательно посмотри на события grid
(в конструкторе формы кликни на grid - измененные события выделяются
жирным текстом)
может где-то стоит go top
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225860
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GO TOP IN test1
GO RECNO() IN "test1"
однозначно в данном коде не нужны
в Load Init Refresh формы и грида что нибудь прописано?
***
Да и в поиске лучше приводить к одному регистру, скажем:
LOCATE FOR lower(ALLTRIM(test1.name))==lower(ALLTRIM(thisform.text1.value))
если задать не "==" , а "=" тогда, в зависимости он настроек, скажем
аааа=а будет истинно, бывает даже удобней, не надо вбивать полностью фамилию.
***********
FILTER() && Возвращает выражение фильтра таблицы
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225879
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*И форму лучше запускать
puplic form1
DO Form form1 NAME form1 LINKED
*Тогда к форме можно будет однозначно обращаться по имени, попробуй
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33225901
travek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня заработало... Я только прошу вас помочь мне понять, в чём было не так. Итак вот с этим кодом работает:

DROP TABLE "test1"
SELECT name,p_ser,p_nom, adres from db_path+"vk_klie.dbf" INTO TABLE test1
CLOSE TABLES
DO FORM "c:\Documents and Settings\alexx\Ìîè äîêóìåíòû\Visual FoxPro Projects\proj1\form2" NAME frm1
frm1.Grid1.ColumnCount=4
frm1.Grid1.RecordSourceType=0
frm1.Grid1.RecordSource="test1"
frm1.Grid1.AutoFit()
frm1.Grid1.Column1.Header1.Caption="ÔÈÎ"
frm1.Grid1.Column2.Header1.Caption="Ñåðèÿ Ï."
frm1.Grid1.Column3.Header1.Caption="Íîìåð Ï."
frm1.Grid1.Column4.Header1.Caption="Àäðåñ"

Код, где поиск
SELECT "test1"
GO TOP IN test1
LOCATE FOR test1.name=ALLTRIM(thisform.text1.value)
frm1.Grid1.Refresh()
frm1.Grid1.setfocus()
thisform.Release

А вот с этим кодом не работает:
DROP TABLE "test1"
SELECT name,p_ser,p_nom, adres from db_path+"vk_klie.dbf" INTO TABLE test1
DO FORM "c:\Documents and Settings\alexx\Ìîè äîêóìåíòû\Visual FoxPro Projects\proj1\form2" NAME frm1
frm1.Grid1.ColumnCount=4
frm1.Grid1.RecordSourceType=0
frm1.Grid1.RecordSource="test1"
frm1.Grid1.AutoFit()
frm1.Grid1.Column1.Header1.Caption="ÔÈÎ"
frm1.Grid1.Column2.Header1.Caption="Ñåðèÿ Ï."
frm1.Grid1.Column3.Header1.Caption="Íîìåð Ï."
frm1.Grid1.Column4.Header1.Caption="Àäðåñ"

Различие в том что я добавил close tables. И всё заработало. В чём причина??? Может ошибка серьёзней, чем мне кажется?
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33226039
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DROP TABLE
зачем удалять таблицу из Базы (Removes a table from the current database and deletes it from disk) затем записывать кудато новую свободную таблицу?
Как потом будет применятся данная таблица?
****
Ведь можно к гриду привязать сразу нужную таблицу (db_path+"vk_klie.dbf")
затем по таблице сделать поиск и пр. без каких либо посредников
Можно к гриду и результат запроса подцепить.
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33226257
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НЕ НАДО устанавливать

Grid.RecordSourceType = 0 - Table

Оставьте настройку по умолчанию

Grid.RecordSourceType = 1 - Alias

Включите эту таблицу в DataEnvironment-формы и больше не мучайтесь. Ну, или вручную открывайте эту таблицу в LOAD-формы.
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33226331
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы сделал несколько иначе:
Код: plaintext
1.
public form1
DO Form form1 NAME form1 LINKED

Пытаемся запустить форму
В форме, в Load открываем нужную таблицу, если таблица не открыта или не удается открыть,
Код: plaintext
RETURN .F.

форма не откроется
Дальше варианты: если нужен результат запроса:
Init формы
Код: plaintext
1.
2.
3.
4.
5.
thisform.grid1.RecordSource=''
thisform.grid1.RecordSourceType=  4  
gr_source='SELECT name,p_ser,p_nom, adres from vk_klie INTO Cursor c_test1'
thisform.grid1.RecordSource=gr_source
thisform.grid1.SetFocus() 

после этого все обращения к курсору c_test1

или

просто таблицу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 
WITH thisform.grid1
   .RecordSourceType=  1  
   .Column1.ControlSource=vk_klie.name
   ****
   .Column4.ControlSource=vk_klie.adres
   .SetFocus() 
ENDWITH 

(Так же можно все сделать в конструкторе форм.)

PS
На истину в последней инстанции не претендую :)
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33226382
GrayFox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a ya dumayu tak
v Load formu postavit :
public nRecn


DO FORM "form2" NAME frm1
DROP TABLE "test1"
SELECT name,p_ser,p_nom, adres from db_path+"vk_klie.dbf" INTO TABLE test1
frm1.Grid1.ColumnCount=4
frm1.Grid1.RecordSourceType=0
frm1.Grid1.RecordSource="test1"
frm1.Grid1.AutoFit()
frm1.Grid1.Column1.Header1.Caption="xxx"
frm1.Grid1.Column2.Header1.Caption="yyy"
frm1.Grid1.Column3.Header1.Caption="zzz"
frm1.Grid1.Column4.Header1.Caption="aaa"

READ EVENTS

Код кнопки формы, которую вызываю:
SELECT "test1"
GO TOP IN test1
LOCATE FOR test1.name=ALLTRIM(thisform.text1.value)
nRecn =Recno()
frm1.Grid1.Refresh()
frm1.Grid1.setfo

cus()
...
Рейтинг: 0 / 0
Вопрос по Grid
    #33226646
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если этот код будет выполнятся не один раз?
Удалил из БД таблицу и создал свободную таблицу, не воходящую в БД с тем же именем в каталоге, выбранном в данный момент поумоляанию.
При повторном запуске , команда DROP TABLE test1 - выдаст ошибку, т.к. не сможет найти в БД таблицы с именем "test1".
А если эта таблица временная , тогда зачем ее туда (в БД) помещать?
И вообще зачем ее создавать? Если нам просто в таблице vk_klie необходимо найти некоторого клиента? Там ведь можно будет и индексами воспользоваться (если создать конечно), тогда и поиск будет осуществляться быстрей SEEK().
Да и в формате поиска надобно к общему регистру приводить. Можно попробовать в окне комманд ввести:
? 'Aaa'='aaa' и получить .F.
Для Locate не надо предварительно уходить в начало таблицы, она и так будет искать от туда, сама по себе. Можно это экспериментально посмотреть. Будет наглядно видно :) И если найдет запись, то там и остановится, при этом Recno() выдаст номер найденой записи, а found() выдаст .T., получается запомнить номер текущей записи и идти к ней же - к текущей записи!?
IMHO не правельно это все изначально, проще надо быть :)
Хотя хозяин-барин...
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос по Grid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]