AGB  ·  Datenschutz  ·  Impressum  







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

Komponente in Komponente D2006

Ein Thema von EWeiss · begonnen am 4. Okt 2006 · letzter Beitrag vom 4. Okt 2006
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Komponente in Komponente D2006

  Alt 4. Okt 2006, 10:17
Kleines Problem..
Versuche eine Komponente im DSPAck einzubinden welche aber schon als Komponente registriert ist.
Bei D7 scheint es zu funktionieren warum bei D2006 nicht ?

Die änderung !

Delphi-Quellcode:
  { This control implement a seek bar for a media-player application.
    The seek bar is implemented as a TTrackbar control. }
 // Original TXiTrackBar = TTrackBar
  TDSTrackBar = class(TXiTrackBar, IEvent)
  private
    FFilterGraph: TFilterGraph;
    FMediaSeeking: IMediaSeeking;
    FWindowHandle: HWND;
    FInterval: Cardinal;
    FOnTimer: TTimerEvent;
    FEnabled: Boolean;
    FMouseDown: boolean;
    procedure UpdateTimer;
    procedure SetTimerEnabled(Value: Boolean);
    procedure SetInterval(Value: Cardinal);
    procedure SetOnTimer(Value: TTimerEvent);
    procedure SetFilterGraph(AFilterGraph: TFilterGraph);
    procedure GraphEvent(Event, Param1, Param2: integer);
    procedure ControlEvent(Event: TControlEvent; Param: integer = 0);
    procedure TimerWndProc(var Msg: TMessage);
    property TimerEnabled: Boolean read FEnabled write SetTimerEnabled;
  protected
TXiTrackBar ist eine Komponente welche sich in der XiControls Komponente befindet.
Ohne uses läßt sich DSPack nicht mehr installieren weil die zuweisung TXiTrackBar nicht gefunden wird.
Pfade und Verweise zu XiControls wurden aber gesetzt.

Binde ich jetzt in uses XiTrackBar mit ein wird die Package CDpack ordnungsgemäß compiliert und installiert.

Starte ich nun die Anwendung kommt die Fehlermeldung XiTrackBar wurde schon registriert und befindet sich in blaa, blaa..

Wie kann ich das Problem umgehen?
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Komponente in Komponente D2006

  Alt 4. Okt 2006, 13:53
Wie ist denn deine Register procedure? Da liegt vermutlich das Problem, dass du TXiTrackBar nochmal registrierst, statt TDsTrackBar ...

Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

Re: Komponente in Komponente D2006

  Alt 4. Okt 2006, 14:54
Zitat von Florian Bernd:
Wie ist denn deine Register procedure? Da liegt vermutlich das Problem, dass du TXiTrackBar nochmal registrierst, statt TDsTrackBar ...

Florian
Bin mit D2006 noch nicht lange dran! Sorry
Gibts da irgendeine einstellung ?

TXiTrackBar wird ja nur neu registriert( was nicht geht )wenn es als uses im DSPack eingebunden ist.

gruß
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: Komponente in Komponente D2006

  Alt 4. Okt 2006, 18:59
Also wenn ich das richtig verstanden habe, willst du eine neue von TXiTrackBar abgeleitete Komponente registrieren. Diese deklarierst du als TDSTrackBar.

Wenn du Delphi sagst, dass du eine neue Komponente erstellen willst, bietet Delphi dir ja die Möglichkeit das Grundgerüst für die Komponenten Unit schon zu generieren, also die Unit mit

