AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Create überschreiben (newbefrage)

Ein Thema von stephan007 · begonnen am 18. Jun 2007 · letzter Beitrag vom 20. Jun 2007
Thema geschlossen
Seite 1 von 2  1 2      
stephan007

Registriert seit: 2. Mär 2007
48 Beiträge
 
#1

Create überschreiben (newbefrage)

  Alt 18. Jun 2007, 14:40
hallo!

ich weiß, eine newbe frage
ich versuche gerade folgendes zu realisieren:
ein formular soll abhängig von dem in mode übergebenen style / erscheinungsbild angezeigt werden.

soll also folgendes machen:
 mywindow := window.create(self, Mode); und wenn nichts angegeben wird für mode, dann soll es einfach den standard nehmen also
 mywindow := window.create(self); bewirkt das gleiche wie  mywindow := window.create(self, default); wobei Mode z.b. von einer anderen anwendung oder in meinem fall halt mal per editbox vorgegeben wird.

muss ich da nun die create überschreiben oder die formcreate?
und wie schaut das dann im code genau aus? ich muss ja da auch die funktionen der überschriebenen erben.

stephan.
 
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Create überschreiben (newbefrage)

  Alt 18. Jun 2007, 14:43
den Konstruktor (.Create).
.FormCreate ist ja nur eine Eventmethode
Markus Kinzler
 
oki

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

Re: Create überschreiben (newbefrage)

  Alt 18. Jun 2007, 14:45
und den Konstructor überladen, damit beide Varianten möglich sind.

Gruß oki
 
stephan007

Registriert seit: 2. Mär 2007
48 Beiträge
 
#4

Re: Create überschreiben (newbefrage)

  Alt 19. Jun 2007, 08:33
und wie schaut das dann bitte genau aus?

ich habe nun eine überladene Create mit

procedure TForm.Create (AOwner: TComponent; Mode : Modetyp); override; und wie muss ich die dann gestalten? ich hätte folgendes gemacht:

Delphi-Quellcode:
procedure TForm.Create (AOwner: TComponent; Mode : Modetyp); override;
begin
  inherited;
  Form.Create(self);
  if Mode = ....
  // case for mode here
end;
sehe ich das richtig oder hab ich da noch irgendwo einen fehler drinnen?

wie gesagt, ich will ein formular erstellen, das aus zwei bereichen besteht. jede beliebige kombination der bereiche soll wählbar sein. sagen wir der obere ist a und der untere b. nun solls möglich sein, das formular nur mit entweder a oder b anzuzeigen oder aber auch mit beiden. abhängig vom parameter.

wenn mir newbe da jemand bitte weiterhelfen könnte vielelicht auch mit code, damit ichs gleich an dem lerne, wäre mir sehr geholfen. danke!
 
oki

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

Re: Create überschreiben (newbefrage)

  Alt 19. Jun 2007, 08:54
Hi, so:

Delphi-Quellcode:
Constructor Create(AOwner: TComponent; Mode : Modetyp); overload;

procedure TForm.Create (AOwner: TComponent; Mode : Modetyp);
begin
  inherited create(AOwner);
  Form.Create(self);
  if Mode = ....
  // case for mode here
end;
Der Constructor wird somit überladen. Du kannst dann beide Constructoren aufrufen, den alten mit nur AOwner und den neuen. Es gibt die Funktion somit zweimal mit unterschiedlichen Parametern. die OH gibt da auch gut auskunft.

Gruß oki
 
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.545 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Create überschreiben (newbefrage)

  Alt 19. Jun 2007, 08:57
Ist Form ein Childobjekt Deiner Komponente? Oder wofür steht das Form.Create?
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
 
stephan007

Registriert seit: 2. Mär 2007
48 Beiträge
 
#7

Re: Create überschreiben (newbefrage)

  Alt 19. Jun 2007, 09:06
schaut so aus:
Delphi-Quellcode:
type TMyForm = class(TDForm)
     ....
     procedure FormCreate ....
     procedure FormDestroy ....
     private
     public
     constructor Create (AOwner: TComponent; Mode: Windowtyp); overload;
     .....
     end;

// und dann kommen die einzelnen Realisierungen im ImplementationTeil
das sollte eigentlich Create(AOwner) heißen. und ruft den alten Constructor auf.
oder meinst du im code von oki?
 
oki

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

Re: Create überschreiben (newbefrage)

  Alt 19. Jun 2007, 09:11
Hi,

schau mal was dein Compiler sagt, ich glaube hinter das overload muß noch ein override.
Constructor Create(AOwner: TComponent; Mode : Modetyp); overload; override; Komm da immer wieder durcheinander und vertrau auf die Compilermeldungen für meine Korrekturen.

Gruß oki
 
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.545 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Create überschreiben (newbefrage)

  Alt 19. Jun 2007, 09:15
Ich meinte die Zeile Form.Create im Konstruktor.
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
 
stephan007

Registriert seit: 2. Mär 2007
48 Beiträge
 
#10

Re: Create überschreiben (newbefrage)

  Alt 19. Jun 2007, 09:20
habs jetzt wie oki gesagt hat (ohne das form.create) gemacht und da kommt folgendes:

da bekomm ich nun mehrere fehlermeldungen:
zweimal "Deklaration 'Create' unterscheidet sich von vorheriger Deklaration" (bei der deklaration im type und im implementation)
dann "Diese Form des Methodenaufrufs ist nur in Methoden von abgeleiteten Typen erlaubt" (beim inherited) und beim type mit dem constructor nochmals "ungenügend Forward- oder External-Deklaration: 'MyForm.Create'"

also irgendwie will der compiler den code nicht!
 
Thema geschlossen
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 12:04 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