|
Вопрос # 2 525/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
у меня собственно такая ситуация: при входе запрашивается пароль. Если пароль совпадает с фамилией любого студента из типизированного файла, то разрешить просматривать данные, но запретить их редактировать.
Приложение: Переключить в обычный режим- type Tstudents = record
- ID_stud : word;
- Family : string[50];
- Name : string[50];
- end;
-
- var
- PasswordDlg: TPasswordDlg;
- stu: TStudents;
- Students : file of Tstudents;
-
- procedure TPasswordDlg.OKBtnClick(Sender: TObject);
- var i,j: integer; f:file of TStudents ;
- begin
-
- assignfile(f,'MarkList');
- Reset(f);
- for i:=1 to Form3.StringGrid1.RowCount-1 do
- begin
-
- j:=0;
- while(not Eof(f)) do
- begin
- j:=j+1;
- Read(f,stu);
- if (PasswordDlg.Password.text=stu.Family) then
- begin
- Form1.Show;
-
- Form2.stringGrid1.Options:=Form4.stringGrid1.Options-[goEditing];
- Form3.stringGrid1.Options:=Form4.stringGrid1.Options-[goEditing];
- end;
- end;
- end;
-
- if (passwordDlg.Password.Text='admin') then Form1.Show
- end;
 |
Вопрос задала: susumi (статус: Посетитель)
Вопрос отправлен: 15 марта 2009, 00:03
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, susumi!
Попробовал у себя - всё чудно компилируется. Да и должно оно.
Можно попробовать заменить исключение элемента с множества на альтернативную функцию.
Exclude(StringGrid1.Options, goEditing);//Для исключения свойства
Include(StringGrid1.Options, goEditing);//для включения
Но меня смущает другое - строка
Form2.stringGrid1.Options:=Form4.stringGrid1.Options-[goEditing];
Это так задумано, что гриды с разных форм? вообще то эта запись в контексте Вашей задачи странная. А вот здесь и может содержаться ошибка. Форма 2 (а может и 4) к этому моменту может быть не создана или уже удалена. И если это так, то произойдет ошибка во время исполнения. Какая ошибка у Вас возникает Вы не указали, так что всё возможно.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 15 марта 2009, 00:23
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 3; последнее сообщение — 15 марта 2009, 10:05; участников в обсуждении: 2.
|
susumi (статус: Посетитель), 15 марта 2009, 08:46 [#1]:
вы правильно сказали: у меня 4 формы и к каждой находится по StringGrid. если входит студент, то надо запрещать редактирование этих табл. Ошибка такая: [Error] Unit5.pas(51): Undeclared identifier: 'goEditing'... все создано правильно и без пароля прекрасно работает
|
|
Вадим К (статус: Академик), 15 марта 2009, 09:51 [#2]:
вот теперь мне понятна ошибка. И знаю решение. Наиболее просто исправить - поставьте на форму ввода пароля StringGrid. Скомпилируйте приложение, обязано скомпилироваться. Потом удалите лишний грид. (после компиляции запускать программу не нужно!)
Всё дело в том, что goEditing объявлен в юните, который не подключен к форму ввода пароля. Можно было конечно просто ручками его вписать в список uses, но я не помню по памяти точное имя, а может там и два нужно. А описанный выше нехитрым способом делфи сделает всё сама.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
susumi (статус: Посетитель), 15 марта 2009, 10:05 [#3]:
спасибо огромное все работает )
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|