type TDSTrackBar = class(... Desweiteren ist in dieser Unit eine funktion Register nötig, um die neue Komponente in der Komponentenpalette anzumelden.

Delphi-Quellcode:
procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Standard', [TDSTrackBar]);
end;
Ich vermute mal, dass du

RegisterComponents('Standard', [TXiTrackBar]) anstelle von

RegisterComponents('Standard', [TDSTrackBar]) verwendet hast. Das führt dann natürlich dazu, dass Delphi meckert, da ja schon ein Komponententyp mit der Bezeichnung TXiTrackBar registriert wurde.

Ich hoffe, das wird dir helfen.
Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

Re: Komponente in Komponente D2006

  Alt 4. Okt 2006, 19:39
Zitat:
RegisterComponents('Standard', [TXiTrackBar])
Nein !
Ich habe lediglich die Class verändert

TDSTrackBar = class(TXiTrackBar ...

Da war er schon am mucken weil ihm TXiTrackBar unbekannt war.

RegisterComponents habe ich im Originalzustand belassen.
Könnte es sein das ich TXiTrackbar aus der komponente XI entfernen muss ?

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

Re: Komponente in Komponente D2006

  Alt 4. Okt 2006, 20:13
Achso ... du hast die Komponente registriert und danach die Klasse im Nachhinein verändert. In diesem Falle sollte es reichen, wenn du nur die Komponenten Unit neu compilierst.

Das Package musst du glaube ich nicht neu installieren. Wenn doch, dann musst du das Package nochmal deinstallieren und nach der Änderung der Unit neu installieren.

Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

Re: Komponente in Komponente D2006

  Alt 4. Okt 2006, 21:21
Zitat von Florian Bernd:
Achso ... du hast die Komponente registriert und danach die Klasse im Nachhinein verändert. In diesem Falle sollte es reichen, wenn du nur die Komponenten Unit neu compilierst.

Das Package musst du glaube ich nicht neu installieren. Wenn doch, dann musst du das Package nochmal deinstallieren und nach der Änderung der Unit neu installieren.

Florian
Sorry wir reden aneinander vorbei !
Oder ich drücke mich schlecht aus.

Es ist wie folgt.

Es gibt eine Package XiControls
In dieser sind 4 Units enthalten.

XiButton.pas, XiPanel.pas, XiProgressBar.pas, XiTrackBar.pas.
Die Registrations Unit ist XiControls.pas

In der steht!

Delphi-Quellcode:
unit XiControls;

interface

uses
  Classes, XiButton, XiProgressBar, XiPanel, XiTrackBar;

implementation

{$R XiControls.res}

procedure Register;
begin
  RegisterComponents('XiControls', [TXiPanel, TXiTrackBar, TXiProgressBar, TXiButton]);
end;

end.
dann gibt es die Package DSPack
Hier ist eigentlich nur die DSPack.pas interessant diese wurde geändert und zwar wie schon erwähnt
TDSTrackBar = class(TTrackBar ... in TDSTrackBar = class(TXiTrackBar ...

Das ist alles.
Das Pack wird über den DSEditors.pas Registriert
Dort steht, das wichtigste!

Delphi-Quellcode:
  procedure Register;
  begin
    RegisterComponents('DSPack', [TFilterGraph, TVideoWindow, TSampleGrabber,
      TFilter, TASFWriter, TDSTrackBar, TDSVideoWindowEx2]);
    RegisterPropertyEditor(TypeInfo(TMediaType), nil, '', TMediaTypePropertyClass);
    RegisterPropertyEditor(TypeInfo(TBaseFilter), nil, '', TBaseFilterPropertyClass);
  end;

Hier wird die TDSTrackBar Registriert.
Wenn ich nun das DSPack installiere funktioniert das auch.

Lasse ich aber die Anwendung laufen kommt die Fehlermeldung das die Komponente TXiTrackBar schon registriert
ist und sich im Pack XiControls befindet.

Seltsamer weise funktioniert das in d7 in d2006 funktioniert es nicht.

gruß

EDIT: Der User hat einen Skin.
Standardmäßig wird die TTrackbar position vom DSPack ausgegeben wenn ein Video spielt.
Er will aber die TrackBar vom XI Pack verwenden wegen seinen Skin.
Deshalb hat er das ganze Teil umgestrickt damit die position der TTrackBar nun auf der vom XI Pack
umgeleitet wird.
  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 23:55 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