![]() |
Eigene Komponente (Toolbar) programmieren
Hallo zusammen, ich habe folgendes vor:
In einem Programm werden in fast allen Modulen Toolbars verwendet, meistens mit den Toolbutton(Vor, Zurück, Abbruch, Löschen, etc... und eben Zusatzbuttons, wie z.B. Speichern, etc.) Ich möchte nun eben eine Toolbar programmieren, die mir standardmäßig alle Toolbuttons anzeigt. Im Objektinspektor möchte ich zusätzlich eine neue Eigenschaft anlegen, mit dem Namen "Toolbar Standards". In dieser Eigenschaft soll man zwischen mehreren Standards auswählen können (Standard1, Standard2, Standard3, usw.) Standard1 blendet mir z.B. alle Zusatzbuttons aus. Standard2 zeigt mir z.B. nur Vor und Zurück an . ... Eine neue Toolbar Komponente zu erstellen, bekomm ich hin. Nun meine Fragen: -wie füge ich die Toolbarbuttons hinzu -wie kann ich meinem Programm sagen, dass er mir bei der Auswahl von "Standard1" eben alle Zusatzbuttons ausblendet.
Delphi-Quellcode:
unit ToolBar1;
interface uses SysUtils, Classes, Controls, ToolWin, ComCtrls; type TTestBars = set of (Standard1, Standard2, Standard3, Standard4, Standard5); type TTestToolbar = class(TToolBar) private Bars: TTestBars; { Private-Deklarationen } protected { Protected-Deklarationen } public { Public-Deklarationen } published property Ort: TTreffpunkt read Bars write Bars; { Published-Deklarationen } end; procedure Register; implementation procedure Register; begin RegisterComponents('ZTestKomponenten', [TTestToolbar]); end; end. |
AW: Eigene Komponente (Toolbar) programmieren
mein aktueller Stand:
Delphi-Quellcode:
Fehler: Inkompatible Typen : "TWinControl" und "Class Reference"
unit Testtoolbar2;
interface uses SysUtils, Classes, Controls, ToolWin, ComCtrls; type TTestBars = set of (Standard1, Standard2, Standard3, Standard4, Standard5); type TTestToolbar = class(TToolBar) public constructor create(aOwner: TComponent); override; //Bars: TTestBars; //Buttons: TToolButton; { Private-Deklarationen } private Button : TToolbutton; end; procedure Register; implementation constructor TTestToolbar.Create; var iButtons: Integer; begin inherited Create(aOwner); TRY for iButtons := 0 to 9 do Button := TToolbutton.Create(self); Button.Caption := 'Button'+IntToStr(iButtons+1); Button.Parent := TTestToolbar; Button.Show; EXCEPT Button.Free; END; end; { destructor TTestToolbar. begin if Button <> nil then begin Button.Free; Button := nil; end; inherited Destroy; end; } procedure Register; begin RegisterComponents('ZTestKomponenten', [TTestToolbar]); end; end. |
AW: Eigene Komponente (Toolbar) programmieren
Müsste
Button.Parent := TTestToolbar; nicht Button.Parent := self sein oder so? |
AW: Eigene Komponente (Toolbar) programmieren
Müsste da nicht ein begin-end rein?
|
AW: Eigene Komponente (Toolbar) programmieren
Zitat:
Delphi-Quellcode:
muss raus; das hat in einem Konstruktor nichts verloren.
Button.Show
|
AW: Eigene Komponente (Toolbar) programmieren
Zitat:
|
AW: Eigene Komponente (Toolbar) programmieren
Zitat:
Wäre es nicht besser ein Array oder 'ne Liste oder sowas mit Buttons zu erstellen, damit man im Verlaufe des Programms weiter Zugriff auf bestimmte Buttons erhält, um z.B. Zusatzbuttons ein- und auszublenden, etc. ? |
AW: Eigene Komponente (Toolbar) programmieren
aktueller Stand:
Delphi-Quellcode:
Ich kann nun die Toolbar auf die Formziehen, mein Toolbutton wird angezeigt, aber er ist nicht anklickbar.
unit Testtoolbar2;
interface uses SysUtils, Classes, Controls, ToolWin, ComCtrls; type TTestBars = set of (Standard1, Standard2, Standard3, Standard4, Standard5); type TTestToolbar = class(TToolBar) public constructor create(aOwner: TComponent); override; //Bars: TTestBars; //Buttons: TToolButton; { Private-Deklarationen } private Buttons : TToolbutton; end; procedure Register; implementation constructor TTestToolbar.Create; begin inherited Create(aOwner); begin //Standardeigenschaften für Toolbar setzen //Self.ShowCaptions := True; Parent := AOwner as TWinControl; Buttons := TToolbutton.Create(self); Buttons.Name := 'btnNeu'; Buttons.Parent := self; Buttons.Caption := 'Neu'; Self.Buttons := Buttons; end; end; procedure Register; begin RegisterComponents('ZTestKomponenten', [TTestToolbar]); end; end. Befindet er sich noch nicht in der Collection der Toolbar? über
Delphi-Quellcode:
ist ja ja möglich einen Button der COllection der Toolbar hinzuzufügen.
TToolbutton.Buttons[0] := Buttons
aber in meinem Code funktionierts nicht. Hab das auch in meinem Code versucht, dort bekomm ich aber die Fehlermeldung "Klasse besitzt keine Standardeigenschaft" und hab es daher mal über
Delphi-Quellcode:
probiert, aber das hilft auch nicht.
Self.Buttons := Buttons;
Hat jemand eine Lösung dafür? MfG end. [/DELPHI] |
AW: Eigene Komponente (Toolbar) programmieren
Wenn ich eine normale Toolbar auf ein Form ziehe und dann darauf einen Button kreire, dann taucht der Button auch in den Komponenten meiner Form auf, d.h. das Form ist der owner oder parent von dem Button?
Vllt. musst du das entsprechend Abbilden? |
AW: Eigene Komponente (Toolbar) programmieren
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:52 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