Помогите пожалуйста с Turbo Vision! Мне нужно сделать информационно-справочную систему... да не важно... В общем процедура Open не работает! Можете посмотреть, пожалуйста, в чем проблема?
Program name; uses crt,app,objects,menus,drivers,views,StdDlg,DOS; const cmwork=203; cmdos=204; wincoml:tcommandset=[cmsave,cmwork]; type tnotebook=object(tapplication)
Procedure tnotebook.initstatussline; var r:trect; begin getextent®; 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; begin end;
Procedure ChangeDir; begin end;
Procedure DOSCall; begin end;
Procedure Work; begin end;
Procedure TNotebook.HandleEvent(var Event:TEvent); begin Inherited HandleEvent(event); if Event.What=evCommand then case 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;
{ И переписываешь метод 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 Then Begin 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
type tnotebook=object(tapplication)
constructor init;
Procedure initmenubar; virtual;
Procedure initstatusline; virtual;
Procedure HandleEvent(var Event:TEvent); virtual;
Procedure initstatussline; virtual;
Procedure FileOpen; end;
Constructor TNoteBook.Init; Begin MaxHeapSize:=8192; EditorDialog:=StdEditorDialog; Inherited Init; end;
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 then begin R.Assign(0,0,75,20); InsertWindow(New(PEditWindow, Init(R,TheFile,wnNoNumber))); end; end;
Procedure FileSave; begin end;
Procedure ChangeDir; begin end;
Procedure DOSCall; begin end;
Procedure Work; begin end;
Procedure TNotebook.HandleEvent(var Event:TEvent); begin Inherited HandleEvent(event); if Event.What=evCommand then case Event.Command of cmOpen:FileOpen; cmSave:FileSave; cmChangeDir:ChangeDir; cmDOSShell:DOSCall; cmWork:Work else exit; end; ClearEvent(Event); end;
{-------------------------------------------------------------------------} var notebook:tnotebook; begin notebook.init; notebook.run; notebook.done; end.