Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Komponente entwickeln- Deklarationen finden (https://www.delphipraxis.net/113195-komponente-entwickeln-deklarationen-finden.html)

haentschman 4. Mai 2008 12:30


Komponente entwickeln- Deklarationen finden
 
Hallo alle...

- ich habe mich mal an meine erste eigene Komponente gemacht. :thumb:
- es soll ein Planer werden, der auf meine Bedürfnisse zugeschnitten ist. (TMS Planner und TVPlanIt habe ich probiert)

:?: hättet ihr einen Link zu einem ausführlichem Tutorial ? Google wirft zwar diverse Ergebnisse aber nichts ausführliches (oder ich bin blind :gruebel: )

1.Problem:
- ich habe die Komponente von TPanel abgeleitet.
- ich möchte die procedure Resize überschreiben. Dazu muß ich ja die Originaldeklaration wissen.
- wenn ich mit Ctrl-Mausklick auf TPanel bin ----> ExtCtrls.pas nicht gefunden (ist ja im Package irgendwo)

:?: wie finde ich die Deklaration heraus.


PS: ich bitte um Nachsicht, bin in der Lernphase :-D

bitsetter 4. Mai 2008 12:41

Re: Komponente entwickeln- Deklarationen finden
 
Hi,

das steht bei mir in der Onlinehilfe Delphi-Referenz durchsuchenResize (Methode von TControl).

haentschman 4. Mai 2008 12:52

Re: Komponente entwickeln- Deklarationen finden
 
...dann zeige mir bitte aus der OH von D2007 die Deklaration von Resize des TPanel.

Delphi Hilfe:
Zitat:

Wird direkt nach einer Größenänderung des Steuerelements ausgelöst.

Pascal
property OnResize;
Beschreibung
Mit Hilfe einer Ereignisbehandlungsroutine für OnResize können Sie nach dem Ändern der Größe eines Steuerelements abschließende Anpassungen vornehmen.

Um die Reaktion eines Steuerelements auf Größenänderungen zu steuern, verwenden Sie OnCanResize oder OnConstrainedResize.

Anmerkung: Einige Steuerelemente rufen diese Ereignisbehandlungsroutine bei der erstmaligen Erzeugung des Steuerelements auf.
wenn ich:
Delphi-Quellcode:
constructor Resize; override;
Fehler: Deklaration von Resize unterscheidet sich von vorhergehender Deklaration

PS: TControl hat laut OH keine Methode Resize.

bitsetter 4. Mai 2008 13:03

Re: Komponente entwickeln- Deklarationen finden
 
In der Hilfe von Delphi 6 steht:
Zitat:

Resize (Methode von TControl)

Die Methode Resize antwortet auf eine Größenänderung des Steuerelements.

Delphi-Syntax:

procedure Resize; dynamic;


Beschreibung

Die Methode wird direkt nach einer Größenänderung des Steuerelements automatisch aufgerufen. Gemäß der Implementierung in TControl ruft sie die Behandlungsroutine für das Ereignis OnResize des Steuerelements auf (falls definiert).
Delphi 2007 habe ich leider nicht.

Edit: in Delphi 2006 steht übrigens das selbe drin.

haentschman 4. Mai 2008 13:14

Re: Komponente entwickeln- Deklarationen finden
 
Trotzdem Danke für Deine Bemühungen.

...mir ging es eigentlich um das allgemeine. Wie deklariere ich richtig ? Wo finde ich die Informationen ? Das mit dem Resize war jetzt nur der Anfang. :wink:

wieso liefert
Delphi-Quellcode:
constructor Resize; override;
dann den Fehler: Deklaration von Resize unterscheidet sich von vorhergehender Deklaration

...viel zu lernen ! :roll:

Zitat:

Um eine Methode zu überschreiben, braucht sie nur mit der Direktive override erneut deklariert zu werden. Dabei müssen Reihenfolge und Typ der Parameter sowie der Typ des Rückgabewertes (falls vorhanden) mit der Deklaration in der Vorfahrklasse übereinstimmen.
:?: wo finde ich die Deklaration der Vorfahrklasse (wenn Ctrl-Klick nicht zur entsprechenden .pas führt)

mkinzler 4. Mai 2008 13:19

Re: Komponente entwickeln- Deklarationen finden
 
Resize ist auch kein Konstruktor.

haentschman 4. Mai 2008 13:21

Re: Komponente entwickeln- Deklarationen finden
 
:oops: procedure oder ?

mkinzler 4. Mai 2008 13:22

Re: Komponente entwickeln- Deklarationen finden
 
Ja.

haentschman 4. Mai 2008 13:28

Re: Komponente entwickeln- Deklarationen finden
 
Danke...Resize haben wir :wink:

Was bedeutet "Elemet hat kein übergeordnetes Fenster" bei canvas.TextOut
Delphi-Quellcode:
constructor TDMPlaner.Create(aOwner: TComponent);
begin
  inherited;
  Height:= 200;
  Width:= 300;
  canvas.TextOut(1,1,'Test');
end;
...das ist doch der canvas des Panels oder ?

PS: Learnig by doing :wink:

mkinzler 4. Mai 2008 13:31

Re: Komponente entwickeln- Deklarationen finden
 
Von was ist TDMPlaner abgeleitet? Was ist der Owner?

haentschman 4. Mai 2008 13:32

Re: Komponente entwickeln- Deklarationen finden
 
von TPanel.

mkinzler 4. Mai 2008 13:35

Re: Komponente entwickeln- Deklarationen finden
 
Und der Owner?

haentschman 4. Mai 2008 13:40

Re: Komponente entwickeln- Deklarationen finden
 
TComponent :gruebel:

...ich merk schon, heftig Nachholbedarf :oops:

mkinzler 4. Mai 2008 13:42

Re: Komponente entwickeln- Deklarationen finden
 
Nicht den Typ des Parameters, sondern den Typ des übergebenen Objekts.
Sorry: Ich meine natürlich den Parent.

haentschman 4. Mai 2008 13:53

Re: Komponente entwickeln- Deklarationen finden
 
...ich glaube ich lese noch einmal die Grundlagen zu OOP. :oops:
...ich kann im Moment nicht richtig folgen :(

ich habe
Delphi-Quellcode:
TDMPlaner = class(TPanel)

public
    { Public-Deklarationen }
    constructor Create(aOwner: TComponent); override;

constructor TDMPlaner.Create(aOwner: TComponent);
begin
  inherited;
  Height:= 200;
  Width:= 300;
  canvas.TextOut(1,1,'Test');
end;
das Create ist doch das Create des TPanel ?
- denn die Höhe und die Breite werden angepaßt.
- das canvas ist doch dann auch der canvas des Panels. Die Programmierhilfe zeigt ja TextOut an. :gruebel:

...bevor ich mich noch weiter blamiere, lese ich lieber noch einmal :oops:

Zitat:

Ich meine natürlich den Parent.
der Parent ist doch die Form, wo ich die Komponente draufsetze :gruebel:

mkinzler 4. Mai 2008 13:55

Re: Komponente entwickeln- Deklarationen finden
 
Der Canvas hängt aber vom Canvas des Parents ab. der Parent muss deshalb auch einen Canvas haben.

haentschman 4. Mai 2008 14:13

Re: Komponente entwickeln- Deklarationen finden
 
das Formular hat doch einen canvas :gruebel:

...ich hätte aber gern den Text in der Komponente sprich auf TDMPlaner.

mkinzler 4. Mai 2008 14:15

Re: Komponente entwickeln- Deklarationen finden
 
Hast du dieses als Parent zugewiesen?

haentschman 4. Mai 2008 14:21

Re: Komponente entwickeln- Deklarationen finden
 
Zitat:

Hast du dieses als Parent zugewiesen?
...nein :oops:

wo/wie :gruebel:

mkinzler 4. Mai 2008 14:26

Re: Komponente entwickeln- Deklarationen finden
 
Delphi-Quellcode:
<Kompo>.Parent := <Form>;
Wie erzeugst du das Objekt

haentschman 4. Mai 2008 14:32

Re: Komponente entwickeln- Deklarationen finden
 
die Komponente soll eine visuelle Entwurfszeit Komponente werden.

- der Quelltext der "Komponente" läßt sich fehlerlos compilieren .
- Beim einfügen der Komponente auf ein Testformular kommt der Fehler.

FAlter 4. Mai 2008 14:44

Re: Komponente entwickeln- Deklarationen finden
 
Hi,

zuerst muss die Komponente erzeugt werden, bevor ihr ein Parent zugewiesen werden kann. Das bedeutet, im Konstruktor, wo die Komponente ja gerade erzeugt wird, gibt es noch keinen Parent, da die Zuweisung erst später erfolgen kann. Daher kannst du dort auch nicht auf Parent/Canvas/ ... zugreifen.

Es wäre empfehlenswert, die Methode Paint zu überschreiben und dort Canvas zu benutzen.

Mfg
FAlter

haentschman 4. Mai 2008 14:48

Re: Komponente entwickeln- Deklarationen finden
 
Zitat:

Es wäre empfehlenswert, die Methode Paint zu überschreiben und dort Canvas zu benutzen.
...damit gehts :thumb:
...wieder was gelernt.

ich muß mich halt an alles ranarbeiten :wink:

Danke...


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:37 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