AGB  ·  Datenschutz  ·  Impressum  







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

Control mit Subcontrols designen

Ein Thema von xaromz · begonnen am 17. Okt 2006 · letzter Beitrag vom 20. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2      
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#1

Control mit Subcontrols designen

  Alt 17. Okt 2006, 15:22
Hallo,

ich möchte sowas ähnliches wie ein TPageControl schreiben. Jetzt habe ich das Problem, dass Controls, die ich innerhalb der Komponente erstelle (meine "Seiten") nicht im Formdesigner klickbar sind. Wie bekomme ich es hin, dass ich diese Controls anklicken und verändern kann (so wie die TabSheets beim PageControl)?

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#2

Re: Control mit Subcontrols designen

  Alt 17. Okt 2006, 16:23
Da musst Du mal in der OH suchen. Zur Designtime gibt es zwei Events, die Du überschreiben musst(kannst). der eine liefert einige Kontextmenüeinträge (ähnlich 'neue Seite' bei PageControl) und im anderen gibst Du ein Component zurück, das an der geklickten Stelle liegt. Wie die genau heißen, weiß ich jetzt auch nicht, aber wenn du bissi wühlst, findest Dus.
p.s.: schau mal unter thema Komponentenentwicklung nach.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: Control mit Subcontrols designen

  Alt 17. Okt 2006, 17:04
Hallo,
Zitat von Sidorion:
Da musst Du mal in der OH suchen. Zur Designtime gibt es zwei Events, die Du überschreiben musst(kannst). der eine liefert einige Kontextmenüeinträge (ähnlich 'neue Seite' bei PageControl) und im anderen gibst Du ein Component zurück, das an der geklickten Stelle liegt. Wie die genau heißen, weiß ich jetzt auch nicht, aber wenn du bissi wühlst, findest Dus.
p.s.: schau mal unter thema Komponentenentwicklung nach.
danke für die Hinweise. Interessanterweise erscheinen die TabSheets aber auch in der Strukturansicht, genau so, als wären sie manuell auf das PageControl gezogen worden. Deshalb befürchte ich, es wird nicht reichen, wenn ich nur die Komponente unter dem Cursor zurückliefere.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: Control mit Subcontrols designen

  Alt 18. Okt 2006, 09:26
Hallo,

ich habe mich jetzt in der OH umgesehen und auch stundenlang auf die VCL-Sourcen gestiert. Leider ist mir dabei keine Erleuchtung zuteil geworden.
Wenn also jemand weiß, wie ich per Programm Komponenten erzeugen kann, die sich im Designer so verhalten, wie vom Benutzer erstellte, dann soll er sich gefälligst melden .

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#5

Re: Control mit Subcontrols designen

  Alt 18. Okt 2006, 10:03
Also für zusätzliche Menüeinträge ala 'Neue Seite' beim PageControl hab ich was gefunden: GetVerbCount, GetVerb und ExecuteVerb. Die erste liefert die Anzahl der customer-Kontextmenüeinträge, die zweite die Einträge selber (über Index). Diese beiden Funktionen werden in Deiner Komponente greufen, wenn während der Designzeit jemand auf die Komponente rechtsklickt, die dritte, wenn einer der Einträge ausgewählt wird.
Delphi-Quellcode:
type
  THelloGoodByeComponentEditor = class(TComponentEditor)
    procedure ExecuteVerb(Index: Integer); override;
    function GetVerb(Index: Integer): string; override;
    function GetVerbCount: Integer; override;
  end;

procedure THelloGoodByeComponentEditor.ExecuteVerb(Index: Integer);
begin
  case Index of
    0 : ShowMessage('Hello');
    1 : ShowMessage('Goodbye');

  end;
end;

function THelloGoodByeComponentEditor.GetVerb(Index: Integer): string;
begin
  case Index of
    0: Result := 'Arrive';
    1 : Result := 'Depart';
  end;
end;

function THelloGoodByeComponentEditor.GetVerbCount: Integer;
begin
  Result := 2;
