Memo поле и открытие файла

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by LAGOX, 15 Mar 2009.

  1. LAGOX

    LAGOX New Member

    Joined:
    13 Feb 2009
    Messages:
    22
    Likes Received:
    2
    Reputations:
    -1
    Всем доброго времени суток.
    Пишу я значит текстовый редактор. В меню Файл у меня есть стандартные подменю(новый,открыть,сохранить, сохранить как, закрыть, выход).
    Я реализовал кнопку закрыть путем такого кода:
    Code:
      vvod.Free;
    
    где vvod-это имя memo поля.
    Далее я реализовал кнопку новый вот таким путем:
    Code:
      vvod:=tmemo.create(self);
      vvod.Parent:=form1;//родитель
      vvod.Show;//показываем поле
      vvod.Align:=alClient;//выравниваем
    
    Это было предисловие, а теперь собственно вопрос. При закрытии мемо поля, и после нажатия кнопки "Открыть" вылетает ошибка и указывает вот сюда(на эту строчку кода):
    Code:
    vvod.Lines.LoadFromFile(OpenDialog1.FileName);
    
     
  2. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    Code:
    if OpenDialog1.Execute then
    vvod.Lines.LoadFromFile(OpenDialog1.FileName);
     
  3. LAGOX

    LAGOX New Member

    Joined:
    13 Feb 2009
    Messages:
    22
    Likes Received:
    2
    Reputations:
    -1
    у меня так и написанно, я просто указал ту строчку куда именно падает ошибка
     
  4. Flame of Soul

    Flame of Soul Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    185
    Likes Received:
    146
    Reputations:
    45
    а во что открывать если в тот момент поле vvod не существует?
    я так поняла после закрытия вы освободили его, то собственно при открытии вы должны его снова создать.

    И если у вас всего один объект класса TMemo- vvod, т.е. не надо переключатся между ними почему бы просто вместо закрытия не сделать:

    PHP:
    vvod.lines.clear;
    vvod.visible:=false;
    вместо создать:
    PHP:
    vvod.lines.clear;
    vvod.visible:=true;
    вместо открыть:

    PHP:
    vvod.lines.clear;
    vvod.visible:=true;
    if 
    Opendialog.execute then vvod.lines.LoadFromfile(OpenDialog.FileName);
     
    #4 Flame of Soul, 15 Mar 2009
    Last edited: 15 Mar 2009
    1 person likes this.
  5. LAGOX

    LAGOX New Member

    Joined:
    13 Feb 2009
    Messages:
    22
    Likes Received:
    2
    Reputations:
    -1
    спасибо, так и сделал=)