![]() |
AW: TObjectList Problem
Bingo.... das erschien mir die einfachste möglichkeit zu prüfen, warum der auf jegliche kommandos, die ich der OL zugewiesen habe (wie beispielsweise das Löschen von Objekten oder das freigeben der Liste) nicht reagiert hat.
Ich habe also (mithilfe meines besten freundes Showmessage()) mir anzeigen lassen, dass ich zum zeitpunkt, wo sich (beispielsweise) 5 Panels auf dem Formular befinden, sich jedoch 0 in meiner OL befinden. Darum hier die Frage: Was mache ich falsch? PS: Wenn ich bei meinen Profileinstellungen D5 angebe dann lässt sich daraus schließen dass ich auch D5 benutze. Dankeschön; |
AW: TObjectList Problem
Da ShowMessage dein Freund ist:
Delphi-Quellcode:
Was zeigt bekommst du mit ShowMessage denn da angezeigt?
procedure SpawnPanel(PanelX,PanelY: Integer);
begin NewPanel := TPanel.Create(Application); ShowMessage( IntToStr( PanelsList.Count ) ); PanelsList.Add(NewPanel); ShowMessage( IntToStr( PanelsList.Count ) ); with NewPanel do begin Name := 'Panel' + IntToStr(PanelID); PanelID := PanelID + 1; Left := PanelX; Top := PanelY; Caption := ObjectCaption; Parent := fmPool; Enabled := False; { ... } OnClick := fmPool.SelectObject; end; end; Oder wird dieses ShowMessage evtl. gar nicht aufgerufen? |
AW: TObjectList Problem
Ich hab das jetzt mal unter Delphi 2007 so versucht:
Delphi-Quellcode:
Klappt einwandfrei, soweit ich feststellen konnte.
type
TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } FPanels: TObjectList; FPanelID: integer; procedure SpawnPanel(PanelX, PanelY: integer); public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin SpawnPanel(10, 10); end; procedure TForm1.Button2Click(Sender: TObject); begin FPanels.Clear; FPanelID := 1; end; procedure TForm1.FormCreate(Sender: TObject); begin FPanels := TObjectList.Create; FPanelID := 1; end; procedure TForm1.FormDestroy(Sender: TObject); begin FPanels.Free; end; procedure TForm1.SpawnPanel(PanelX, PanelY: integer); var NewPanel: TPanel; begin NewPanel := TPanel.Create(nil); NewPanel.Left := PanelX; NewPanel.Top := PanelY; NewPanel.Parent := self; NewPanel.Name := 'Panel' + IntToStr(FPanelID); FPanels.Add(NewPanel); ShowMessage(IntToStr(FPanels.Count)); inc(FPanelID); end; |
AW: TObjectList Problem
Zitat:
Beim zweiten kommt 1! Hallo leute... habe gerade bemerkt dass ich den Showmessage unten falsch platziert habe, wewegen immer 0 rauskam. Das war zwar ein fehler meiner prüfung, aber den Fehler des Programms habe ich noch nicht gefungen. Zum ersten: Ich brauche sehr wohl ein Parent, sonst wird der Panel nicht angezeigt. Und wieso wird der Panel nicht gelöscht, wenn er doch in der liuste ist und diese freigegeben wird? Danke |
AW: TObjectList Problem
Natürlich brauchst Du einen Parent, aber keinen Owner (richtig lesen!).
|
AW: TObjectList Problem
Jaja is ja gut habe ich auch im nachhinein gemerkt. Wollte es nur bei einer Bearbeitung meiner Post lassen....
mfg EDIT: Wie soll das gehen.. ich erhalte immer eine Fehlermeldung (nicht genügend parameter).... egal ich google man danach trotzdem bis hierhin danke.... jetzt muss ich nur noch das wesentliche problem lösen |
AW: TObjectList Problem
Hast Du mein Beispiel von oben einmal ausprobiert? Verhält es sich dort genauso?
|
AW: TObjectList Problem
Nein noch nicht... mache ich morgen .... man schreibt sich.... danke aber schonmal für die Hilfe ;)
bd |
AW: TObjectList Problem
Zitat:
Muß nicht gleich multithread sein ... rekursive Aufrufe reichen schon aus. Variablen muß man also immer so nah wie möglich an deren Verwendungsort, bzw. an deren Gültigkeitsbereich deklarieren. |
AW: TObjectList Problem
Wo siehst Du in dem geposteten Code eine Rekursion? Dass die globalen Variablen alles andere als schön sind, wurde ja bereits gesagt und eine Alternative von mir gezeigt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:03 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