Einzelnen Beitrag anzeigen

Master_BB

Registriert seit: 17. Mai 2003
285 Beiträge
 
Delphi 7 Professional
 
#5

Re: Dynamischen Wizard realisieren

  Alt 22. Apr 2005, 18:09
-selber schreiben ist immer lehrreicher und macht mehr spaß

sorry ich war arbeiten ergo erst so spät die nächste antwort,
also woher bekommst du die objekte ganz einfach du machst ne unit auf muss keine dll sein
und erstellst sie.

also hier die beiden Objete wie du sie erstellen kannst
Delphi-Quellcode:
TabSheetItem = class
private
protected
  FName : string;
  FTabSheet : TTabSheet;
public
  property Name : string read FName write FName;
  property TabSheet : TTabSheet read FTabSheet write FTabSheet;
  constructor Create(AOwner : TComponent); //WICHTIG
end;

TabSheetList = class(TObjectList)
private
protected
  FPageControl : TPageControl;
public
  constructor Create(APageControl : TPageControl);
  property PageControl : TPageControl read FPageControl write FPageControl;
  procedure LoadTabSheets;
end;

//DER TABSHEETITEM CONSTRUCTOR IST WICHTIG DAS DAS TABSHEET ERSTMAL DA IST
constructor TabSheetItem.Create(AOwner : TComponent);
begin
  inherited;
  FTabSheet := TTabSheet.Create(AOwner);
end;

constructor TabSheetList.Create(APageControL : TPageControl);
begin
  inherited Create;
  FPageControl := APageControl;
end;

procedure TabSheetList.LoadTabSheets;
var
  AQuellTabSheetNamen : TStringList;
  ATabSheetItem : TTabSheetItem;
  ItemIndex : integer;
begin
  AQuellTabSheetNamen := TStringList.Create;
  try
    AQuellTabSheetNamen := //ja die ließt du aus irgentnem gespeicherten ort ein z.B. eine INI file
                            //da das bei dir ja variiert könntest du immer paare in die ini schreiben
                            //den Namen und obs ausgeführt wird was vorher dann in die ini geschrieben wird
                            //nach verschiedenen check routinen wovon du deine tabsheets abhänig machst
    for ItemIndex := 0 to Pred(AQuellTabSheetNamen.Count) do
    begin
      ATabSheetItem := TTabSheetItem.Create(FPageControl);
      with ATabSheetItem do
      begin
        //hier setzt du jetzt die eigenschaften des tabsheet items
        //wichtig sind
        Parent := FPageControl;
        Caption := AQuellTabSheetNames[ItemIndex];
      end;
      //jetzt kannst auch die ganzen sachen die noch drauf sollen erstellen non Visuell versteht sich
      Add(ATabSheetItem); //Das item in die liste aufnehmen
    end;
  finally
    FreeAndNil(AQuellTabSheetNamen);
  end;
end;
so an sich sind dei beiden objekte dann deine schnittstelle zwischen PageControl und TabSheets.

am besten die TabSheetList erstellst du beim OnFormCreate ereignis deiner MainForm und trägst dort
die liste gleich als property in die form mit ein unter public.
beim erstellen gibst du dem objekt ja die PageControl die du auf deiner Form hast mit damit hast du in den
objekten immer zugang zu dieser Pagecontrol auf der Form und kannst jetzt im hintergrund akkern.
so und wie kommst du wenn du auf der form arbeitest immer zu deinen tabsheets? naja
die mußt du dann suchen, jedes tabsheet hat doch einen namen was du auch in das tabsheetitem einbaust
und danach durchsuchst du einfach die liste
so hier zum beispiel als suchroutine für die liste wo du einfach den tabsheet namen mitgibst
Delphi-Quellcode:
function TabSheetList.GetTabSheetWithName(AName : string) : TTabSheetItem;
var
  ItemIndex : integer
begin
  Result := nil;

  for ItemIndex := 0 to Pred(Count) do
  begin
    if CompareText(TTabSheetItem(Items[ItemIndex]).Name, AName) = 0 then
    begin
      Result := TTabSheetItem(Items[ItemIndex]);
      Break;
    end;
  end;
end;
so ich schreib jetzt oben noch schnell die tabsheet erstell routine in die liste und dann
hast du schon nen recht gut ausgerüstetes gerüst und hast gleich nen bissle objectorientierung
gelernt.
Wenn das Meer unruhig ist und der Wind die Wellen treibt, erfreut es, vom Strand aus die Mühen eines Anderen zu beobachten.
  Mit Zitat antworten Zitat