AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Anordnungsfolge der zur Laufzeit erstellten Komponten
Thema durchsuchen
Ansicht
Themen-Optionen

Anordnungsfolge der zur Laufzeit erstellten Komponten

Offene Frage von "cherry"
Ein Thema von cherry · begonnen am 22. Mär 2010 · letzter Beitrag vom 23. Mär 2010
Antwort Antwort
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Anordnungsfolge der zur Laufzeit erstellten Komponten

  Alt 22. Mär 2010, 16:34
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;
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Anordnungsfolge der zur Laufzeit erstellten Komponten

  Alt 22. Mär 2010, 17:00
Zitat von cherry:
Delphi-Quellcode:
procedure TFrameDirectories.NewFileEntry(Caption: string);
...
begin
  // GroupBox
  GB := TGroupBox.Create(Container); //<---
  GB.Align := alTop;
Was auffällt ist dieser ominöse Container, was soll das sein?
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#3

Re: Anordnungsfolge der zur Laufzeit erstellten Komponten

  Alt 23. Mär 2010, 13:51
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:
  FrameBla1.Show;
  FrameBla1.NewFileEntry('test');
  FrameBla1.Hide;
Dies nicht:

  FrameBla1.NewFileEntry('test'); Nun denn, ist zwar ein wenig unschön, klappt jedoch.
Hat trotzdem jemand eine Idee warum das so ist?
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  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:01 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