Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Ungültiges Fenster Handle - seit 10.2. Tokyo (https://www.delphipraxis.net/193518-ungueltiges-fenster-handle-seit-10-2-tokyo.html)

alf.krause 9. Aug 2017 19:07

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:

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);
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.


Code:
///////////////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////////////
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;
Aufruf:
Code:
     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);
Alle Änderungen im folgenden FormCreate habe ich schon mal auskommentiert, ohne Erfolg. Ausserdem verabschiedet er sich ja schon beim inherited.

Hat jemand einen Tipp ?

Danke!

Uwe Raabe 9. Aug 2017 19:16

AW: Ungültiges Fenster Handle - seit 10.2. Tokyo
 
Wie ist die Einstellung von
Delphi-Quellcode:
OldCreateOrder
bei dem Form? Bei true wird das
Delphi-Quellcode:
FormCreate
bereits im
Delphi-Quellcode:
inherited Create
aufgerufen.

alf.krause 9. Aug 2017 19:20

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:
rocedure TMessageForm.FormCreate(Sender: TObject);
begin
 PostMessage(Handle, WM_MAILFORMSETUP,0,0);
end;
Damit sollte es ja alles erstmalda sein.

himitsu 9. Aug 2017 19:20

AW: Ungültiges Fenster Handle - seit 10.2. Tokyo
 
Ein Unterschied liegt erstmal im
Delphi-Quellcode:
virtual
, beim CreateHotelAvisVorgang.

* 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.

alf.krause 9. Aug 2017 20:13

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!

Uwe Raabe 9. Aug 2017 20:25

AW: Ungültiges Fenster Handle - seit 10.2. Tokyo
 
Daß bei dem
Delphi-Quellcode:
inherited Create
nicht das erste Create overload aufgerufen wird ist so beabsichtigt? Mal abgesehen davon, daß das eventuell als override deklariert werden sollte.

Delphi-Quellcode:
constructor Create(AOwner: TComponent); overload;

alf.krause 9. Aug 2017 20:26

AW: Ungültiges Fenster Handle - seit 10.2. Tokyo
 
Ja - Danke! GGf.wäre es sinnvoll alle construcoren umzubenennen.

Uwe Raabe 9. Aug 2017 20:27

AW: Ungültiges Fenster Handle - seit 10.2. Tokyo
 
Was sagt denn nun der Debugger?

alf.krause 9. Aug 2017 20:36

AW: Ungültiges Fenster Handle - seit 10.2. Tokyo
 
Der Debugger bleibt erst hier stehen

Code:
procedure TWinControl.MainWndProc(var Message: TMessage);
begin
  try
    try
      WindowProc(Message);
    finally
      FreeDeviceContexts;
      FreeMemoryContexts;
    end;
  except
    [B]Application.HandleException(Self)[/B];
  end;
end;
dann hier

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;

Uwe Raabe 9. Aug 2017 20:40

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 01:38 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz