ComboBox в Grid

Добрый день!
Помогите разобраться с двумя вопросами.
Первое. Решил сделать пример включения ComboBox в Grid.
Есть таблица-словарь по институтам: код, наименование краткое, наименование полное:
[code]CREATE CURSOR Institut (Kod I AUTOINC, Name_Kurz C(20), Name_Full C(100))[/code]
И основная таблица сотрудников: код, ссылка на институт, другие поля:
[code]CREATE CURSOR Sotrudniki (Kod i AUTOINC, Name C(30), Institut I, God C(4))[/code]
Я хочу, чтобы в Grid отображалось краткое наименование института, при вводе в ComboBox – полное наименование института, а сохранялся код института.
Вроде всё получилось, кроме одного. В только что добавленной строке после покидания клетки ввода отображается пустота. Краткое наименование института отображается после добавления новой записи.
Второе. Для иллюстрации того, что я сделал (каким свойствам какие присвоил значения), я с помощью программы foxbin2prg.exe перевёл форму из .VCX в текстовый вид. Получилось следующее:
[code]
DEFINE CLASS form1 AS form
AutoCenter = .T.
Caption = "Form1"
DoCreate = .T.
Height = 359
Name = "FORM1"
Width = 659
WindowType = 1
ADD OBJECT 'CommAdd' AS commandbutton WITH ;
Caption = "Добавить", ;
FontCharSet = 204, ;
FontSize = 12, ;
Height = 48, ;
Left = 512, ;
Name = "CommAdd", ;
Top = 84, ;
Width = 109
ADD OBJECT 'CommExit' AS commandbutton WITH ;
Cancel = .T., ;
Caption = "Выйти", ;
FontCharSet = 204, ;
FontSize = 12, ;
Height = 48, ;
Left = 513, ;
Name = "CommExit", ;
Top = 217, ;
Width = 109
ADD OBJECT 'Grid1' AS grid WITH ;
ColumnCount = 3, ;
FontCharSet = 204, ;
FontSize = 12, ;
Height = 253, ;
Left = 48, ;
Name = "Grid1", ;
RecordSource = "Sotrudniki", ;
RowHeight = 22, ;
Top = 48, ;
Width = 445, ;
Column1.ControlSource = "Sotrudniki.Name", ;
Column1.FontCharSet = 204, ;
Column1.FontSize = 12, ;
Column1.Name = "Column1", ;
Column1.Width = 180, ;
Column2.Bound = .F., ;
Column2.ControlSource = "Institut.Name_Kurz", ;
Column2.CurrentControl = "Combo1", ;
Column2.FontCharSet = 204, ;
Column2.FontSize = 12, ;
Column2.Name = "Column2", ;
Column2.Width = 120, ;
Column3.ControlSource = "Sotrudniki.God", ;
Column3.FontCharSet = 204, ;
Column3.FontSize = 12, ;
Column3.Name = "Column3", ;
Column3.Width = 75
* <<<<<<
ADD OBJECT 'Grid1.Column1.Header1' AS header WITH ;
Caption = "Фамилия", ;
FontCharSet = 204, ;
FontSize = 12, ;
Name = "Header1"
ADD OBJECT 'Grid1.Column1.Text1' AS textbox WITH ;
BorderStyle = 0, ;
FontCharSet = 204, ;
FontSize = 12, ;
Margin = 0, ;
Name = "Text1"
ADD OBJECT 'Grid1.Column2.Combo1' AS combobox WITH ;
BoundColumn = 3, ;
BoundTo = .T., ;
ColumnCount = 3, ;
ColumnWidths = "0,600,0", ;
ControlSource = "Sotrudniki.Institut", ;
FontCharSet = 204, ;
FontSize = 12, ;
Height = 24, ;
Left = 28, ;
Name = "Combo1", ;
RowSource = "select Name_Kurz,Name_Full,Kod from Institut into cursor a1", ;
RowSourceType = 3, ;
Style = 2, ;
Top = 59, ;
Width = 100
ADD OBJECT 'Grid1.Column2.Header1' AS header WITH ;
Caption = "Институт", ;
FontCharSet = 204, ;
FontSize = 12, ;
Name = "Header1"
ADD OBJECT 'Grid1.Column2.Text1' AS textbox WITH ;
BorderStyle = 0, ;
FontCharSet = 204, ;
FontSize = 12, ;
Margin = 0, ;
Name = "Text1", ;
Visible = .T.
ADD OBJECT 'Grid1.Column3.Header1' AS header WITH ;
Caption = "Год", ;
FontCharSet = 204, ;
FontSize = 12, ;
Name = "Header1"
ADD OBJECT 'Grid1.Column3.Text1' AS textbox WITH ;
BorderStyle = 0, ;
FontCharSet = 204, ;
FontSize = 12, ;
Margin = 0, ;
Name = "Text1"
*>>>>>>>
PROCEDURE Load
* --- Словарь институтов
CREATE CURSOR Institut (Kod I AUTOINC, Name_Kurz C(20), Name_Full C(100))
INSERT INTO Institut (Name_Kurz, Name_Full) VALUES ;
('МИНХ и ГП', 'Московский институт нефтехимической и газовой промышленности')
INSERT INTO Institut (Name_Kurz, Name_Full) VALUES ;
('МИИТ', 'Московский институт инженеров транспорта')
INSERT INTO Institut (Name_Kurz, Name_Full) VALUES ;
('ВГИК', 'Всесоюзный государственный институт кинематографии')
INSERT INTO Institut (Name_Kurz, Name_Full) VALUES ;
('МИФИ', 'Московский инженерно-физический институт')
INDEX ON Kod TAG Kod
SET ORDER TO TAG Kod
* --- Сотрудники
CREATE CURSOR Sotrudniki (Kod i AUTOINC, Name C(30), Institut I, God C(4))
INDEX ON Kod TAG Kod
SET ORDER TO TAG Kod
SET RELATION TO Institut INTO Institut
ENDPROC
PROCEDURE Unload
SELECT a1
USE
SELECT Sotrudniki
USE
SELECT Institut
USE
ENDPROC
PROCEDURE CommAdd.Click
SELECT Sotrudniki
APPEND BLANK
ThisForm.Grid1.SetFocus
ENDPROC
PROCEDURE CommExit.Click
browse
ThisForm.Release
ENDPROC
ENDDEFINE
[/code]
Но использовать это не удаётся. Все команды между угловыми комментариями выдают ошибку: «Объект GRID1 не найден».
Что я делаю неправильно? Можно ли программным способом определить класс формы с Grid и определить все нужные свойства Grid?

0

Автор публикации

Пользователи не найдены
Оставить комментарий
Авторизация
*
*
Генерация пароля