AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi wo findet man die protected Methode createWnd?
Thema durchsuchen
Ansicht
Themen-Optionen

wo findet man die protected Methode createWnd?

Ein Thema von BAMatze · begonnen am 19. Mär 2009 · letzter Beitrag vom 19. Mär 2009
Antwort Antwort
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#1

wo findet man die protected Methode createWnd?

  Alt 19. Mär 2009, 09:05
Hallo hab wieder eine Frage.

Ich suche gerade die ursprüngliche Methode createWnd. Da ich beim Überschreiben dieser Methode in meinem TWinControl eine Fehlermeldung bekomme. Folgendes wird nicht akzeptiert:

Delphi-Quellcode:
type
  TWinControl1 = class(TWinControl)
  private
    ...
  protected
    procedure createWnd; override; // <-- hier wird gemeckert
  public
    ...
  published
    { Published-Deklarationen }
  end;

...

procedure TWinControl1.CreateWnd;
begin
  inherited createWnd;
  FCombBoxTischauswahl.Parent := self;
  FCombBoxTischauswahl.Clear;
  FCombBoxTischauswahl.Items.Add('Verschiebetisch Referenzfaser');
  FCombBoxTischauswahl.Items.Add('Verschiebetisch Kamera/ Spleißgerät');
  FCombBoxTischauswahl.Items.Add('Piezoverschiebetisch');
  FCombBoxTischauswahl.ItemIndex := 0;
end;
Denke mal, dass dort etwas wie (Sender: TObject) oder so etwas ähnliches noch fehlen wird. Deswegen habe ich schon bei TWinControl und bei TControl unter den Methoden geschaut, aber nicht die createWnd-Methode gefunden, da dort auch nur die public Methoden erklärt werden und die createWND-Methode sollte eigentlich protected sein. Wo ist diese deklariert oder mal erklärt?

Vielen Dank
BAMatze
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#2

Re: wo findet man die protected Methode createWnd?

  Alt 19. Mär 2009, 09:13
Das ist so schon alles richtig. CreateWnd wird in TWinControl virtual im protected-Bereich implementiert. Welche Fehlermeldung bekommst du denn?

Gruß oki
42
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#3

Re: wo findet man die protected Methode createWnd?

  Alt 19. Mär 2009, 09:21
Muss FCombBoxTischauswahl nicht zuvor erzeugt werden, bevor man auf die Itemliste zugreift?
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: wo findet man die protected Methode createWnd?

  Alt 19. Mär 2009, 09:25
Den ersten Fehler hab ich gefunden, da wurde anscheinend nur über die unterschiedliche Schreibweise "createWnd; override" und "CreateWnd; override" zwischen Deklaration (in der Klasse) und eigentlicher Procedure gemeckert. Jetzt kann immer noch nicht die bpl-Datei erstellt werden, wobei dies eventuell daran liegen könnte, dass es schon eine Datei mit diesem Namen gibt. Das prüfe ich jetzt gerade.

@Satty Die Erzeugung sämtlicher Komponenten wird im Konstruktor implementiert, dies hab ich hier nicht reingestellt. Aber im Versuch (also wo ich sie hab als dynamische Komponenten erzeugen lassen auf einer Form) lief alles ohne Probleme.
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#5

Re: wo findet man die protected Methode createWnd?

  Alt 19. Mär 2009, 09:32
Ja, neuerdings (bei meinem alten D5 war das nicht so) warnt der Compiler bei vererbten Methoden die Groß/Kleinschreibung an. Das ist aber nur ein Hinweis der zu keinen "Störungen" führt. Bekanntlich unterscheidet Delphi da ja nicht, aber andere Programmiersprachen wohl. Vielleicht hat CodeGear da was im Sinn und will uns schon mal sensibilisieren.

Gruß oki
42
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: wo findet man die protected Methode createWnd?

  Alt 19. Mär 2009, 09:42
Also es lag wirklich an einer noch alten Package-Datei, die ich noch in dem BPL-Ordner zu liegen hatte. Habe die Komponente jetzt registriert, sie wurde jetzt auch bei meiner Toolbox aufgenommen. Jetzt bekomme ich aber eine Fehlermeldung, wenn ich sie auf eine Form ziehen will:

Fehlermeldung:

Zitat:
Zugriffsverletzung bei Adresse 0F6B1CE6 in Modul 'Package1.bpl'. Lesen von Adresse 00000000.
Woran könnte das liegen?
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#7

Re: wo findet man die protected Methode createWnd?

  Alt 19. Mär 2009, 10:03
Du greifst in einer Methode deiner Komponente auf das Handle deiner Kompo zu (zum Bsp. auf den Canvas) bevor CreateWnd aufgerufen wurde. Das passiert meistens dann, wenn du im Construktor deiner Komponente Eigenschaften setzt die Aktionen auslösen, bei denen das Handle benötigt wird. Das ist aber erst ab CreateWnd vorhanden. Ein häufige Fehler ist es auf die öffentlichen Eigenschaften im Konstruktor schreibend zuzugreifen die Setter-Methoden implementieren (Startwerte setzen im Konstructor) prüf das mal und ändere das um wenn vorhanden und belege nur die privaten Eigenschaften (Member).

Gruß oki
42
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: wo findet man die protected Methode createWnd?

  Alt 19. Mär 2009, 10:07
Hab den Beitrag mal abgespaltet, um auch den Regeln des Forums zu entsprechen: Neuer Threat für neue Frage. Hab in dem neuen Threat auch den kompletten Quellcode zur Verfügung gestellt. Vieleicht kannst du da mal schauen, ob du eine Fehlerhafte Routine meinerseits siehst.

Hier ist der Link

Edit1: Ich hab grob verstanden, wie du das meinst, könnte aber bei dem gegebenen Code deine Hilfe (@oki) noch gebrauchen, damit der Hinweis plastischer und besser vorstellbar wird.
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:12 Uhr.
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