AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TCategoryPanelGroup modifizieren

Offene Frage von "cpux86"
Ein Thema von Keks · begonnen am 2. Apr 2011 · letzter Beitrag vom 7. Nov 2019
Antwort Antwort
Keks

Registriert seit: 25. Mai 2005
122 Beiträge
 
#1

AW: TCategoryPanelGroup modifizieren

  Alt 2. Apr 2011, 14:27
Strg+Linksklick auf TCategoryPanelGroup
Das geht imho aber nur, wenn der Pfad zu der pas in den Library-Angabenenthalten ist. Da bei mir der "[...]\RAD Studio\8.0\source\vcl" Pfad dort nicht drin war, hat das mit dem Klicken auch nicht funktioniert.

Ich komme allerdings gerade nicht weiter mit dem Überschreiben einer Funktion der Basiskomponente.
Ich habe jetzt folgendes:
Delphi-Quellcode:
unit MyCategoryPanelGroup;

interface

uses
  SysUtils, Classes, Controls, Forms, ExtCtrls, Graphics;

type
  TMyCategoryPanelGroup = class(TCategoryPanelGroup)
  private
    { Private declarations }
  protected
    { Protected declarations }
    procedure DrawHeaderChevron(ACanvas: TCanvas); override;
  public
    { Public declarations }
  published
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('My', [TMyCategoryPanelGroup]);
end;

procedure TCategoryPanelGroup.DrawHeaderChevron(ACanvas: TCanvas);
begin
  //
end;

end.
Damit sollte der Pfeil doch schon mal nicht gezeichnet werden, oder? Jedenfalls erhalte ich beim Kompilieren die Meldung: "Method 'DrawHeaderChevron' not found in base class". DrawHeaderChevron ist Teil von TCustomCategoryPanel von dem TCategoryPanel abgeleitet ist. Ich denke für meinen Fall ist es einfacher von TCategoryPanel abzuleiten statt von TCustomCategoryPanel, da ich sonst erst alles, was fehlt, selbst nachrüsten müsste.
Warum wird DrawHeaderChevron also nicht gefunden?
  Mit Zitat antworten Zitat
Keks

Registriert seit: 25. Mai 2005
122 Beiträge
 
#2

AW: TCategoryPanelGroup modifizieren

  Alt 2. Apr 2011, 22:02
Würde mich sehr freuen, wenn mir jemand zeigt, wie das geht!
Habe es selbst leider nicht herausfinden können.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: TCategoryPanelGroup modifizieren

  Alt 2. Apr 2011, 22:50
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type

  TCategoryPanel = class(extctrls.TCategoryPanel)
  private
    { Private declarations }
  protected
    { Protected declarations }
  public
    procedure DrawHeaderChevron(ACanvas: TCanvas);override;

    { Public declarations }
  published
    { Published declarations }
  end;

  TForm1 = class(TForm)
    CategoryPanelGroup1: TCategoryPanelGroup;
    CategoryPanel1: TCategoryPanel;
    CategoryPanel2: TCategoryPanel;
    Button1: TButton;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TCategoryPanelGroup }

procedure TCategoryPanel.DrawHeaderChevron(ACanvas: TCanvas);
begin
  //>> beispiel
  Acanvas.FillRect(Rect(0,0,width,Height));
end;

end.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Keks

Registriert seit: 25. Mai 2005
122 Beiträge
 
#4

AW: TCategoryPanelGroup modifizieren

  Alt 2. Apr 2011, 23:47
Vielen Dank, Bummi! Das funktioniert.

Aber wie komme ich jetzt noch an die Zustände wie FHeaderState oder FCollapsed bzw. weitere Attribute wie die gesetzten Farben (FPanelGroup.ChevronColor) heran?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: TCategoryPanelGroup modifizieren

  Alt 3. Apr 2011, 07:17
Du musst Dir die Sachen einfach zusammensuchen, ich habe noch mal ein sinnfreies Beispiel angehängt...

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TCategoryPanel = class(extctrls.TCategoryPanel)
  private
    { Private declarations }
  protected
    { Protected declarations }
  public
    procedure DrawHeaderChevron(ACanvas: TCanvas);override;
    property HeaderState;
    { Public declarations }
  published
    { Published declarations }
  end;
  TForm1 = class(TForm)
    CategoryPanelGroup1: TCategoryPanelGroup;
    CategoryPanel1: TCategoryPanel;
    CategoryPanel2: TCategoryPanel;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TCategoryPanel.DrawHeaderChevron(ACanvas: TCanvas);
begin
  //>> beispiel
  Acanvas.Brush.Color := TCategoryPanelGroup(Parent).ChevronColor;
  Acanvas.FillRect(Rect(0,0,width,Height));
  Case HeaderState Of
    hsNormal: ACanvas.TextOut(0,0,'N');
    hsPressed: ACanvas.TextOut(0,0,'P');
    hsHot: ACanvas.TextOut(0,0,'H');
  End;

end;

end.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Keks

Registriert seit: 25. Mai 2005
122 Beiträge
 
#6

AW: TCategoryPanelGroup modifizieren

  Alt 3. Apr 2011, 15:48
Vielen Dank, damit komme ich jetzt zurecht!
Wünsche einen schönen Sonntag!
  Mit Zitat antworten Zitat
Keks

Registriert seit: 25. Mai 2005
122 Beiträge
 
#7

AW: TCategoryPanelGroup modifizieren

  Alt 3. Apr 2011, 20:39
Ich habe jetzt die angesprochenen Punkte (Abstand entfernt, Pfeile selbst gezeichnet) hinbekommen.
Nun wollte ich noch den Rand (die 1px breite, dunkelgraue Linie um die Komponente) der CategoryPanelGroup entfernen. Leider finde ich keinen Anhaltspunkt, wo diese gezeichnet wird. Könnte mir bitte jemand helfen, diese Umrandung zu entfernen?
  Mit Zitat antworten Zitat
cpux86

Registriert seit: 24. Jun 2008
7 Beiträge
 
#8

AW: TCategoryPanelGroup modifizieren

  Alt 7. Nov 2019, 18:54
#### Moderatoren, Bitte diesen Beitrag löschen! Doppelpost! ######

Geändert von cpux86 ( 7. Nov 2019 um 19:38 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:06 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