AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Verwendung der Variablen "Handle" aus Unit "Controls" in Klasse funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Verwendung der Variablen "Handle" aus Unit "Controls" in Klasse funktioniert nicht

Ein Thema von FriendOfDelphi · begonnen am 27. Jul 2010 · letzter Beitrag vom 6. Aug 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#1

AW: Verwendung der Variablen "Handle" aus Unit "Controls" in Klasse funktioniert nich

  Alt 3. Aug 2010, 15:23
Wovon ist denn Deine Klasse abgeleitet?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.343 Beiträge
 
Delphi 12 Athens
 
#2

AW: Verwendung der Variablen "Handle" aus Unit "Controls" in Klasse funktioniert nich

  Alt 3. Aug 2010, 15:38
Normaler Weise wird ja vorher (sollte man zumindestens am Anfang machen) via inherited die Vorfahrenklasse eingerichtet, womit also die Grundlagen für ein Handle gelegt werden. Im Getter von .Handle wird dann über .HandleNeeded geprüft, ob es existiert und wenn nicht, dann wird Eines erstellt.

Aber dafür muß es aber auch ein Handle geben.
Also wenn du keines einrichtest/erzeugst, dann muß die Vorfahrenklasse dafür ausgelegt sein ... also es muß irgendwo von TWinControl abgeleitet worden sein.

TForm hat dieses als Vorfahre und darum gibt es dort auch das Property .Handle .
Deine Klasse wurde anscheinend nicht von sowas abgeleitet und darum gibt's da auch kein Handle (das wurde dir aber auch schon mehrmals gesagt).
Lösung:
- anderer Vorfahre
- oder man besorgt sich das nötige Handle wo anders (auch dieses wurde dir schon vorgeschlagen)
- oder man erstellt sich extra ein MessageOnlyWindows (und nimmt dessen Handle), wenn man Messages empfangen muß
- oder man kommt ohne soein Handle aus
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#3

AW: Verwendung der Variablen "Handle" aus Unit "Controls" in Klasse funktioniert nich

  Alt 3. Aug 2010, 16:16
Warum nicht das Applikations-Handle verwenden?

Delphi-Quellcode:
[
uses
  ..., Forms;

...

begin
  h := Application.Handle;
  ...
end;
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#4

AW: Verwendung der Variablen "Handle" aus Unit "Controls" in Klasse funktioniert nich

  Alt 3. Aug 2010, 16:45
Normaler Weise wird ja vorher (sollte man zumindestens am Anfang machen) via inherited die Vorfahrenklasse eingerichtet, womit also die Grundlagen für ein Handle gelegt werden. Im Getter von .Handle wird dann über .HandleNeeded geprüft, ob es existiert und wenn nicht, dann wird Eines erstellt.
Das habe ich mit inherited Create; auch gemacht. Der Konstruktor wird so eingeleitet constructor TKlassenName.Create;
Aber dafür muß es aber auch ein Handle geben.
Also wenn du keines einrichtest/erzeugst, dann muß die Vorfahrenklasse dafür ausgelegt sein ... also es muß irgendwo von TWinControl abgeleitet worden sein.
Wie kann ich das prüfen, bzw. herausfinden?
TForm hat dieses als Vorfahre und darum gibt es dort auch das Property .Handle .
Deine Klasse wurde anscheinend nicht von sowas abgeleitet und darum gibt's da auch kein Handle (das wurde dir aber auch schon mehrmals gesagt).
Lösung:
- anderer Vorfahre
- oder man besorgt sich das nötige Handle wo anders (auch dieses wurde dir schon vorgeschlagen)
- oder man erstellt sich extra ein MessageOnlyWindows (und nimmt dessen Handle), wenn man Messages empfangen muß
- oder man kommt ohne soein Handle aus
Tut mir leid, dass ich hier anscheinend so dumme Fragen stelle.
Ich verstehe das wahrscheinlich noch nicht.
Kann ich hier irgendwo etwas darüber nachlesen, damit ich konkretere Fragen stellen kann?
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#5

AW: Verwendung der Variablen "Handle" aus Unit "Controls" in Klasse funktioniert nich

  Alt 3. Aug 2010, 16:48
Nochmal: wovon ist Deine Klasse abgeleitet?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#6

AW: Verwendung der Variablen "Handle" aus Unit "Controls" in Klasse funktioniert nich

  Alt 3. Aug 2010, 16:57
Wovon ist denn Deine Klasse abgeleitet?
Vielleicht ist das der Fehler!?
Ich habe das so gemacht: TKlassenName = class(TObject) .
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#7

AW: Verwendung der Variablen "Handle" aus Unit "Controls" in Klasse funktioniert nich

  Alt 3. Aug 2010, 17:02
Nicht TObject, sondern TWinControl, dann hast Du auch ein Handle.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#8

AW: Verwendung der Variablen "Handle" aus Unit "Controls" in Klasse funktioniert nich

  Alt 5. Aug 2010, 10:52
Nicht TObject, sondern TWinControl, dann hast Du auch ein Handle.
Ja, dass war der entscheidende Hinweis.
Das Handle ist nun bekannt.

Ich erhalte dann folgende Fehlermeldung vom Compiler: "Nicht genügend wirkliche Parameter" für die Zeile mit dem inherited Create; .
Da meine Klasse nun eine Erweiterung der TWinControl-Klasse, bzw. von dieser abgeleitet ist, muss hier die Create-Methode von TWinControl verwendet werden. Richtig?
Die ist so deklariert: constructor Create : procedure(AOwner: TComponent) .

Welchen Parameter muss ich denn in die Klammern des Create schreiben?
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#9

AW: Verwendung der Variablen "Handle" aus Unit "Controls" in Klasse funktioniert nich

  Alt 5. Aug 2010, 10:57
Was macht denn das "procedure" da? Normalerweise sieht das so aus:
Delphi-Quellcode:
type
  TBlubb = class(TwinControl)
  ...
  public
    constructor Create(AOwner: TComponent); override;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#10

AW: Verwendung der Variablen "Handle" aus Unit "Controls" in Klasse funktioniert nich

  Alt 5. Aug 2010, 11:20
Was macht denn das "procedure" da? Normalerweise sieht das so aus:
Delphi-Quellcode:
type
  TBlubb = class(TwinControl)
  ...
  public
    constructor Create(AOwner: TComponent); override;
Nein, nein, dass habe nachgeguckt, indem ich TWinControl. in der IDE eingegeben habe. Der Compiler macht ja dann Vorschläge, welche Methoden es in TWinControl gibt. Und für Create hat er eben die Deklaration constructor Create : procedure(AOwner: TComponent) genannt.

Ich habe das so gemacht:
Delphi-Quellcode:
[...]
TBlubb = class(TWinControl)
[...]
  public
    constructor Create;
[...]
constructor TSoftSPS.Create;
var
  i, j: integer;
begin
  inherited Create;
[...]
Und da meldet der Compiler dann in der Zeile mit dem inherited Create; : "Nicht genügend wirkliche Parameter".
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 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