Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Eigene Komponente (Toolbar) programmieren (https://www.delphipraxis.net/158898-eigene-komponente-toolbar-programmieren.html)

Metallicwar 11. Mär 2011 09:41

AW: Eigene Komponente (Toolbar) programmieren
 
hier mal der Code in abgespeckter Version (nur ein Button wird erzeugt):
Delphi-Quellcode:
unit Unit1;

interface

uses
  SysUtils, Classes, Controls, Graphics, ToolWin, ComCtrls, ImgList, cxGraphics, cxStyles,
  StdCtrls, Dialogs, pngImage;

type
  TToolbarType = (ttStandard1, ttStandard2, ttStandard3);
type
  TTestToolbar = class(TToolBar)
  private
    Buttons : TToolbutton;
  protected
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  public
    constructor create(aOwner: TComponent); override;
    destructor Destroy; override;
    { Private-Deklarationen }
  published
end;

procedure Register;

implementation

constructor TTestToolbar.Create;
begin
  inherited;
  Parent := Owner as TWinControl;

  if Assigned(Buttons) then
    Exit;

  Buttons := TToolbutton.Create(self.Parent);
  Buttons.Name := 'btnTest';
  Buttons.Parent := self;
  Buttons.Caption := 'Test';
end;

procedure TTestToolbar.Notification(AComponent: TComponent;
  Operation: TOperation);
begin
  inherited Notification(AComponent, Operation);
  if (AComponent = Buttons) and (Operation = opRemove) then
    Buttons := nil;
end;

destructor TTestToolbar.Destroy;
begin
  Buttons.Free;
  inherited;
end;

procedure Register;
begin
  RegisterComponents('ZTestKomponenten', [TTestToolbar]);
end;

end.
Folgendes PRoblem:
- Ich erstelle ein Projekt, ziehe meine programmierte Toolbar aufs Formular, kann auch die Eigenschaft "Toolbarstyle" ändern, das funktioniert alles. So, nun speicher ich mein Projekt ab und öffne es erneut und erhalte zu jeder Komponente folgenden Fehler:"Komponente mit der Bezeichnung btnNeu1, etc... existiert bereits"

Bummi 11. Mär 2011 16:33

AW: Eigene Komponente (Toolbar) programmieren
 
Ich habe jetzt eine ganze Weile mit dem teil rumexperimentiert und weiß jetzt warum ich das TToolbar bisher nie freiwillig einsetzen wollte.
Der Effekt tritt ja schon auf wenn Du im Formular auf Ansicht als Text und wieder zurückschaltest. Wenn man den Namen weglässt entsteht bei jedem hin und herschalten ein neuer Button, zu Laufzeit kommt dann die Fehlermeldung "Klasse TToolbutton nicht gefunden".
ein :
Delphi-Quellcode:
if not Assigned(FindComponent('Test')) then
    begin
ändert ncihts an dem Verhalten, produziert aber neue Fehler.
Der selbst erstellte Toolbutton ist auch nicht bedienbar....

Muss es tatsächlich ein TToolbar als Vorfahr sein, oder kannst Du auch z.B. auf einem TCustompanel aufsetzen, hier hast Du das ganze unbeeinflussbare Innenleben des Toolbars nicht an der Backe hängen.

Metallicwar 14. Mär 2011 08:41

AW: Eigene Komponente (Toolbar) programmieren
 
Zitat:

Zitat von Bummi (Beitrag 1087776)
Muss es tatsächlich ein TToolbar als Vorfahr sein, oder kannst Du auch z.B. auf einem TCustompanel aufsetzen, hier hast Du das ganze unbeeinflussbare Innenleben des Toolbars nicht an der Backe hängen.

Ja es sollte eine TToolbar sein, da in dem Programm, bisher schon sehr viele Toolbars existieren und durch Einführung eines TCustomPanel ein neuer Standard geschaffen würde. Ich will bei einem Standard bleiben --> Toolbar.
Und wie wäre es über ein TCustompanel möglich neue Toolbuttons auf dem Panel zu platzieren?
Oder versteh ich etwas falsch?

Ich habe am Wochenende nochmal ein bisschen probiert, aber ich finde einfach keine Lösung für mein geschildertes Problem, bin am Verzweifeln :cry:

Bummi 14. Mär 2011 14:28

AW: Eigene Komponente (Toolbar) programmieren
 
Nein, ich bezweifle dass ich den Nerv hätte mich mit dem Toolbar längerfristig rumzuärgern.
Ich wünsche Dir viel Erfolg und bewundere Deine Ausdauer...


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:15 Uhr.
Seite 4 von 4   « Erste     234   

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