Aplikacja MDI - problem z onCreate

0

Witam.
W onCreate formy MDIChild mam taki kod:

procedure Tkonsola.FormCreate(Sender: TObject);
begin
  SQLColor:= TSynSQLSyn.Create(konsola);

  SynEdit2:= TSynEdit.Create(konsola);
  with SynEdit2 do
  begin
    Parent:= konsola;
    Anchors:= [akLeft, akRight,akBottom];
    Text:= '';
    Align:= alBottom;
    Height:= Konsola.Height - 175;
    Gutter.Visible:= False;
    RightEdge:= 0;
    Highlighter:= SQLColor;
    WordWrap:= True;
    TabOrder:=0;
    WantReturns:= False;
    Options:= [eoAutoIndent,eoDragDropEditing,eoEnhanceEndKey,eoGroupUndo,eoRightMouseMovesCursor,eoShowScrollHint];
    KeyStrokes.Delete(Keystrokes.FindShortcut(vk_return));
    onKeyPress:= SynEdit2KeyPress;
  end;

W menu formę wywołuję tym kodem:

  konsola:= Tkonsola.Create(Form1);
  konsola.Show;

I wszystko skutkuje błędem Access Violation na lini z:
Height:= Konsola.Height - 175;
gdzie Konsola to ta forma.

Dodam, że gdy usunę z formy właściwość Formstyle: MDIChild to wszystko jest ok.
Jak temu zaradzić?

0

możesz wytłumaczyć czemu w konstruktorze obiektu odwołujesz się do zmiennej, do której dopiero przypisujesz tenże tworzony obiekt??? Po co to i co to ma dać w efekcie?

0

Access violation (naruszenie praw dostępu) masz, ponieważ (tak myślę) podczas tworzenia formy, nie można ustawić jej rozmiaru.

0

Jeśli dam to w onShow to jest tak samo.
A cel ma taki, by SynEdit zajmowało pewną częśc formatki z odjęciem 175px.

0

Nie możesz korzystać ze zmiennej Konsola wewnątrz konstruktora bo pÓÓÓÓki konstruktor się nie zakończy i nie zwróci wartości (utworzonej formatki) to zmienna Konsola jest niezainicjowana

    Height:= Self.Height - 175;
0

Dzięki, zapamiętałem ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1