Eigene Attribute?
-
- Beiträge: 80
- Registriert: Sa 11. Apr 2009, 17:01
- OS, Lazarus, FPC: Windoof (L 0.9.26 FPC 2.2.2)
- CPU-Target: 32Bit
Eigene Attribute?
Kann man festen Teilen (z.B. Tbutton) zusätzlich Attribute geben?
Wenn ja, wie und wo?
Wenn ja, wie und wo?
Dankt monta !!
-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
Re: Eigene Attribute?
Hallo,
ich denke, dies ist durch Ableitung zu erreichen.
ich denke, dies ist durch Ableitung zu erreichen.
Zuletzt geändert von MacWomble am Di 19. Mai 2009, 13:25, insgesamt 2-mal geändert.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Re: Eigene Attribute?
Einfach eine Classe davon ableiten und dann lediglich die eigenen Sachen Ergänzen und Create und Inherited vererben, bspw.:
Mal ein Beispiel:
Und schon hab ich ein TXMLDocument, was neben allen Eigenschaften die es eh schon hatte, nun auch (wie Delphi) ein LoadFromStream unterstützt. Kannst du mit TButton bspw. genau so machen.
Wenn das ganze als Komponente vorliegen soll, musst du es natürlich noch zum Installieren in die IDE als Package verpacken.
//Womble war schneller
Mal ein Beispiel:
Code: Alles auswählen
type
TExtXMLDocument = class(TXMLDocument)
private
public
procedure LoadFromStream(Stream: TStream);
end;
procedure TExtXMLDocument.LoadFromStream(Stream: TStream);
var XML: TXMLDocument;
begin
ReadXMLFile(XML, Stream);
Self.TextContent := XML.TextContent;
end;
Wenn das ganze als Komponente vorliegen soll, musst du es natürlich noch zum Installieren in die IDE als Package verpacken.
//Womble war schneller

Johannes
-
- Beiträge: 80
- Registriert: Sa 11. Apr 2009, 17:01
- OS, Lazarus, FPC: Windoof (L 0.9.26 FPC 2.2.2)
- CPU-Target: 32Bit
Re: Eigene Attribute?
sry, aber das sagt mir garnix 
Ich will nur ein Attribut und nicht ne ganze funktion erstellen, z.B. Tbutton.Rang

Ich will nur ein Attribut und nicht ne ganze funktion erstellen, z.B. Tbutton.Rang
Dankt monta !!
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Re: Eigene Attribute?
Ein Attribut, und das soll scheinbar ne Zahl sein, interpretier ich Rang da richtig?
Dann nutz doch einfach die verfügbare Eigenschaft TButton.Tag, die gibt es bei allen Komponenten und kann frei für integer vewendet werden.
Ansonsten geht das mit eigenschaften genau so mit OOP:
Lazarus unterstützt die Package-Geschichte auch, wenn du auf Package > Neues Package gehst und dort auf Hinzufügen > Komponente usw...
Aber ich würde wirklich nochmal überlegen, ob sich das wegen einer simplen Property lohnt, ich denk fast, nicht
.
Dann nutz doch einfach die verfügbare Eigenschaft TButton.Tag, die gibt es bei allen Komponenten und kann frei für integer vewendet werden.
Ansonsten geht das mit eigenschaften genau so mit OOP:
Code: Alles auswählen
type
THendyButton = class(TButton)
private
public
Rang: integer;
end;
Aber ich würde wirklich nochmal überlegen, ob sich das wegen einer simplen Property lohnt, ich denk fast, nicht

Johannes
-
- Beiträge: 80
- Registriert: Sa 11. Apr 2009, 17:01
- OS, Lazarus, FPC: Windoof (L 0.9.26 FPC 2.2.2)
- CPU-Target: 32Bit
Re: Eigene Attribute?
also kann ich unter public rang:=3 definieren und dann im Programm Button1.Rang aufrufen?
Das mit .Tag wird nnicht gehen, sollen so ca 3-4 Attribute werden, strings und integer
Das mit .Tag wird nnicht gehen, sollen so ca 3-4 Attribute werden, strings und integer
Dankt monta !!
-
- Beiträge: 768
- Registriert: Mo 4. Mai 2009, 13:24
- OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
- CPU-Target: x86_64-linux-qt/gtk2
- Kontaktdaten:
Re: Eigene Attribute?
Du leitest eine Klasse ab und definierst zusätzliche Methoden oder Eigenschaften. Diese neue Klasse muss im Programmcode erzeugt werden und ist dann nach Belieben beeinflussbar.
Code: Alles auswählen
type
THendyButton = class(TButton)
private
FRang:integer;
FOddRang:boolean;
FIdent:string;
function GetOddRang:boolean;
public
constructor Create...
property Rang: integer read FRang write FRang;
property OddRang:boolean read GetOddRang;
property Ident:string read FIdent write FIdent;
end;
constructor THendyButton.Create...
begin
inherited;
FRang:=3;
FIdent:='Hendys Button';
end;
function THendyButton.GetOddRang:boolean;
begin
Result:=odd(FRang);
end;
//---------------------
procedure TForm1.OnCreate...
var HendyButton:THendyButton;
begin
HendyButton:=THendyButton.Create(form1);
HendyButton.Parent:=form1;
HendyButton.Top:=10;
HendyButton.Rang:=1;
HendyButton.OnClick:=@DoHendyClick;
end;
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Re: Eigene Attribute?
Scotty hat eigentlich alles gesagt...und weil das ganze mit Buttons nicht so schön ist, im Code zu erstellen...im Anhang ein fertiges Paket, was dir das ganze demonstriert. Oben bei FRang... kannst du einfach deine Werte einfügen. Unter Published dann die Zugriffe deklarieren, damit sie auch im Objektinspektor sind und im Create kannst du noch bestimmte Werte als Ausgangswerte definieren.
Der Quelltext sollte selbsterklärend sein, ich hab auf alles unnütze verzichtet.
Einfach in Lazarus Package > Package-Datei öffnen wählen dann die lpk öffnen und anschließend öffnet sich der Package-Dialog wo du den Quelltext von hendybutten.pas noch anpassen kannst und wenn du auf installieren klickst, hast du das ganze oben in der Palette auf der Registerkarte Standard ganz hinten als visuelle Komponente und die neuen eingenschaften sind im OI zu finden.
Der Quelltext sollte selbsterklärend sein, ich hab auf alles unnütze verzichtet.
Einfach in Lazarus Package > Package-Datei öffnen wählen dann die lpk öffnen und anschließend öffnet sich der Package-Dialog wo du den Quelltext von hendybutten.pas noch anpassen kannst und wenn du auf installieren klickst, hast du das ganze oben in der Palette auf der Registerkarte Standard ganz hinten als visuelle Komponente und die neuen eingenschaften sind im OI zu finden.
- Dateianhänge
-
Hendy.zip
- (1.53 KiB) 79-mal heruntergeladen
Johannes
-
- Beiträge: 80
- Registriert: Sa 11. Apr 2009, 17:01
- OS, Lazarus, FPC: Windoof (L 0.9.26 FPC 2.2.2)
- CPU-Target: 32Bit
Re: Eigene Attribute?
oh man ich wollte keine Umstände machen ^^ aber trotzdem danke, schau ich mir mal an.


Dankt monta !!