AGB  ·  Datenschutz  ·  Impressum  







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

TLabel Probleme beim freigeben

Ein Thema von RaGro · begonnen am 10. Aug 2008 · letzter Beitrag vom 10. Aug 2008
Antwort Antwort
Seite 1 von 2  1 2      
RaGro

Registriert seit: 10. Aug 2008
Ort: Griesheim
15 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#1

TLabel Probleme beim freigeben

  Alt 10. Aug 2008, 13:36
Hallo @all

Ich habe ein kleines Problem mit dem ich nicht weiter komme.
Während der Laufzeit des Programm erstelle ich TLabels und will die auch wieder während der Laufzeit löschen.
Nun, also zum Problem...
Ich kann die TLabels nicht mehr löschen da ich immer den Fehler des Index außerhalb des gültigen Bereiches komme.
Der Index ist jedoch zum Zeitpunkt 5 und componentcount hat 62 Objekte zu diesem zeitpunkt...

Ein Hinweis noch... Lösche ich den TLabel mit Namen direkt funktioniert es (z.B. Label6.free)
Zur Entwurfszeit weiß ich jedoch noch nicht wieviele TLabel ich bekomme.

Wo ist mein Fehler?????



Hier erst einmal der Source Code zum erstllen.

Delphi-Quellcode:
procedure TForm6.BitBtn10Click(Sender: TObject);
var
x,y:integer;
a:TLabel;
begin
  x:=1;
  for y:=0 to componentcount-1 do
  if components[y]is TLabel then x:=x+1;
  a:=TLabel.Create(Form6);
  a.name:='Label'+inttostr(x);
  a.Parent:=Form6;
  a.Left:=100;
  a.Font.Size:=12;
  a.Font.Style:=[fsbold];
  a.Top:=50;
  a.tag:=37;
  a.OnMouseMove:=Image1Mousemove;
  a.OnClick:=statictext6click;
 end;

Hier das Procedure zum löschen.

Delphi-Quellcode:
procedure TForm6.BitBtn8Click(Sender: TObject);
var
x:integer;
f:textfile;
a:Timage;
b:TMemo;
c:TLabel;
s:string;
begin
  opendialog1.filterindex:=1;
  if OpenDialog1.Execute then
  begin
   x:=0;
   while x<componentcount-1 do
   if (components[x])is TLabel then
    begin
     with components[x]do
     begin
      if (Name<>'Label1')and(Name<>'Label2')and(Name<>'Label3')
          and(Name<>'Label4')and(Name<>'Label5')and(Name<>'Form6')
          then
      begin
       components[x].free;
       x:=x-1;
      end;
     end;

    x:=x+1;
   end;


Danke für eure Hilfe im Vorraus

Rainer Groer

[edit=Phoenix]Delphi-Tags eingefügt. Das nächste mal bitte selber machen. Mfg, Phoenix[/edit]
Rainer Groer
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: TLabel Probleme beim freigeben

  Alt 10. Aug 2008, 13:44
Beim Löschen die Schleife immer in umgekehrter Richtung
Markus Kinzler
  Mit Zitat antworten Zitat
RaGro

Registriert seit: 10. Aug 2008
Ort: Griesheim
15 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#3

Re: TLabel Probleme beim freigeben

  Alt 10. Aug 2008, 14:14
Hallo @mkinzler

Delphi-Quellcode:
   x:=componentcount-1;
   while x>-1 do
   begin
   if (components[x])is TLabel then
    begin
     with components[x]do
     begin
      if (Name<>'Label1')and(Name<>'Label2')and(Name<>'Label3')
          and(Name<>'Label4')and(Name<>'Label5')and(Name<>'Form6')
          then components[x].free;
     end;
    end;
    x:=x-1;
   end;
ok, habe ich geändert, jedoch ist mein Problem noch immer das gleiche und auch die Gleiche Fehlermeldung.

