AGB  ·  Datenschutz  ·  Impressum  







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

Leere VCL-Komponente zur freien Benutzung

Ein Thema von Ookami · begonnen am 5. Aug 2011 · letzter Beitrag vom 5. Aug 2011
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#3

AW: Leere VCL-Komponente zur freien Benutzung

  Alt 5. Aug 2011, 22:46
Delphi-Quellcode:
begin
  inherited;
end;
Leere Methoden sind eher unschön und stellen nur einen unnötigen Overhead dar.
Aber OK, da dieses als Vorlage für eine Erweiterung dient, könnte man es nochmal durchgehn lassen, da hier ja geplant ist, diesen Code direkt zu erweitern und nicht durch Vererbung.

if value <> FColor then .
Wieso prüfst du in manchen Settern auf eine Veränderung und in Anderen nicht?

Delphi-Quellcode:
with canvas do
begin
  ...
  canvas.xyz
Wieso wird in dem WITH eigentlich nochmal namentlich darauf zugegriffen?

TVCL_COMPONENT .
Finde ich als Namen etwas unglücklich gewählt:
- einmal die etwas delphi-untypische Schreibweise ... CamelCase ist da verbreiteter
- und dann ist ist dieses ja nicht die einzige VCL-Komponente

Wenn man hier auch noch den OOP-Gedanken etwas mehr durchsetzt (vorallem die Vererbung), dann wäre TBaseVisualComponent ("Basis" für Grundkomponente) doch passender?

Delphi-Quellcode:
canvas.font.Assign(Font);
canvas.brush.style := bsClear;

//besser (da es so auch deklariert wurde)
Canvas.Font.Assign(Font);
Canvas.Brush.Style := bsClear;
Ansonsten kann es nie schaden, wenn man sich beim Schreiben an die Schreibweise der Deklarationen hält bzw. einen einheitlichen Schreibstil nutzt. (vorallem für solche Vorlagen)
OK, wenn man schon alles kleinschreiben will, wieso tanzt dann Assign aus der Reihe?

Eine ordentliche Codeformatierung erübrigt solche Kennzeichnungen ala //________________________ .

// Hier Code einfügen .
Diesen Teil in eine eigene virtuelle protected Pethode ausgelagert und man kann der OOP folgend von der Basiskomponente ableiten und seinen Code durch überschreiben (override) hinzufügen.
Da man eventuell sowieso das Zeichnen noch implementieren "muß", könnte man dieses auch noch als Abstract deklarieren.

Es kann auch nicht schaden, wenn solche eingebetteten Prozeduren, wie drawcaption und drawframe ( Schreibweise? ) ebenfalls als Private oder Protected in die Klassendeklaration auslagert.

Delphi-Quellcode:
  ...
  canvas.pen.style:=psclear;
  drawframe;
end;
DrawComponent > die virtuelle Methode, zum Überschreiben/Einfügen des Zeichencodes
DrawCaption > wird ja eh ganz am Ende von DrawFrame aufgerufen, warum also soein verschachtelter Aufruf, wo es auch direkt geht
Delphi-Quellcode:
  ...
  Pen.Style := psClear;
  DrawFrame;
  DrawComponent;
  DrawCaption;
end;
canvas.font.color := Canvas.Font.Color; .
Sieht zwar unterschiedlich aus, aber eigentlich macht dieser Code nicht wirklich was.
Font.Color := Font.Color; // ohne Canvas, da doch im WITH drin .

In deinem Code entsteht vermutlich nicht gleich eine Exception, aber für den Code der Anderen, welcher hier ja noch eingefügt werden soll, kann man sowas nicht wirklich sicherstellen,
daher würde ich noch einen Resourcenschutzblock empfehlen (vorallem für rgn).
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Aug 2011 um 23:05 Uhr)
  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 12:42 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