Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Neue Komponente - Neue Eigenschaft


Anfänger - Di 10.02.04 19:00
Titel: Neue Komponente - Neue Eigenschaft
(Ich hoffe mal, ich habe die richtige Sparte erwischt)

Ich habe das Buch delphi für Kids und beschäftige mich gerade mit der Erstellung eigener Komponente.
Wer es vieleicht kennt: ich habe gerade den OButton erstellt.
Die, die's nicht kennen: ich habe einen Button erstellt, abgeleitet von der TCustomControl und möchte nun neue Eigenschaften erstellen.
Ersteinmal dachte ich da an eine Picture Eigenschaft, die Bilder, wie der SpeedButton als Komponentenfläche anzeigt.

Ich weiß, ich muss unter Published meine Procedur anmelden, aber da geht es schon los. Ich kriegs nicht hin.

Ich denke, wenn mir das jemand eine solche Zeile zeigen könnte, müsste ich das hinkriegen.


MSCH - Di 10.02.04 19:59

nicht die Procedure sondern die Eigenschaft !!

so mal kurz aus'm Gehirn würd ich schreiben:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
type
  TMyButton=Class(..)
  private
    fBitmap: TBitmap;
    procedure setBitmap(B:TBitmap);
    function GetBitmap:TBitmap;  
public
    procedure Inhalt: TBitmap read getbitmap write setBitmap;
end;


grez
msch


Anfänger - Di 10.02.04 20:51

Scheihnbar geht das doch nicht sooo einfach, wie ich dachte.

Wie kriege ich getBitmap hin (ich bin davon ausgegangen,dass das automatisch geht :oops: )

Ein paar "Anfänger"-Fragen hätte ich noch:

Erste Frage: wieso 2 Variabel?(fBitmap,B)? Reicht nicht fBitmap?

zweite: in diesem falle dürfte doch setbitmap überflüssig sein, da die
Änderung doch in Paint muss? oder?


Keldorn - Di 10.02.04 21:13

Hallo

Ich würde dir empfeheln, erstmal mit einer Eigenaschaft anzufangen, die kein Object ist. Probier erstmal eine String oder bool-Eigenschaft.
ein gutes tut findest du hier:
http://www.tutorials.delphi-source.de/tswitch/index.shtml
Ich denke dort werden viele deiner Fragen geklärt.

Wenn du eine Bitmap als Eigenschaft wählst, sind wesentlich mehr Schritte notwendig:
- überschreiben des Constructors, wo du deine Bitmap erzeugst.
- überschreiben des Destructors, wo du deine Bitmap wieder freigibst.
- bei der Set-methode würde ich auf alle Fälle assign.-anwenden

Delphi-Quelltext
1:
2:
3:
4:
TMyButton.setBitmap(B:TBitmap); 
  begin
     Fbitmap.assign(b);
  end;

würdest du hier nur fbitmap:=b; schreiben, brauchst du dich evtl über spätere Exceptions nicht zu wundern. http://www.grundlagen.delphi-source.de/pascal/oo2.shtml ist das recht anschaulich erklärt.

noch etwas: du hast eine Pro-version. Dort liegen die Quelltext bei. es kann sehr hilfreich sein, die sich mal anzuguggn. z.b. eine imagekomponente mit der Picture-eigenschaft. schau dir dort speziell den Construtor,destructor, setpicture an.
zieh eine imagekomponente auf die Form und drück bei gedrückter Strg-Taste auf Timage im Quelltext deiner Form. (weiß aber nicht, ob das auch schon bei D3 funktioniert, wenn nicht, such die extctrls.pas im Source-ordner und öffne sie per hand.)

Mfg Frank


Anfänger - Di 10.02.04 22:03

Danke führ den Hinweis auf die Pas-Datei :!:
Sowas habe ich schon lange gesucht, hatte es aber aufgegeben.
Zwar ging die Tastenkombination nicht aber die Datei habe ich gefunden und nur das ist schließlich wichtig.

Den tut und den anderen Link werde ich mir auch mal ansehen.

Danke :D


Motzi - Mi 11.02.04 13:53

Du kannst dir auch mal meine OOP-Ausarbeitung zu Gemüte führen: http://www.x-spy.net/personal bzw wenn die Domain bei dir nicht funktioniert probier mal die Subdomain http://motzi.fs-tools.de/personal


Delete - Mi 11.02.04 14:34

Kuck mal, ob dir das hilft. http://www.delphipraxis.com/topic272_tut+erstellung+von+komponenten.html&highlight=komponenten