IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Turbo Vision, Не работает процедура Open
-Dimon-FX-
сообщение 14.04.2007 11:31
Сообщение #1


Гость






Помогите пожалуйста с 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 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;
        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.

 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 5)
volvo
сообщение 14.04.2007 12:12
Сообщение #2


Гость






Цитата
В общем процедура 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 Then Begin
    R.Assign(0, 0, 75, 20);
    InsertWindow(New(PEditWindow, Init(R, TheFile, wnNoNumber)));
  End;
End;

Это откроет тебе твой DAT-файл как обычный текстовый... Больше ничем помочь не могу, потому что структуры файла я не знаю...
 К началу страницы 
+ Ответить 
Dimon
сообщение 14.04.2007 12:17
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Dimon

Репутация: -  0  +


OK! Спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Dimon
сообщение 14.04.2007 12:43
Сообщение #4





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Dimon

Репутация: -  0  +


Вот, дописал, а оно мне пишет: EditorDialog Unknown Identifier blink.gif

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.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 14.04.2007 13:00
Сообщение #5


Гость






Uses должен выглядеть вот так:
uses
  app, objects, menus, drivers, views, editors, StdDlg, memory;


Ты наверняка не включил Editors...
 К началу страницы 
+ Ответить 
Dimon
сообщение 14.04.2007 13:24
Сообщение #6





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Dimon

Репутация: -  0  +


Да! Теперь работает. Спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 26.07.2025 9:32
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"