end;
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: Control mit Subcontrols designen

  Alt 18. Okt 2006, 10:31
Hallo,

Danke . Das hilft mir schon mal weiter, um meine Seiten zu erstellen (wobei das auch schon bisher über die Header funktioniert, die sind eine Collection). Leider hilft mir das aber bei meinem eigentlichen Problem nicht weiter.
Weiß eigentlich jemand, wo der Quelltext des ComponentEditor für das PageControl steckt? Den hab' ich in den VCL-Quellen nicht gefunden.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
kolbaschedder

Registriert seit: 24. Aug 2006
Ort: Schwäbisch Gmünd
55 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Control mit Subcontrols designen

  Alt 18. Okt 2006, 10:36
Ich bin mi nicht ganz sicher, allerdings benutzt der Object-Inspector die Unit TypInfo.pas und hangelt sich Anhand der TObject-eigenschaft Components[] durch die Compnenten.
Daher solltest du bei deinen Subcomponenten das Create(Aowner : TComponent) mit der erzeugenden Compnente aufrufen also
create(self)
, keinesfalls mit Create(application), oder create(nil).
Dann noch den Parent setzen, sollte funktionieren.
Die Frage ist, ob du die Subkomponenten nicht auch als published definieren musst. ungefähr so :
Delphi-Quellcode:
private
  fSubComponent : tWinControl;
published
  property subComponent : tWinControl read fSubComponent ;
Hab geradee kein Delphi zur Hand, kanns also nicht ausprobieren.

MfG

Kolbaschedder
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#8

Re: Control mit Subcontrols designen

  Alt 18. Okt 2006, 11:01
Hallo,
Zitat von kolbaschedder:
Ich bin mi nicht ganz sicher, allerdings benutzt der Object-Inspector die Unit TypInfo.pas und hangelt sich Anhand der TObject-eigenschaft Components[] durch die Compnenten.
Daher solltest du bei deinen Subcomponenten das Create(Aowner : TComponent) mit der erzeugenden Compnente aufrufen also
create(self)
, keinesfalls mit Create(application), oder create(nil).
Das mache ich natürlich.
Zitat von kolbaschedder:
Dann noch den Parent setzen, sollte funktionieren.
Leider nein.
Zitat von kolbaschedder:
Die Frage ist, ob du die Subkomponenten nicht auch als published definieren musst. ungefähr so :
Ich habe ja nicht nur eine Subkomponente, sondern beliebig viele. Und leider hilft es auch nichts, diese als published zu deklarieren.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
kolbaschedder

Registriert seit: 24. Aug 2006
Ort: Schwäbisch Gmünd
55 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Control mit Subcontrols designen

  Alt 18. Okt 2006, 11:10
Delphi-Quellcode:
unit Containerdemo;

interface
 uses sysUtils, stdCtrls, extCtrls, classes ;

type tContainerDemo = class(TPanel)
  private
    fEdit : tEdit;
  public
    constructor Create(Aowner : Tcomponent);override;
    destructor Destroy;override;
  published
    property edit : tEdit read fEdit write fEdit;
  end;


procedure Register;
implementation
procedure Register;
begin
  registerComponents('demo', [tContainerDemo]);
end;

constructor tContainerDemo.Create(Aowner : Tcomponent);
begin
  inherited;
  fEdit := TEdit.Create(Aowner);
  fEdit.Parent := self;
  fEdit.Name := 'CD_Edit';
  fEdit.Top := 0;
  fEdit.width := self.Width ;
end;

destructor tContainerDemo.Destroy;
begin
  fEdit.Free;
  inherited;
end;

end.
funktioniert bei mir.
mit "fEdit.Name" musst du aufpassen, da der Name Eindeutig oder leer sein muss.

MfG

Kolbaschedder
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#10

Re: Control mit Subcontrols designen

  Alt 18. Okt 2006, 15:28
Hallo,

ich habe das Problem gelöst. Man muss die Subkomponenten mit dem Form als Owner erzeugen, dann sind sie im Designer verfügbar.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:29 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