![]() |
Ungültiges Fenster Handle - seit 10.2. Tokyo
Hallo,
ich habe ein Form mit mehrer Constructoren und einer funzt nicht seit der Umstellung auf 10.2
Code:
Der constructor CreateHotelAvisVorgang stürtzt beim inherited ab mit der Meldung ungültiges Fensterhandle. Der constructor CreateTeilnehmerListe geht, ich sehe aber da keinen Unterschied,außer in den Parametern.TMessageForm = class(TForm) ... constructor Create(AOwner: TComponent); overload; constructor Create(AOwner: TComponent; FormType: TKontaktType;ADRCODE: String; AutoTextBaustein : String =''); overload; constructor Create(AOwner: TComponent; ADRCODE: String;Vorgangsnummer: Integer; AutoTextBaustein : String =''); overload; constructor Create(AOwner: TComponent; Vorgangsnummer: Integer;ADRCODE: String; AutoTextBaustein : String =''); overload; constructor Create(AOwner: TComponent; FormType: TKontaktType;ADRCODE: String; KontaktNr: Integer; AutoTextBaustein : String =''); overload; constructor Create(AOwner: TComponent; FormType: TKontaktType;Vorgangsnummer: Integer; ADRCODE: String; KontaktNr: Integer;AReport: TppReport; AutoTextBaustein : String =''); overload; constructor CreateBuchungMessage(AOwner: TComponent; ADRCODE: String;Vorgangsnummer: Integer; Documentype: TDocumentType; AutoTextBaustein :String=''); virtual; constructor CreateHotelAvisVorgang(AOwner: TComponent;Vorgangsnummer: Integer; HotelCode: String; VPartnerCode: String; DateFrom, DateTo: TDateTime; AvisAdr: Boolean; PrintOption: Boolean;PrintZusatz: Boolean;AutoTextBaustein : String = ''); virtual; constructor CreateTeilnehmerListe(AOwner: TComponent;Vorgangsnummer: Integer; HotelCode: String; AutoTextBaustein : String =''); constructor CreateBusPreisAnfrage(AOwner: TComponent; Vorgangsnummer: Integer; ADRCODE: String;OverWriteAdr : Boolean; MultiBusAnfrage: Boolean; AutoTextBaustein : String =''); constructor CreateMailKundeWv(AOwner: TComponent; MailText: String;KUNCODE: String; AutoTextBaustein : String ='';Vorgangsnummer: Integer = 0); procedure SmtpClientMessageDataSent(Sender: TObject; Size: Integer);
Code:
Aufruf:
///////////////////////////////////////////////////////////////////////////////
// /////////////////////////////////////////////////////////////////////////////// constructor TMessageForm.CreateHotelAvisVorgang(AOwner: TComponent; Vorgangsnummer: Integer; HotelCode: String; VPartnerCode: String; DateFrom, DateTo: TDateTime; AvisAdr: Boolean; PrintOption: Boolean; PrintZusatz: Boolean;AutoTextBaustein : String = ''); Begin inherited Create(AOwner); Font := Application.MainForm.Font; FCreateFrom := fromBuchung; FAdrCode := HotelCode; FVPartnerCode := VPartnerCode; FDateFrom := DateFrom; FDateTo := DateTo; FAvisAdr := AvisAdr; FPrintOption := PrintOption; FPrintZusatz := PrintZusatz; FVorgangsnummer := Vorgangsnummer; FKontaktType := kontaktAvisVorgang; FHotelAvisVorgang := true; FOverWriteAdr := false; FMultibusAnfrage := false; FAutoTextBaustein := AutoTextBaustein; end; /////////////////////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////////////////////// constructor TMessageForm.CreateTeilnehmerListe(AOwner: TComponent; Vorgangsnummer: Integer; HotelCode: String; AutoTextBaustein : String =''); begin inherited Create(AOwner); Font := Application.MainForm.Font; FCreateFrom := fromBuchung; FAdrCode := HotelCode; FVPartnerCode := ''; FVorgangsnummer := Vorgangsnummer; FKontaktType := kontaktTeilnehmerliste; FHotelAvisVorgang := false; FTeilnehmerListe := true; FOverWriteAdr := false; FMultibusAnfrage := false; FAutoTextBaustein := AutoTextBaustein; end;
Code:
Alle Änderungen im folgenden FormCreate habe ich schon mal auskommentiert, ohne Erfolg. Ausserdem verabschiedet er sich ja schon beim inherited.
MessageForm:= TMessageForm.CreateHotelAvisVorgang(Application,FVorgangsnummer,
HotelAvisData.sqlHotels.FieldByName('HOTEL').AsString, HotelAvisData.sqlHotels.FieldByName('VPARTNERCODE').AsString, sqlVorgangHotel.FieldByName('DATUMVON').AsDateTime, sqlVorgangHotel.FieldByName('DATUMBIS').AsDateTime, Boolean(HotelAvisData.sqlHotels.FieldByName('AVISIERUNGADR').AsInteger), Option, true); Hat jemand einen Tipp ? Danke! |
AW: Ungültiges Fenster Handle - seit 10.2. Tokyo
Wie ist die Einstellung von
Delphi-Quellcode:
bei dem Form? Bei true wird das
OldCreateOrder
Delphi-Quellcode:
bereits im
FormCreate
Delphi-Quellcode:
aufgerufen.
inherited Create
|
AW: Ungültiges Fenster Handle - seit 10.2. Tokyo
Sorry, ich vergaß - die Änderung der Einstellung OldCreate order bringt nichts (steht jetzt auf false) - der Fehler tritt immer auf.
Ich habe spaßenshalber FormCreate mal so geändert -ohne Erfolg:
Code:
Damit sollte es ja alles erstmalda sein.
rocedure TMessageForm.FormCreate(Sender: TObject);
begin PostMessage(Handle, WM_MAILFORMSETUP,0,0); end; |
AW: Ungültiges Fenster Handle - seit 10.2. Tokyo
Ein Unterschied liegt erstmal im
Delphi-Quellcode:
, beim CreateHotelAvisVorgang.
virtual
* Wie sieht die Ableitung aus? (existiert ein override) * Wie werden die Instanzen erstellt? (da, wo das Create aufgerufen wird) * ... Im Inherited wird eventuell das OnCreate aufgerufen (OldCreateorder=True) oder es wird erst im AfterConstruction aufgerufen. Und dann wird im Inherited die DFM geladen, alle auf der Form liegenden Komponenten erstellt und deren Properties (siehe DFM) zugewiesen ... Debug-DCUs aktivieren und eventuell mal schauen wo es da genau knallt. |
AW: Ungültiges Fenster Handle - seit 10.2. Tokyo
Sodele das virtual ist raus, gehört auch da wohl nicht, ändert aber an dem Problem nichts.Danke trotzdem schon mal für den Hinweis!
|
AW: Ungültiges Fenster Handle - seit 10.2. Tokyo
Daß bei dem
Delphi-Quellcode:
nicht das erste Create overload aufgerufen wird ist so beabsichtigt? Mal abgesehen davon, daß das eventuell als override deklariert werden sollte.
inherited Create
Delphi-Quellcode:
constructor Create(AOwner: TComponent); overload;
|
AW: Ungültiges Fenster Handle - seit 10.2. Tokyo
Ja - Danke! GGf.wäre es sinnvoll alle construcoren umzubenennen.
|
AW: Ungültiges Fenster Handle - seit 10.2. Tokyo
Was sagt denn nun der Debugger?
|
AW: Ungültiges Fenster Handle - seit 10.2. Tokyo
Der Debugger bleibt erst hier stehen
Code:
dann hier
procedure TWinControl.MainWndProc(var Message: TMessage);
begin try try WindowProc(Message); finally FreeDeviceContexts; FreeMemoryContexts; end; except [B]Application.HandleException(Self)[/B]; end; end;
Code:
procedure RaiseLastOSError(LastError: Integer; const AdditionalInfo: string); overload;
var Error: EOSError; begin if LastError <> 0 then Error := EOSError.CreateResFmt(@SOSError, [LastError, SysErrorMessage(LastError), AdditionalInfo]) else Error := EOSError.CreateRes(@SUnkOSError); Error.ErrorCode := LastError; raise Error; end; |
AW: Ungültiges Fenster Handle - seit 10.2. Tokyo
Jetzt müsste man nur wissen, welche Message da behandelt werden soll und wer die wo los schickt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz