AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi OOP / Methodenbezeichner: Anfängerfrage
Thema durchsuchen
Ansicht
Themen-Optionen

OOP / Methodenbezeichner: Anfängerfrage

Ein Thema von Tso · begonnen am 5. Mai 2005 · letzter Beitrag vom 8. Mai 2005
 
Robert_G
(Gast)

n/a Beiträge
 
#8

Re: [OOP / Methodenbezeichner] Anfängerfrage

  Alt 5. Mai 2005, 14:19
Zitat von maximov:
Das gesammte problem tritt eigentlich nur auf, weil du deine procedure als normale globale prozedur deklarierst und nicht als methode einer speziellen klasse. Generell handelt man sich nur ärger ein, wenn man von globalen punkten lokale aufgaben direkt ausführt. Ich würd das als methode von TForm1 deklarieren, womit dnn auch self wieder verfügbar ist.
Ja und nein.
Spezielle Klasse? Klaro!
Methode vom Form? hmmm... Schlecht bis gar nicht wiederverwendbar.

Im Vorfeld würde ich das empfehlen. Dadurch geschieht der Rest einfach transparenter.

OK...
Im Menu unter View findest du den Project Manager. Öffne ihn mal und füge deiner Projektgruppe ein neues Projekt hinzu.
Es sollte ein Package sein. Speichere es am Besten gleich als "LabelMitWertDings.dpk" ab.
Dem Package verpasst du eine neue Unit und speicherst diese als "uLabelMitWertDings.pas".

Wie man vielleicht sehen kann, wird das ene Ableitung von TLabel. Wir wollen also die alte Eigenschaft Caption verstecken und eine neue Eigenschaft vom Typ Integer einführen. Diese sollte dann hinter den Kulissen die Umwandlung Integer -> String durchführen um die Caption des Labels zu besetzen.

Außerdem sollten wir die Caption direkt im Constructor mit einer Zahl besetzen (sonst knallt es ja gleich von Anfang an )

Noch ein Register, um das Control in die IDE zu kriegen und das war's dann auch schon.

Los Unitos:
Delphi-Quellcode:
unit uLabelMitWertDings;

interface
   uses
      Classes,
      StdCtrls;

   type
      TLabelMitWertDings = class(TLabel)
      private
         fWertDings :Integer;
      protected
         property Caption;

         procedure setWertDings(const aValue: Integer);virtual;
      published
         property WertDings :Integer read fWertDings write setWertDings;
      public
         constructor Create(aOwner: TComponent); override;
      end;

   procedure Register(); // zum Installieren in die IDE

implementation
   uses
      SysUtils;

procedure Register();
begin
   RegisterComponents('Samples', [TLabelMitWertDings]);
end;

{ TLabelMitWertDings }

constructor TLabelMitWertDings.Create(aOwner: TComponent);
begin
   inherited Create(aOwner);
   WertDings := 0;
end;

procedure TLabelMitWertDings.setWertDings(const aValue: Integer);
begin
   fWertDings := aValue;
   inherited Caption := IntToStr(fWertDings);
end;

end.
Jetzt einfach im Project Manager einen Rechtsklick auf das Package und Install anklicken ->und *fump* schon ist das Control in der Komponentenpalette. (Wie im Code ersichtlich unter Samples)

Alles witere dürfte klar sein:
LabelMitWertDings.WertDings := 1; Und zu den Tips mit den globalen Variablen des Formdesigners: Das kann doch nicht wirklich euer ernst sein?
Ich habe keine Ahnung warum Borland diesen Mist gebaut hat. Aber wer diese DAU-Krücken benutzt hat soviel Sinn für OOP bzw. wartbaren, fehlerresistenten Code wie meine Großmutter. (Eher noch weniger )
  Mit Zitat antworten Zitat
 


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 05:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz