AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte ColorPanel - Panel mit speziellen Funktionen
Thema durchsuchen
Ansicht
Themen-Optionen

ColorPanel - Panel mit speziellen Funktionen

Ein Thema von NickelM · begonnen am 11. Jun 2008 · letzter Beitrag vom 13. Jun 2008
Antwort Antwort
NickelM
Registriert seit: 22. Jul 2007
Hi Leute,

Ich hab mal meine erste eigene Komponente geschrieben und wollte mal fragen, was ihr davon haltet.

Es ist ein Panel, wo man halt mehr einfärben kann, als beim Standard oder sogar bei den LMD-Panel.

Es gibt Außerdem die möglcihkeit, es als Panel-Button zuverwenden, d.h. man kann sagen welches Bevel (Inner oder Outer) man den Effect des "Buttons" geben will.

Hier ist ein Bild, wo man (so hoffe ich) erkennen kann, was ich meine.

Bin gespannt was ihr dazu meint

Hab eigentlich auch ein eigenes Bild, di in ne dcr datei drin ist, die kann ich aber leider net dran hängen schade
Miniaturansicht angehängter Grafiken
color_panel_1_161.jpg  
Angehängte Dateien
Dateityp: pas colorpanel1_167.pas (7,7 KB, 15x aufgerufen)
 
shmia

 
Delphi 5 Professional
 
#2
  Alt 11. Jun 2008, 15:50
Nun, deine Farbwahl verursacht bei mir zwar Augenkrebs ,aber der Sourcecode sieht ganz gut aus.
Du solltest noch alle unbenutzten Units aus dem Uses entfernen bzw. falls möglich aus Abschnitt interface nach Abschnitt implementation verschieben.
Und die Einrückung der Sourcecodezeilen nach Borland Style Guide anpassen.

PS: hab da noch einen Fehler gesehen:
Delphi-Quellcode:
property BevelInnerOptions : TBevelOptions read FBevelInnerOptions write FBevelInnerOptions; // Falsch property BevelInnerOptions : TBevelOptions read FBevelInnerOptions write SetBevelInnerOptions; // Richtig

procedure TColorPanel.SetBevelInnerOptions(const Value: TBevelOptions);
begin
  FBevelInnerOptions.Assign(Value);
end;
Zusätzlich musst du noch die Assign-Methode von TBevelOptions überschreiben:
Delphi-Quellcode:
procedure TBevelOptions.Assign(Sender: TObject);
begin
  if Sender is TBevelOptions then
  begin
    FOwner := TBevelOptions(sender).FOwner;
    ...
  end
  else
    inherited;
end;
Andreas
  Mit Zitat antworten Zitat
NickelM

 
Delphi 2009 Professional
 
#3
  Alt 11. Jun 2008, 23:15
Ist das wirklich nötig?? Da es ja auch so funkt, oder nicht??
Nickel
  Mit Zitat antworten Zitat
shmia

 
Delphi 5 Professional
 
#4
  Alt 12. Jun 2008, 09:59
Zitat von NickelM:
Ist das wirklich nötig??
Ja, das muss sein.
Objekte in Delphi sind ja Zeiger. Wenn du im Konstruktor ein Objekt erzeugst, dann musst du genau dieses Objekt im Destruktor wieder freigeben.
Über das property BevelInnerOptions überschreibst du den alten Zeiger.
Also ist das ursprüngliche Objekt für immer verloren im Speicher (Speicherleck).
Bei dem Objekt, dass du zugewiesen hast, besteht die Gefahr, dass es doppelt freigegeben wird.
Deshalb muss das Objekt mit Assign() kopiert werden. So werden die Inhalte kopiert; nicht der Zeiger.
Andreas
  Mit Zitat antworten Zitat
NickelM

 
Delphi 2009 Professional
 
#5
  Alt 13. Jun 2008, 09:05
Aha, okay jetzt hab ich das auch mal verstanden, warum die immer Assign benutzen
Nickel
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:56 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