TLabel entfernen
-
- Beiträge: 489
- Registriert: Sa 5. Apr 2008, 09:37
- OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
- CPU-Target: 32Bit /64 Bit
- Wohnort: Nähe Freiburg i.Br.
TLabel entfernen
Hallo zusammen,
ich hab schon wieder ne frage zu Tlabel.
Ich möchte auf Mausklick mein TLabel wieder entfernen können.
Mit : freeandNil(self); zieh ich mir aber ja den Boden unter den Füssen weg und bekomme eine Exception.
Wie kann ich das im onClick-event des TLabel umsetzten?
Danke Gruss
KH
ich hab schon wieder ne frage zu Tlabel.
Ich möchte auf Mausklick mein TLabel wieder entfernen können.
Mit : freeandNil(self); zieh ich mir aber ja den Boden unter den Füssen weg und bekomme eine Exception.
Wie kann ich das im onClick-event des TLabel umsetzten?
Danke Gruss
KH
Re: TLabel entfernen
Dazu gab's heute schon mal eine Antwort auf der Mailing-Liste. Kannst es ja mal so probieren:
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.ReleaseComponent(TComponent(Sender));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.ReleaseComponent(TComponent(Sender));
end;
-
- Beiträge: 489
- Registriert: Sa 5. Apr 2008, 09:37
- OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
- CPU-Target: 32Bit /64 Bit
- Wohnort: Nähe Freiburg i.Br.
hallo zusammen,
also 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
also 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
-
- Beiträge: 374
- Registriert: Mi 13. Sep 2006, 15:57
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Hagen a.T.W.
- Kontaktdaten:
Also ich benutze in meinem dbmaker, dessen Sourcecode ich ja mitveröffentlicht habe, folgende Routine, um TLabel und TEdit wieder von einem Frmular zu entfernen, weil ja jede neue Datenbank eine andere Struktur besitzt und bei der Umschaltung von dem Tabellenmodus zur Einzelsatzdarstellung wird diese Routine aufgerufen:
Vielleicht hilft es ja.
ralli
Code: Alles auswählen
procedure TForm1.form_clear;
var I : Integer;
var DBLabel : TLabel;
var DBEdit : TDBEdit;
var DBMemo : TDBMemo;
begin
If Datenbank.Active then
begin
for i := 0 to Datenbank.FieldCount -1 do
begin
// sucht nach Name
DBEdit := TDBEdit(FindComponent('Editfeld_' + IntToStr(i)));
// entfernt Komponente
DBEdit.Free;
DBLabel := TLabel(FindComponent('Label_' + IntToStr(i)));
DBLabel.Free;
DBMemo := TDBMemo(FindComponent('Memofeld_' + IntToStr(i)));
DBMemo.Free;
end;
end;
end;
ralli
Aber die Frage war doch, wie man eine Komponente in ihrer eigenen Ereignisbehandlungsroutine freigibt.
Wie sinnvoll das ist, kann ich nicht beurteilen, da khh immer nur "Schrittchen-Fragen" stellt.
http://www.lugbz.org/documents/smart-qu ... .html#goal" onclick="window.open(this.href);return false;
Wie sinnvoll das ist, kann ich nicht beurteilen, da khh immer nur "Schrittchen-Fragen" stellt.

http://www.lugbz.org/documents/smart-qu ... .html#goal" onclick="window.open(this.href);return false;
Application.ReleaseComponent(); klappt nicht?
http://www.mail-archive.com/lazarus@laz ... 01847.html" onclick="window.open(this.href);return false;
http://www.mail-archive.com/lazarus@laz ... 01847.html" onclick="window.open(this.href);return false;
-
- Beiträge: 489
- Registriert: Sa 5. Apr 2008, 09:37
- OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
- CPU-Target: 32Bit /64 Bit
- Wohnort: Nähe Freiburg i.Br.
Hallo zusammen,
PS das mit den
werde ich zukünfig beherzigen
Gruss KH
das funktioniert bis zum letzten Label, erst da schmiert das Programm ab.Doch "Application.ReleaseComponent(Label1)" in "procedure Form1.Label1Click(Sender)" funktioniert. Da ist was anderes nicht o.K
PS das mit den
Wie sinnvoll das ist, kann ich nicht beurteilen, da khh immer nur "Schrittchen-Fragen" stellt
werde ich zukünfig beherzigen
Gruss KH
-
- Beiträge: 65
- Registriert: Sa 27. Okt 2007, 13:27
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Seebergen
Hallo khh!
Brint's denn was, wenn das lezte Label nur versteckt wird?
Wenn beim lezten Label gar nix mehr geht, (also immer abstürzt) kann dann sein das kein Handle mehr da ist?
Sind das denn sehr viele Labels? So das sie nicht schon im Formulareditor erzeugt werden können (Visible := Fals;). Und erst wenn sie gebraucht werden, werden sie ein und aus geblendet. Geht das nicht?
Tschüsss erst mal!
Sind das die Labels? Wenn ja, dann muss ich das auch erst mal testen. Ich habe nur mit dem Formulareditor getestet und da geht alles weg, bis auf's letzte.Alsoo ich erzeuge zur Laufzeit mehrere :
MyLabel := TMyLabel.create(self);
Brint's denn was, wenn das lezte Label nur versteckt wird?
Wenn beim lezten Label gar nix mehr geht, (also immer abstürzt) kann dann sein das kein Handle mehr da ist?
Sind das denn sehr viele Labels? So das sie nicht schon im Formulareditor erzeugt werden können (Visible := Fals;). Und erst wenn sie gebraucht werden, werden sie ein und aus geblendet. Geht das nicht?
Tschüsss erst mal!