Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 11.04.2012
Сообщений: 91
1

Undeclared identifier: 'CanClose'

29.04.2012, 21:22. Показов 2877. Ответов 10
Метки нет (Все метки)

Прикрутил MessageDlg ругается на CanClose, хотя OncloseQuerty инициированна. Что не так? По нажатию Yes форма должна закрыватся, по нажатию No должно происходить возвращение к форме.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Procedure IfSpace(Sender:TEdit);
Begin
  if Length(Sender.Text)=0 then
     if MessageDlg('Не все поля заполнены. Продолжить?', mtInformation, [mbYes,mbNo], 0)=mrYes then
    CanClose:=True
  else
    CanClose:=False;
End;
 
procedure TForm4.Button1Click(Sender: TObject);
var
 j: byte;
begin
 For j:=1 To 20 Do
    if Length((FindComponent('Memo' + IntToStr(j)) as TMemo).Text)=0 then
  Begin
    if MessageDlg('Не все поля заполнены. Продолжить?', mtInformation, [mbYes,mbNo], 0)=mrYes then
    CanClose:=True
  else
    CanClose:=False;
    Exit;
  End;
    Form4.Close;
end;
 
 
procedure TForm4.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose:=(MessageBox(Handle, PChar('Завершить ввод данных по объкту?'), PChar('Внимание!'),
                        MB_OKCANCEL or MB_ICONINFORMATION)=IDOK);
end;
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2012, 21:22
Ответы с готовыми решениями:

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

Undeclared identifier: 'self'
При компиляции ругается на Self. procedure opendialogEx(TextDialog:String); var...

Undeclared Identifier
Здравствуйте! Есть модуль для работы с комплексными числами Mathematix.Complex. Необходимо...

Undeclared identifier: 'x'
procedure TForm1.btn1Click(Sender: TObject); var x,y: real; begin x:=StrToFloat(Edt1.Text); ...

10
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31785 / 20706 / 8044
Регистрация: 22.10.2011
Сообщений: 35,899
Записей в блоге: 7
29.04.2012, 21:28 2
CanClose существует только внутри FormCloseQuery, извне этот параметр недоступен. Проверять возможность закрытия формы надо тогда, когда УЖЕ было запрошено закрытие, а не до этого (то есть, именно в CloseQuery).
0
1084 / 570 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
29.04.2012, 21:32 3
У меня все работает
Delphi
1
2
3
4
5
6
procedure TForm6.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=MessageBox(Handle, PChar('Завершить ввод данных по объкту?'), PChar('Внимание!'),
                        MB_OKCANCEL or MB_ICONINFORMATION)=IDOK;
  
end;
А увидел в чем дело. Ну UI все уже сказал
0
0 / 0 / 1
Регистрация: 11.04.2012
Сообщений: 91
29.04.2012, 21:33  [ТС] 4
Если можно для нубаса поподробнее я так понимаю что необходимо что то перенести в FormCloseQuery, но саму проверку мемок не перести так как по нажатию кнопки Ok закрывается форма и соответственно перед проверяются мемки Но даже если перенести будет ругатся на тоже в Procedure IfSpace(Sender:TEdit); если и ее в FormCloseQuery запихать, каламбур какой то получитсо

Добавлено через 47 секунд
antikiler
Выдает: Undeclared identifier: 'CanClose'
сама FormCloseQuery работает ругается на выше на
Delphi
1
2
3
4
if MessageDlg('Не все поля заполнены. Продолжить?', mtInformation, [mbYes,mbNo], 0)=mrYes then
    CanClose:=True
  else
    CanClose:=False;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31785 / 20706 / 8044
Регистрация: 22.10.2011
Сообщений: 35,899
Записей в блоге: 7
29.04.2012, 21:40 5
Ну, скажем, я бы сделал проверку как-то так:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure IfSpace(Sender : TEdit);
begin
   result := Length(Sender.Text) = 0;
end;
 
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
   bEmpty : Boolean;
begin
   bEmpty := False; // В начале допустим, что нет пустых полей
 
   // Проверим, что же происходит в действительности.
   for i := 1 to 20 do
      bEmpty := bEmpty or (Length((FindComponent('Memo' + IntToStr(i)) as TMemo).Text) = 0);
 
   if bEmpty then // Что-то осталось незаполненным !!!
      CanClose := MessageBox(Handle, PChar('Не все поля заполнены. Закрыть форму?'),
                  PChar('Внимание!'), MB_OKCANCEL or MB_ICONWARNING) = IDOK
   else // Все поля заполнены. Просто предупреждаем, что форма закроется
      CanClose := MessageBox(Handle, PChar('Завершить ввод данных по объекту?'),
                  PChar('Внимание!'), MB_OKCANCEL or MB_ICONINFORMATION) = IDOK;
end;
0
0 / 0 / 1
Регистрация: 11.04.2012
Сообщений: 91
29.04.2012, 21:47  [ТС] 6
Немного не понял что за result

ибо... [Error] Unit4.pas(61): Undeclared identifier: 'result'
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31785 / 20706 / 8044
Регистрация: 22.10.2011
Сообщений: 35,899
Записей в блоге: 7
29.04.2012, 21:53 7
Стоп... Это Функция:
Delphi
1
2
3
4
Function IfSpace(Sender : TEdit) : Boolean;
begin
   Result := Length(Sender.Text) = 0;
end;
1
1084 / 570 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
29.04.2012, 21:58 8
UI,
Это же процедура, параметры возврощаются только через var
А для функции да, через имя процедуры и через result
А... уже заметил.
1
0 / 0 / 1
Регистрация: 11.04.2012
Сообщений: 91
29.04.2012, 22:25  [ТС] 9
Delphi
1
2
3
4
Function IfSpace(Sender : TEdit): Boolean;
begin
   Result := Length(Sender.Text) = 0;
end;
Ток теперь даже када все поля заполнены выдает шо не заполнены

Добавлено через 27 минут
Тема еще актуальна
0
1084 / 570 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
29.04.2012, 22:44 10
Delphi
1
2
3
4
Function IfSpace(Sender : TEdit): Boolean;
begin
   Result := Length(Sender.Text) <> 0;
end;
1
0 / 0 / 1
Регистрация: 11.04.2012
Сообщений: 91
29.04.2012, 23:08  [ТС] 11
Попрежднему в независимости от того заполнены поля или нет выдает что незаполнены и спрашивает продолжить или нет

Добавлено через 17 минут
Я кретин сему можно закрыть всем сяп на форме были Memo1-Memo18 и Memo 32 Memo 33 Весь мозг се сломал
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2012, 23:08
Помогаю со студенческими работами здесь

Undeclared identifier: 'TFrmGrafik'
не могу понять что тут не правильно? ошибка frmGrafFuncUnit.pas(29): Undeclared identifier:...

Undeclared identifier: 'SaveDialog1'
Я пытался сформировать отчёт в формате DOC, но выдает ошибку:&quot;undeclared identifier:...

Undeclared identifier в Delphi
unit frmGrafUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

Классы, undeclared identifier
Задача: Описать класс «комната», содержащий сведения о метраже, высоте потолков и количестве...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru