Autor Téma: Delphi 2007.NET a chyba 1400 invalid handle  (Přečteno 264 krát)

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 1095
  • Karma: 29
    • Verze Delphi: XE8, Sydney
Delphi 2007.NET a chyba 1400 invalid handle
« kdy: 26-08-2022, 09:09:23 »
Ahoj
mám poměrně starou ale funkční aplikaci, napsanou v Delphi 2007.NET. Přišel od zadavatele požadavek přidat editační políčko s nápovědou.
Udělal jsem primitivního potomka TEdit a přidal ho přes tlačítko na formulář.
A problém.
Invalid handle code 1400.
K chybě dojde v okamžiku nastavení:

Kód: Delphi [Vybrat]
  1.   Edit0 := TEdit_ex.Create(Self);
  2.  
  3.   Edit0.Name := 'Edit0';
  4.   Edit0.Parent := Self; //zde dojde k chybě
  5.   Edit0.Left := 200;
  6.   Edit0.Top := 64;
  7.   Edit0.Width := 121;
  8.   Edit0.Height := 21;
  9.   Edit0.TabOrder := 0;

Když ale vrátím TEdit namísto TEdit_ex, tak je vše v pořádku

Kód: Delphi [Vybrat]
  1.   EditX := TEdit.Create(Self);
  2.  
  3.   EditX.Name := 'EditX';
  4.   EditX.Parent := Self;
  5.   EditX.Left := 200;
  6.   EditX.Top := 64;
  7.   EditX.Width := 121;
  8.   EditX.Height := 21;
  9.   EditX.TabOrder := 0;

To nechápu, takže to bude nějaká blbost, třeba musí být nějaký atribut u potomka nebo tak...
Blbne to dokonce i když je ten potomek TEdit/TCustomEdit úplně prázdný.

Tušil by někdo, v čem by mohl být zakopaný pes? Díky
(ale chápu, že .NET versi asi už nikdo nepoužívá)

Online Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3184
  • Karma: 111
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Delphi 2007.NET a chyba 1400 invalid handle
« Odpověď #1 kdy: 26-08-2022, 09:52:15 »
volas tam v tom constructoru inherited?
Embarcadero MVP - Czech republic

Online Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3184
  • Karma: 111
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Delphi 2007.NET a chyba 1400 invalid handle
« Odpověď #2 kdy: 26-08-2022, 09:57:17 »
resp. nevim co delas v constructoru, ale zkus pro test nedelat :-) a jen volat inherited
Embarcadero MVP - Czech republic

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 1095
  • Karma: 29
    • Verze Delphi: XE8, Sydney
Re:Delphi 2007.NET a chyba 1400 invalid handle
« Odpověď #3 kdy: 26-08-2022, 09:57:29 »
Ano volám.
Je tam objekt, který taky nastavuje Parent.
Ve Win32 se to chová korektně, ale v .NET blbě, takže si myslím, že tam někde něco chybí (a nemusí to být zrovna v kódu).

Online Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3184
  • Karma: 111
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Delphi 2007.NET a chyba 1400 invalid handle
« Odpověď #4 kdy: 26-08-2022, 09:59:43 »
Hmm, tak treba ten dalsi prvek potrebuje aby mel vlastnik az nastaven parent.
Embarcadero MVP - Czech republic

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 1095
  • Karma: 29
    • Verze Delphi: XE8, Sydney
Re:Delphi 2007.NET a chyba 1400 invalid handle
« Odpověď #5 kdy: 26-08-2022, 10:06:36 »
Ha, změna. Pokud vynechám za
Kód: Delphi [Vybrat]
  1. inherited
to
Kód: Delphi [Vybrat]
  1. Create(AOwner)
tak chyba 1400 zmizí, ale zůstane hláška : "Odkaz na objekt není nastaven na instanci objektu", což by mohlo možná ukazovat na ten vnitřní objekt