Mein programmtext war nicht ganz so schön, da ich durch das löschen meiner TImages und TMemos bedingt, meinen Zähler um 1 reduziert habe,
aber man weiß ja nie ob es nicht doch auswirkungen hat....

Vielen Dank auch das du dich meines Problems annimmst

Grüsse

Rainer Groer

[edit=Matze][delphi]-Tags eingefügt.
Wie bereits geschrieben wurde: Bitte schließe deinen Source zukünftig selbst in die [delphi]-Tags ein. MfG, Matze[/edit]
Rainer Groer
Rainer Groer
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

Re: TLabel Probleme beim freigeben

  Alt 10. Aug 2008, 14:18
Hast Du die Labels beim Anlegen benannt?

[edit] Denkfehler, spielt keine Rolle, sry [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: TLabel Probleme beim freigeben

  Alt 10. Aug 2008, 14:19
Mit andersrum meine ich von oben, also absteigend

Denn wenn du von vorne zählst, ändert das Löschen den Index der folgenden Elemente und sorgt dafür das die Grenze nicht mehr existiert.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

Re: TLabel Probleme beim freigeben

  Alt 10. Aug 2008, 14:23
Delphi-Quellcode:
for x := componentcount-1 downto 0 do
   begin
     if ((components[x])is TLabel) and (components[x].Name<>'Label1') and (components[x].Name<>'Label2') and
        (components[x].Name<>'Label3') and (components[x].Name<>'Label4') and (components[x].Name<>'Label5') and
        (components[x].Name<>'Label6') then
       TLabel(components[x]).free;
  end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
RaGro

Registriert seit: 10. Aug 2008
Ort: Griesheim
15 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#7

Re: TLabel Probleme beim freigeben

  Alt 10. Aug 2008, 14:32
Hallo @DeddyH

Ja, die Labels werden benannt und zwar in der logischen reihenfolge, d.h. ich schaue erst einmal zur Laufzeit wieviele TLabels aktuell existieren, dann setzte ich eine Variable auf diesen Punkt und dann wird der Name vergeben Label plus die Variable.

@ MKinzler

Hatte ich schon verstanden, da ich jedoch hochgezählt hatte, habe ich nach jedem löschen eines Objektes den Zähler wieder um eins erniedrigt, componentcount wird automatisch um einen reduziert und voila.. meine Grenze existier und funktioniert...
das hatte ich gemeint mit...mein Code sah nicht so schön aus zu dem zeitpunkt
Eleganter ist die Lösung von Anfang an von dir mit von oben nach unten zählen!



Grüsse Rainer

PS... @Matze und Phoenix

kann mir einer erklären wie ich meien Code formatiere das er so nett aussieht wie bei Euch


Danke

Rainer Groer
Rainer Groer
Rainer Groer
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#8

Re: TLabel Probleme beim freigeben

  Alt 10. Aug 2008, 14:34
Code markieren und auf den Button "Delphi" klicken oder von Hand in  und einschließen. Hast Du übrigens meinen Code mal ausprobiert?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: TLabel Probleme beim freigeben

  Alt 10. Aug 2008, 14:35
Zitat:
kann mir einer erklären wie ich meien Code formatiere das er so nett aussieht wie bei Euch
Code markieren und Delphi-Code unter Oft benutzt anklicken
Markus Kinzler
  Mit Zitat antworten Zitat
RaGro

Registriert seit: 10. Aug 2008
Ort: Griesheim
15 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#10

Re: TLabel Probleme beim freigeben

  Alt 10. Aug 2008, 14:45
@ DeddyH

Dein Code funktioniert SUPER!!!

Vielen Dank

Warum es bei deiner Routine geht und bei mir nicht ging ist mir jetzt auch klar geworden!!!

Ich hatte nich TLabel(components[x]).free sondern nur components[x].free

Bei meinen TImages und TMemos hat das gelangt.....hmmmmm...


VIELEN DANK auf jeden Fall für die schnelle Hilfe



Rainer Groer
Rainer Groer
Rainer Groer
  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 16:56 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