![]() |
Anordnungsfolge der zur Laufzeit erstellten Komponten
Hi
Ich habe ein TFrame (FrameDirectories) in welchem eine ScrollBox (Container) liegt. In der Klasse TFrameDirectories habe ich die public function NewFileEntry... Diese Funktion erstellt mir einen Eintrag in die ScrollBox mit einem Label einem Image und ein paar Checkboxen... Auf dem Frame befindet sich auch ein Edit und ein Btn. Ich kann über die Funktion NewFileEntry Einträge in die ScrollBox erstellen. Das klappt, solange ich die Funktion NewFileEntry von dem Frame Selber ausführe... Das Frame selber befindet sich in irgendeinem Panel in meiner Applikation... Wenn ich über den FrameButton die Einträge mache funzt alle perfekt. PROBLEM: Sobald ich die Funktion der Frameinstanz von einem anderen Ort als das Frame selber ausführe, erstellt es mir zwar den Eintrag, aber alle Komponenten werden am falschen Ort erzeugt. als ob die Komponenten nicht nach dem Code, sondern rückwärts erzeugt werden. Quasi Spiegelverkehrt... Auf jeden Fall nicht in der Reihenfolge wie in der untenstehenden Funktion angegeben... Hat jemand eine Idee?
Delphi-Quellcode:
procedure TFrameDirectories.NewFileEntry(Caption: string);
var GB: TGroupBox; CBR, CBW, CBFULL, CBMod, CBList, CBExecute: TCheckBox; Lab: TLabel; Img: TImage; BtnDel: TRibbonButton; begin // GroupBox GB := TGroupBox.Create(Container); GB.Align := alTop; GB.Parent := Container; GB.Height := 30; GB.OnClick := ClickFileEntry; GB.OnExit := LeaveFileEntry; // Component #0 Delete Button BtnDel := TRibbonButton.Create(GB); BtnDel.OnClick := BtnDelClick; BtnDel.Align := alRight; BtnDel.Width := 20; BtnDel.Caption := 'x'; BtnDel.Font.Style := [fsBold]; BtnDel.Font.Color := clRed; // ImageList1.GetIcon(1, BtnDel.Picture.Icon); BtnDel.Parent := GB; // Component #1 WRITE CBW := TCheckBox.Create(GB); CBW.OnClick := CBClick; CBW.Align := alRight; CBW.Parent := GB; CBW.Name := 'W'; CBW.Caption := ''; CBW.Width := 30; // Component #2 READ 1 CBR := TCheckBox.Create(GB); CBR.OnClick := CBClick; CBR.Align := alRight; CBR.Parent := GB; CBR.Name := 'R'; CBR.Caption := ''; CBR.Width := 30; // Component #3 List Directorycontent 2 CBList := TCheckBox.Create(GB); CBList.OnClick := CBClick; CBList.Align := alRight; CBList.Parent := GB; CBList.Name := 'ListDirs'; CBList.Caption := ''; CBList.Width := 30; // Component #4 Read, Execute CBExecute := TCheckBox.Create(GB); CBExecute.OnClick := CBReadExecuteClick; CBExecute.Align := alRight; CBExecute.Parent := GB; CBExecute.Name := 'X'; CBExecute.Caption := ''; CBExecute.Width := 30; // Component #5 Modify CBMod := TCheckBox.Create(GB); CBMod.OnClick := CBModifyClick; CBMod.Align := alRight; CBMod.Parent := GB; CBMod.Name := 'M'; CBMod.Caption := ''; CBMod.Width := 30; // Component #6 Fullaccess CBFULL := TCheckBox.Create(GB); CBFULL.OnClick := CBFullAccessClick; CBFULL.Align := alRight; CBFULL.Parent := GB; CBFULL.Name := 'F'; CBFULL.Caption := ''; CBFULL.Width := 30; // Component #7 LABEL Lab := TLabel.Create(GB); Lab.Align := alLeft; Lab.Caption := Caption; Lab.Parent := GB; // Component #8 Folder Icon Img := TImage.Create(GB); Img.Align := alLeft; ImageList1.GetIcon(0, Img.Picture.Icon); Img.Parent := GB; end; |
Re: Anordnungsfolge der zur Laufzeit erstellten Komponten
Zitat:
|
Re: Anordnungsfolge der zur Laufzeit erstellten Komponten
Hi...
Das ist eine TScrollBox... die heisst einfach Container. Ich habe das Problem nun umgehen können, indem ich das Frame während der erstellung kurz anzgeigen lasse, denn dann besteht das komische Problem nicht... Dies erstellt alles in der richtigen Reihenfolge:
Delphi-Quellcode:
Dies nicht:
FrameBla1.Show;
FrameBla1.NewFileEntry('test'); FrameBla1.Hide;
Delphi-Quellcode:
Nun denn, ist zwar ein wenig unschön, klappt jedoch.
FrameBla1.NewFileEntry('test');
Hat trotzdem jemand eine Idee warum das so ist? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz