AGB  ·  Datenschutz  ·  Impressum  







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

Controls wärend der Laufzeit ENTFERNEN.

Ein Thema von tomate007 · begonnen am 12. Nov 2007 · letzter Beitrag vom 12. Nov 2007
Antwort Antwort
Seite 1 von 2  1 2      
tomate007

Registriert seit: 1. Apr 2007
46 Beiträge
 
#1

Controls wärend der Laufzeit ENTFERNEN.

  Alt 12. Nov 2007, 10:26
Hallo Gemeinde,
ich hab da mal wieder ein kleines Problem ^^

und zwar möchte ich wärend der Laufzeit Controls entfernen.
In der Code Libery habe ich schon was zum entfernen der Codes wärend der Laufzeit gefunden, allerdings entfernt da sich der Control selber.

Ich bräuchte allerdings eine Procedure mit der Ich andere Button killen kann, d.h.

Klickt einer auf Button1 soll in der ScrollBox1 die Button 2 und 3 entfernt werden.

Leider habe ich den Code aus der Code Libery nicht umschreiben können das es funktioniert.... bin denk ich ma zu doof

Hoffe es kann mir einer helfen

Link zur CodeLibery: http://www.delphipraxis.net/internal...ct.php?t=29732

MFG
Andre
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Controls wärend der Laufzeit ENTFERNEN.

  Alt 12. Nov 2007, 10:30
Wie hast du es versucht?
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Controls wärend der Laufzeit ENTFERNEN.

  Alt 12. Nov 2007, 10:30
Hallo Andre,

es ist so einfach:

Delphi-Quellcode:
procedure TDemoForm.Button1Click(Sender: TObject);
begin
  Button2.Free;
  Button3.Free;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Controls wärend der Laufzeit ENTFERNEN.

  Alt 12. Nov 2007, 10:45
Zitat von tomate007:
Klickt einer auf Button1 soll in der ScrollBox1 die Button 2 und 3 entfernt werden.
Entfernen? Die Anwendung interessiert mich doch mal Sicher, das "verstecken" nicht ausreicht? ...
Chris
  Mit Zitat antworten Zitat
tomate007

Registriert seit: 1. Apr 2007
46 Beiträge
 
#5

Re: Controls wärend der Laufzeit ENTFERNEN.

  Alt 12. Nov 2007, 12:03
Zitat von Deep-Sea:
Zitat von tomate007:
Klickt einer auf Button1 soll in der ScrollBox1 die Button 2 und 3 entfernt werden.
Entfernen? Die Anwendung interessiert mich doch mal Sicher, das "verstecken" nicht ausreicht? ...
Doch, die müssen ENTFERNT werden. Da die nachher wieder neu erzeugt werden und delphi sonst mekkert das Edit1 schon vorhanden ist also von dahher muüssen die dynamisch erzeugten felder wieder gelöscht werden bevor diese wieder dynamisch erzeugt werden können.

Aber die Lösung von marabu funktioniert ^^ so einfach ist es also... danke euch
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Controls wärend der Laufzeit ENTFERNEN.

  Alt 12. Nov 2007, 12:27
Zitat von tomate007:
Doch, die müssen ENTFERNT werden. Da die nachher wieder neu erzeugt werden [...]
Genau das meine ich ja. Erst freigeben, dann wieder erzeugen, freigeben, erzeugen, usw. Sieht halt aus, als wäre es wie geschaffen für TControl.Hide und TControl.Show ^^ Ist halt die Frage, warum sie unbedingt freigegeben und neu erzeugt werden müssen ...
Chris
  Mit Zitat antworten Zitat
tomate007

Registriert seit: 1. Apr 2007
46 Beiträge
 
#7

Re: Controls wärend der Laufzeit ENTFERNEN.

  Alt 12. Nov 2007, 13:21
Also die müssen meiner Meinung nach neu erzeugt werden da die Situation so aussieht:

Alle Felder und Labels werden dynamisch aus einer CSV erzeugt.
Diese CSV wird durch ein anderes Programm wärend der Laufzeit geändert.
d.h. der Inhalt aus der ersten Zelle der CSV wird in Edit1 geschrieben und die überschrift dazu in Label1.
dies kann aber sich alles wärend der Laufzeit ändern, sodass ich wenn der User auf Aktuallisieren klickt nicht weiß ob die Caption von Label 1 immernoch die Überschrift der Spalte 1 ist und ich weiß auch nicht ob der Inhalt von Edit1 immernoch der gleiche Inhalt ist wie Zelle 1 der CSV.

Desweiteren weiß ich vorher nicht ob die CSV nicht vllt nach dem Aktuallisieren Leer ist, oder ob da noch Spalten zugekommen ist.

Da ich soviele Sachen nicht weiß, dachte ich mir das ein destroy und nachher wieder erzeugen besser wäre als tausende von Prüfungen und anschließend die dazugekommenden zu erzeugen.

Bin natürlich offen für alle Ideen, also wenn einer was besseres weiß als .free und dann wieder erzeugen immer her damit.

Dazu kommt noch das .free sehr sehr langsam ist. Also das .free mach ich gerade so:
Delphi-Quellcode:
     if pruefung = true then begin
     for i:= 1 to AnzahlSpalten-1 do begin
     TEdit(Scrollbox1.FindComponent('Edit'+ IntToStr(i))).Free;
     TLabel(Scrollbox1.FindComponent('Label'+ IntToStr(i))).Free;
     end;
     end;
dabei ist pruefung eine variable des typ boolean welche auf true gesetzt wird wenn 1mal felder erzeugt wurden.
AnzahlSpalten ist die Anzahl der Spalten der CSV wovon ich vorher (bevor die CSV durch ein anderes Programm verändert worden ist) die Objects erzeugt habe. Mit AnzahlSpalten weiß ich also wieviele Objects ich zu löschen habe.

mit FindComponents suche ich mir die dann raus da ich ja die Objects nicht mit Edit[i] oder Label[i] ansprechen kann oder??

nun klappt alles, aber ich habe bei der .free Methode eine CPU-Auslastung von 100 % also geht alles zu langsam. Gibt es eine bessere Möglichkeit???

So .... nun seit ihr wieder gefragt ^^

Danke schonmal

MFG
Andre
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Controls wärend der Laufzeit ENTFERNEN.

  Alt 12. Nov 2007, 13:30
Richtig rechenintensiv ist eigentlich nur FindComponent() - eine Methode, die du hier wirklich missbrauchst. Sie ist in erster Linie zur Unterstützung von Interaktionen gedacht, wo ihr Laufzeitverhalten von der Arbeitsgeschwindigkeit des Benutzers überdeckt wird.

Warum verwendest du kein Grid oder eine ListView für deine CSV-Daten?
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Controls wärend der Laufzeit ENTFERNEN.

  Alt 12. Nov 2007, 13:32
Na dann ergibt es schon mehr Sinn
Was ein besserer und/oder schnellerer Weg wäre, kommt darauf an, wie genau die Edits und Labels dargestellt werden. Vlt. wäre ein Liste ya besser?!

PS: Das casten bei FindComponent kannst du dir sparen, jedes TObject kennt .Free ^^
Chris
  Mit Zitat antworten Zitat
tomate007

Registriert seit: 1. Apr 2007
46 Beiträge
 
#10

Re: Controls wärend der Laufzeit ENTFERNEN.

  Alt 12. Nov 2007, 13:48
Zitat von marabu:
Richtig rechenintensiv ist eigentlich nur FindComponent() - eine Methode, die du hier wirklich missbrauchst. Sie ist in erster Linie zur Unterstützung von Interaktionen gedacht, wo ihr Laufzeitverhalten von der Arbeitsgeschwindigkeit des Benutzers überdeckt wird.

Warum verwendest du kein Grid oder eine ListView für deine CSV-Daten?
Also im Geheimen verwände ich ja ein StringGrid, in dem ich dann die CSV reinlade und mir dann die Anzahl der Spalten und Zeilen sowie die Überschriften der Spalten auslese und mit diesen Daten dann halt die Objects erzeuge.
Nur da die CSV aktuallisiert wird wärend der Laufzeit muss ich dann wenn der User auf den Button aktuallisieren klickt die CSV einlesen in das StringGrid und dann halt wieder die Objects neu erzeugen.


Zitat von Deep-Sea:
Na dann ergibt es schon mehr Sinn
Was ein besserer und/oder schnellerer Weg wäre, kommt darauf an, wie genau die Edits und Labels dargestellt werden. Vlt. wäre ein Liste ya besser?!

PS: Das casten bei FindComponent kannst du dir sparen, jedes TObject kennt .Free ^^

OK, das casten hab ich wieder weggenommen. Aber ist natürlich immernoch alles langsam.

Und FindComponent() brauch ich ja weil ich muss doch irgendwie alle Labels und Edits "löschen"... wie soll ich es sonst machen wenn nicht mit FindComponent?

Ich will keinen Missbrauchen aber ich sehe keine andere Möglichkeit.... aber diese hier ist zu langsam.
Da brauch ich mal gute Ideen

Eine Liste ist nicht zu machen, der Kunde MÖCHTE vorne nen Label mit der Spaltenüberschrift und dahinter dann ein Edit.

Und was der Kunde möchte... das bekommt er ^^

MFG
Andre

PS: HELFT MIR BITTE
  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 18:12 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