Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

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 7. Mär 2011 11:16

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.

Metallicwar 7. Mär 2011 12:27

AW: Eigene Komponente (Toolbar) programmieren
 
mein aktueller Stand:
Delphi-Quellcode:
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.
Fehler: Inkompatible Typen : "TWinControl" und "Class Reference"

Jumpy 7. Mär 2011 13:33

AW: Eigene Komponente (Toolbar) programmieren
 
Müsste

Button.Parent := TTestToolbar;

nicht

Button.Parent := self

sein oder so?

DeddyH 7. Mär 2011 13:42

AW: Eigene Komponente (Toolbar) programmieren
 
Müsste da nicht ein begin-end rein?

shmia 7. Mär 2011 13:43

AW: Eigene Komponente (Toolbar) programmieren
 
Zitat:

Zitat von DeddyH (Beitrag 1086525)
Müsste da nicht ein begin-end rein?

Richtig, und das
Delphi-Quellcode:
Button.Show
muss raus; das hat in einem Konstruktor nichts verloren.

DeddyH 7. Mär 2011 13:45

AW: Eigene Komponente (Toolbar) programmieren
 
Zitat:

Delphi-Quellcode:
Button.Parent := TTestToolbar;

Das kann auch nicht stimmen, der Parent muss eine Instanz sein und keine Klasse.

Jumpy 7. Mär 2011 13:55

AW: Eigene Komponente (Toolbar) programmieren
 
Zitat:

Zitat von DeddyH (Beitrag 1086527)
Zitat:

Delphi-Quellcode:
Button.Parent := TTestToolbar;

Das kann auch nicht stimmen, der Parent muss eine Instanz sein und keine Klasse.

Sach ich ja :wink:


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. ?

Metallicwar 7. Mär 2011 14:03

AW: Eigene Komponente (Toolbar) programmieren
 
aktueller Stand:
Delphi-Quellcode:
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.
Ich kann nun die Toolbar auf die Formziehen, mein Toolbutton wird angezeigt, aber er ist nicht anklickbar.
Befindet er sich noch nicht in der Collection der Toolbar?
über
Delphi-Quellcode:
 TToolbutton.Buttons[0] := Buttons
ist ja ja möglich einen Button der COllection der Toolbar hinzuzufügen.
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:
    Self.Buttons := Buttons;
probiert, aber das hilft auch nicht.

Hat jemand eine Lösung dafür?
MfG

end.

[/DELPHI]

Jumpy 7. Mär 2011 14:23

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?

Metallicwar 7. Mär 2011 14:28

AW: Eigene Komponente (Toolbar) programmieren
 
Zitat:

Zitat von Jumpy (Beitrag 1086537)
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?

ja, über eine normale Toolbar zur Laufzeit habe ich es auch schon öfters gemacht, da funktionierts bei mir auch, aber da mach ich nix anderst wie in diesem Fall, nur eben, dass mein Parent, eine neue Komponente ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:52 Uhr.
Seite 1 von 4  1 23     Letzte »    

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