AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TLabel entfernen

Ein Thema von khh · begonnen am 22. Mai 2008 · letzter Beitrag vom 23. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#1

TLabel entfernen

  Alt 22. Mai 2008, 10:51
hallo zusammen,
ich entferne im mousedown ereignis meines TLabel mit :
Application.ReleaseComponent(TComponent(self));
das entsprechende label wieder.
das funktioniert solange ich die Labels in der Reihenfolge in der sie erstellt wurden wieder entferne. Sobald ich die Reihenfolge ändere bekomme ich beim letzten Label das entfernt wird eine exception.

Was mach ich falsch?

Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#2

Re: TLabel entfernen

  Alt 22. Mai 2008, 11:01
Moin, Moin,
nehme an, dass dadurch das Array "Components" durcheinandergewürfelt wird. Vermutlich musst du das selbst nach jedem Löschvorgang reorganisieren, wenn die Reihenfolge willkürlich ist.
Ralph
  Mit Zitat antworten Zitat
22. Mai 2008, 11:07
Dieses Thema wurde von "Phoenix" von "Object-Pascal / Delphi-Language" nach "VCL / WinForms / Controls" verschoben.
Ist ne VCL Frage
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#4

Re: TLabel entfernen

  Alt 22. Mai 2008, 11:34
@ralph
ich danke dir, werd ich prüfen

Gruss Kh
Karl-Heinz
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#5

Re: TLabel entfernen

  Alt 22. Mai 2008, 12:05
Application.ReleaseComponent(TComponent(self)); ... ist aber auch nicht ganz sauber ... ?
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#6

Re: TLabel entfernen

  Alt 22. Mai 2008, 12:27
@mario

ich weiss dass das nicht "ganz sauber" ist


nochmal konkret, wie es gerade ist:
ich erstelle per mausklick auf einer TCustomControl eine Tlabel.
im mousedown des TLabels will ich diese Labels jeweils wieder entfernen können.

Wie würdest _du_ das denn lösen ?

Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: TLabel entfernen

  Alt 22. Mai 2008, 12:28
Ich kenne mich in Lazarus nicht so aus aber vielleicht
Self.Free;
Markus Kinzler
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#8

Re: TLabel entfernen

  Alt 22. Mai 2008, 12:31
Ja, aber Self verweist doch auf die Form?
Delphi-Quellcode:
procedure TForm1.LabelMouseDown(Sender: TObject);
begin
  if (Sender is TLabel) then
    FreeAndNil (Sender);
end;
So vielleicht?
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#9

Re: TLabel entfernen

  Alt 22. Mai 2008, 17:17
hallo zusammen
self verweist nicht auf die Form sondern auf TLabel.
Ist ja auch in der procedure TMyLabel.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Das bewirkt aber wohl dass ich mir auf beide Arten, sowohl mit
freeandNil(self) oder self.free oder eben Application.ReleaseComponent(TComponent(self));
den Boden unter den füssen wegziehe. Das Ergebnis ist immer eine exception

mh, wie also krieg ich das letzte label weg ?


Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: TLabel entfernen

  Alt 22. Mai 2008, 17:21
Zitat von khh:
hallo zusammen
self verweist nicht auf die Form sondern auf TLabel.
Ist ja auch in der procedure TMyLabel.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Nein. Die Procedure lautet TForm1.MyLabel.MouseDown. Self verweist immer auf die Instanz der Klasse, in der die Methode ausgeführt wird, und da das Label auf der Form liegt, zeigt Self auf die Form.
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:19 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