Помогите пожалуйста с Turbo Vision! Мне нужно сделать информационно-справочную систему... да не важно... В общем процедура Open не работает! Можете посмотреть, пожалуйста, в чем проблема?
Programname;
uses crt,app,objects,menus,drivers,views,StdDlg,DOS;
const cmwork=203;
cmdos=204;
wincoml:tcommandset=[cmsave,cmwork];
type tnotebook=object(tapplication)
Procedure initmenubar;
virtual;
Procedure initstatusline;
virtual;
Procedure HandleEvent(var Event:TEvent);
virtual;
Procedure initstatussline;
virtual;
end;
Procedure tnotebook.initmenubar;
var r:trect;
begin
getextent(r);
r.b.y:=succ(r.a.y);
menubar:=new(pmenubar,
init(r,
newmenu(
newsubmenu('~F~/ File',hcnocontext,
newmenu(
newitem('~1~/ Open','F3',kbF3,cmOpen,hcnocontext,
newitem('~2~/ Close','F2',kbF2,cmsave,hcnocontext,
newitem('~3~/ Change disk','',0,cmchangedir,hcnocontext,
newline(
newitem('~4~/ Shell DOS','',0,cmdosshell,hcnocontext,
newitem('~5~/ Exit','Alt-X',kbAltX,cmquit,hcnocontext,
nil))))))),
newitem('~W~/ Work','',kbF4,cmWork,hcnocontext,nil)))))
end;
Procedure tnotebook.initstatusline;
var r:trect;
begin
getextent(r);
r.a.y:=pred(r.b.y);
statusline:=new(pstatusline,
init(r,
newstatusdef(0,$FFFF,
newstatuskey('~Alt-X~ Exit',kbAltX,cmQuit,
newstatuskey('~F2~ Close',kbF2,cmSave,
newstatuskey('~F3~ Open',kbF3,cmOpen,
newstatuskey('~F4~ Work',kbF4,cmWork,
newstatuskey('~F10~ Menu',kbF10,cmMenu,nil))))),nil)));
disablecommands(wincoml);
end;
Procedure tnotebook.initstatussline;
var r:trect;
begin
getextent(r);
r.a.y:=pred(r.b.y);
statusline:=new(pstatusline,
init(r,
newstatusdef(0,$FFFF,
newstatuskey('~Alt-X~ Exit',kbaltx,cmquit,
newstatuskey('~F10~ Close',kbf10,cmclose,nil)),nil)));
end;
Procedure FileOpen;
var PF:PFileDialog;
Control:Word;
s:PathStr;
begin
New(PF,Init('*.dat','Vuberute nuzhnuy file:','Imya fayla',fdOpenButton,0));
Control:=DeskTop.ExecView(PF);
case Control of
StdDlg.cmFileOpen,cmOk:
begin
PF.QetFileName(s);
end;
end;
Dispose(PF,Done)
end;
end;
Procedure FileSave;
beginend;
Procedure ChangeDir;
beginend;
Procedure DOSCall;
beginend;
Procedure Work;
beginend;
Procedure TNotebook.HandleEvent(var Event:TEvent);
beginInherited HandleEvent(event);
if Event.What=evCommand thencase Event.Command of
cmOpen:FileOpen;
cmSave:FileSave;
cmChangeDir:ChangeDir;
cmDOSShell:DOSCall;
cmWork:Work
else exit;
end;
ClearEvent(Event);
end;
{-------------------------------------------------------------------------}var notebook:tnotebook;
begin
clrscr;
notebook.init;
notebook.run;
notebook.done;
end.
volvo
14.04.2007 16:12
Цитата
В общем процедура Open не работает!
А должна? У тебя тут есть несколько недочетов:
1. Если ты работаешь с TVision, то про модуль CRT можешь забыть, он тебе не нужен... Убери его описание из Uses, и clrscr тоже убери... То же самое касается и модуля DOS... 2. Забыл добавить в uses менеждер памяти TVision: модуль Memory, добавь обязательно... 3. Ну, и наконец:
Type
TNoteBook = Object(TApplication)
Constructor Init; { <--- Добавляешь }
...
Procedure FileOpen; { <--- Добавляешь, это должно быть методом }End;
{ Определяешь конструктор }Constructor TNoteBook.Init;
Begin
MaxHeapSize := 8192;
EditorDialog := StdEditorDialog;
Inherited Init;
End;
{ И переписываешь метод FileOpen }Procedure TNotebook.FileOpen;
Var
R: TRect;
FileDialog: PFileDialog;
TheFile: FNameStr;
Const
FDOptions: Word = fdOKButton or fdOpenButton;
Begin
TheFile := '*.DAT';
New(FileDialog, Init(TheFile, 'Vuberute nuzhnuy file:', 'Imya fayla', FDOptions, 1));
If ExecuteDialog(FileDialog, @TheFile) <> cmCancel ThenBegin
R.Assign(0, 0, 75, 20);
InsertWindow(New(PEditWindow, Init(R, TheFile, wnNoNumber)));
End;
End;
Это откроет тебе твой DAT-файл как обычный текстовый... Больше ничем помочь не могу, потому что структуры файла я не знаю...
Dimon
14.04.2007 16:17
OK! Спасибо!
Dimon
14.04.2007 16:43
Вот, дописал, а оно мне пишет: EditorDialog Unknown Identifier