Einzelnen Beitrag anzeigen

striderx

Registriert seit: 11. Feb 2007
Ort: Bergisch Gladbach
207 Beiträge
 
Delphi 10.4 Sydney
 
#1

Zugriff auf Formular währen OnShow

  Alt 24. Apr 2015, 21:23
Delphi-Version: XE6
Hallo zusammen,

wenn ich beim FormShow-Ereignis des Haupt-Formulars eine bestimmte Bedingung auftritt, möchte ich für einige Objekte in einem Unterformular bestimmte Eigenschaften setzen (z. B. den Text für ein Label).

Sobald ich das mache, bekomme ich eine Access-Violation, weil das Unterformular anscheinend noch nicht existiert (habe ich mit Screen.Forms[P].Name überprüft). Ein Aufruf mit Unterform.ShowModal ist dann natürlich auch nicht möglich.

Das seltsame ist, dass es nicht knallt, wenn ich der Unterform.Caption etwas zuweise.

Und was noch viel seltsamer ist: Dieses Projekt habe ich per Kopieren aus einem anderen Projekt 'geklont'. Dort ist der Zufriff ohne Probleme möglich. Auch in anderen Projekten mit ähnlicher Mimik tritt das Projekt nicht auf. Dort existiert das Unterformular zu diesem Zeitpunkt also immer schon.


Hat jemand eine Idee hierzu?


Delphi-Quellcode:
program ArtDB;

uses
  SysUtils,
  WinTypes,
  Vcl.Forms,
  ArtDBMain in 'ArtDBMain.pas{dlgArtDB},
  ShowMessage in 'ShowMessage.pas{dlgShowMsg},
  SetSortMode in 'SetSortMode.pas{dlgSetSortMode},
  FitImage in 'FitImage.pas',
  PicShow in 'PicShow.pas{dlgPictureShow};

{$R *.res}

var
  hSemaphore: tHandle;
  hThisWindow: hWnd;
  SemName: Array[0..256] of Char;
  WinTitle: Array[0..256] of Char;


begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TdlgArtDB, dlgArtDB);
  Application.CreateForm(TdlgShowMsg, dlgShowMsg);
  Application.CreateForm(TdlgSetSortMode, dlgSetSortMode);
  Application.CreateForm(TdlgPictureShow, dlgPictureShow);
  Application.Run;
end.
  Mit Zitat antworten Zitat