Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Namensgenerierung von Subkomponenten

  Alt 7. Nov 2009, 12:21
Tut mir Leid dass ich jetzt schon pushe, aber wenn ichs heute Abend um halb 10 mache, dann ist wieder keiner online

Hab mal ein Bild angehangen was mein Problem "in Aktion" zeigt. Die "Pages" meines "TPanelControl"s bekommen halt keinen Namen zugewiesen wenn ich sie zur Designtime hinzufüge...
Ich will prinzipiell ja sowas ähnliches wie ein PageControl bauen. Die Tabsheets sind in der Liste aber auch irgendwie so halb transparent dargestellt... Meine Pages nicht. Weiß nicht in wie weit das jetzt mit meinem Problem zusammen hängt. Ich hab mir schon den Code vom PageControl und vom Tabsheet angeguckt, aber konnte da keine nützlichen Infos rausziehen

Hier auch ein bisschen Code von mir, der evtl relevant sein könnte:

Delphi-Quellcode:
// Im Moment noch etwas chaotisch aufgrund von "Ausprobierphase"

constructor TPanelControl.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FIndex := -1;
  FPanels := TPanelSheetList.Create(false);
end;

procedure TPanelControl.AddPage;
var tmp: TPanelSheet;
      f: TCustomForm;
begin
  f := Owner as TCustomForm;

  if csDesigning in ComponentState then
    tmp := TPanelSheet.Create(f)
  else
    tmp := TPanelSheet.Create(Self);
  tmp.Parent := Self;

  if f.Designer <> nil then
    f.Designer.Modified;

  FPanels.Add(tmp);
  FIndex := FPanels.Count-1;
end;


{ TPanelSheet }

constructor TPanelSheet.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Align := alClient;
end;
Und dann ein KomponentenEditor für TPanelControl:

Delphi-Quellcode:
unit ComponentEditors;

interface

uses DesignIntf, DesignEditors,

     PanelControl;

type
  TPanelControlEditorPopup = class(TComponentEditor)
  public
    function GetVerbCount: Integer; override;
    function GetVerb(Index: Integer): string; override;
    procedure ExecuteVerb(Index: Integer); override;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponentEditor(TPanelControl, TPanelControlEditorPopup);
end;

{ TPanelControlEditorPopup }

procedure TPanelControlEditorPopup.ExecuteVerb(Index: Integer);
begin
  TPanelControl(Component).AddPage;
end;

function TPanelControlEditorPopup.GetVerb(Index: Integer): string;
begin
  Result := '&Add Page';
end;

function TPanelControlEditorPopup.GetVerbCount: Integer;
begin
  Result := 1;
end;

end.
Sowohl TPanelControl als auch TPanelSheet sind von TCustomPanel abgeleitet.

Wäre echt froh, wenn mir jemand helfen könnte

Gruß
Neutral General
Miniaturansicht angehängter Grafiken
problem_105.png  
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat