AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente mit ChildControls entwickeln

Ein Thema von torud · begonnen am 21. Okt 2010 · letzter Beitrag vom 27. Okt 2010
Antwort Antwort
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Komponente mit ChildControls entwickeln

  Alt 21. Okt 2010, 13:37
Hallo Wissende,

ich möchte eine eigene DataBar entwickeln. Das soll wie folgt aussehen.

Als Mutter soll ein TPanel zum Einsatz kommen. Darauf soll eine Combobox und 2 Buttons platziert werden. Also eigentlich eine Toolbar. Die Buttons sollen später zum Navigieren in der Combobox dienen, falls nötig. Die Combobox soll gespeicherte Einträge aufnehmen und OnItemSelect die passenden Inhalte des Eintrages aus einer IniDatei laden. So viel nur als Background für Euch zum wissen. Das Ganze habe ich schon sehr oft so gemacht, nur nervt es mich, dass ich das Ganz immer über die Objektablege in jeden Dialog einpflegen muss. Aus diesem Grund möchte ich nun eine Komponente daraus machen.

Zur Zeit scheitere ich leider daran, dass mir unklar ist, wie ich die Combobox auf dem Panel platziere. Ich erhalte leider immer eine Fehlermeldung von Delphi7.

Hier mal mein Code, der sicher noch nicht optimal ist. Ich würde mich freuen, wenn mir der Ein oder Andere ein paar Tipps geben könnte. Die verwendeten Komponenten sind zum Teil von TMS, aber ich könnte es Testweise auch auf Standard-Controls von Delphi umschreiben.

Delphi-Quellcode:
unit myDataBar;

interface

uses
  SysUtils, Classes, Controls, AdvToolBar, StdCtrls;

type
  TmyDataBar = class(TAdvDockPanel)
  private
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    FToolbar : TAdvToolbar;
    FDataCombo : TCombobox;
    Fbtn_next : TAdvToolBarButton;
    Fbtn_previous : TAdvToolBarButton;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published-Deklarationen }
  end;

procedure Register;

implementation
{$R mydatabar.dcr}

procedure Register;
begin
  RegisterComponents('Beispiel', [TmyDataBar]);
end;

constructor TmyDataBar.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  Self.Height := 43;
  Self.Align := daTop;

  FToolbar := TAdvToolBar.Create(AOwner);
  FToolbar.Parent := Self;
  FToolbar.FullSize := True;

  FDataCombo := TComboBox.Create(FToolbar);
  FDataCombo.Parent := FToolbar;
  FDataCombo.Width := 200;

  Fbtn_next := TAdvToolBarButton.Create(FToolbar);
  Fbtn_next.Parent := FToolbar;
  Fbtn_next.Caption := 'Next';

  Fbtn_previous := TAdvToolBarButton.Create(FToolbar);
  Fbtn_previous.Parent := FToolbar;
  Fbtn_previous.Caption := 'Previous';
end;

destructor TmyDataBar.Destroy;
begin
  inherited;
end;

end.
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.546 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Komponente mit ChildControls entwickeln

  Alt 21. Okt 2010, 14:00
Ich erhalte leider immer eine Fehlermeldung von Delphi7.
Und welche? In welcher Zeile? Ansonsten gibt es irgendwo hier in der DP einen Link zu einem Video, das sich mit Composite Controls beschäftigt. Du solltest einmal danach suchen, das war IMO sehr interessant.

[edit] Ich hab den Link wiedergefunden. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (21. Okt 2010 um 15:16 Uhr)
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#3

AW: Komponente mit ChildControls entwickeln

  Alt 21. Okt 2010, 16:06
Cooler Tipp!

FlashMovie läuft schon. Scheint genau das zu sein, was ich brauche!!!

Für alle Suchfaulen hier nochmal der Link zu einem Zip-File, indem sich das FlashDesktopMovie befindet:
http://video.codegear.com/CodeRageII...clControls.zip
Danke
Tom
  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
 
#4

AW: Komponente mit ChildControls entwickeln

  Alt 21. Okt 2010, 16:23
Delphi-Quellcode:
constructor TmyDataBar.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Parent := TwinControl(Owner);
  Self.Height := 43;
.....
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
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#5

AW: Komponente mit ChildControls entwickeln

  Alt 21. Okt 2010, 19:12
Hallo,

das geänderte Creating half schonmal!

Nun erhalte ich aber folgende Fehlermeldung, wenn ich versuche die einem Formular hinzugefügte Komponente zu kompilieren:

Im Projekt Project2.exe ist eine Exception der Klasse EComponentError aufgetreten. Meldung: 'Komponente mit der Bezeichnung DataToolbar existiert bereits'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.

Folgenden Code benutze ich aktuell:

Delphi-Quellcode:
unit myDataBar;

interface

uses
  SysUtils, Classes, Controls, AdvToolBar, StdCtrls, Dialogs;

type
  TmyDataBar = class(TAdvDockPanel)
  private
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    FToolbar : TAdvToolbar;
    FDataCombo : TCombobox;
    Fbtn_next : TAdvToolBarButton;
    Fbtn_previous : TAdvToolBarButton;
    Ftb_sep : TAdvToolBarSeparator;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure GoNext(Sender: TObject);
  published
    { Published-Deklarationen }
  end;

procedure Register;

implementation
{$R mydatabar.dcr}

procedure Register;
begin
  RegisterComponents('THRU-Soft', [TmyDataBar]);
end;

constructor TmyDataBar.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Parent := TwinControl(Owner);
  Self.Height := 43;

  Self.Align := daTop;

  FToolbar := TAdvToolBar.Create(AOwner);
  FToolbar.Name := 'DataToolbar';
  FToolbar.Parent := Self;
  FToolbar.FullSize := True;

  FDataCombo := TComboBox.Create(FToolbar);
  FDataCombo.Name := 'FDataCombo';
  FDataCombo.Text := 'Dummy';
  FDataCombo.Parent := TWinControl(FToolbar);
  FDataCombo.Width := 200;

  Ftb_sep := TAdvToolBarSeparator.Create(FToolbar);
  Ftb_sep.Parent := TWinControl(FToolbar);
  Ftb_sep.Width := 20;

  Fbtn_next := TAdvToolBarButton.Create(FToolbar);
  Fbtn_next.Name := 'btn_Next';
  Fbtn_next.Parent := TWinControl(FToolbar);
  Fbtn_next.Caption := 'Next';
  Fbtn_next.ShowCaption := True;

  Fbtn_previous := TAdvToolBarButton.Create(FToolbar);
  Fbtn_previous.Name := 'btn_prev';
  Fbtn_previous.Parent := TWinControl(FToolbar);
  Fbtn_previous.Caption := 'Previous';
  Fbtn_previous.ShowCaption := True;
  Fbtn_previous.OnClick := GoNext;
end;

procedure TmyDataBar.GoNext(Sender: TObject);
begin
  ShowMessage('Next');
end;

destructor TmyDataBar.Destroy;
begin
  inherited;
end;

end.
Danke
Tom

Geändert von torud (21. Okt 2010 um 19:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Komponente mit ChildControls entwickeln

  Alt 21. Okt 2010, 19:25
Versuche mal ... FToolbar.Name := Name + '_DataToolbar';
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  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 10:33 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