Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Befehle aus Listbox ausgliedern? (https://www.delphipraxis.net/44764-befehle-aus-listbox-ausgliedern.html)

Hallo_Thomas 24. Apr 2005 13:16


Befehle aus Listbox ausgliedern?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Habe dieser Art Befehl eindeutig zuviele in der Listbox stehen;
kann ich den Befehl irgendwohin ausgliedern, damit die Listbox wieder schneller wird?

Delphi-Quellcode:
begin
      Counter := 0;
      for g := MeineListe.count-1 DownTo 0 do
        begin
        if StrToInt(MeineListe.Strings[g]) in [1,3,10] then
          Inc(Counter)
            else if StrToInt(MeineListe.Strings[g]) in [6] then
              Counter := 0 ;
              Label1.Caption:= IntToStr(Counter) ;
        end;
      end;

Danke

Pr0g 24. Apr 2005 13:27

Re: Befehle aus Listbox ausgliedern?
 
Der Code rechnet doch nur etwas, abhängig von den Items der ListBox, aus. Also würde es reichen die Rechung nur dann auszuführen, wenn ein Item hinzukommt. Pack den Code also in eine eigene Prozedur und ruf diese immer nach dem Einfügen eines Items auf.

Edit: Außerdem musst du die StringList noch im onDestroy der Form freigeben. Warum nutzt du überhaupt eine zusätzliche StringList? Du kannst doch direkt die Items der ListBox nehmen, ist ja auch nur ne StringList.

MfG Pr0g

leddl 24. Apr 2005 13:29

Re: Befehle aus Listbox ausgliedern?
 
Also als allererstes mal kannst du natürlich - wie ich dir bereits in deinem alten Thread gesagt habe - die Anzeige im Label aus der For-Schleife auslagern. Das geht sowieso nicht so schnell.
Außerdem kannst du doch einfach bei jeder Eingabe direkt prüfen, wieviele 1er, 3er und 7er seit der letzten 6 eingegeben wurden. Mußt ja nich jedes mal die ganze ListBox durchgehen.
Einfach zb ne globale Variable, die du im Create auf 0 setzt. Dann überprüfst du bei jeder Eingabe, obs ne 1, 3 oder 7 is und erhöhst sie. Wird ne 6 eingegeben, setzt du sie halt wieder auf 0. Sollte dir viel Rechenzeit sparen.

Hallo_Thomas 24. Apr 2005 13:39

Re: Befehle aus Listbox ausgliedern?
 
Ich bin ja noch nicht ganz so in der Materie vertieft, ich brauche am besten Beispiel dazu damit ichs versteh.

Unter die Button hab ichs deswegen nicht geschrieben, weil ich die Stringliste gern abspeichern wollte und weils im Orginal ca. 40 solcher Buttons gibt, und ca. genu so viele Labels.

Hallo_Thomas 24. Apr 2005 13:47

Re: Befehle aus Listbox ausgliedern?
 
Der gedanke der mir dabei schwebte mit der zusätzlichen Stringlist war der, das die Listbox entlastet werden würde und dadurch eine schnelle Anzeige ermöglicht würde, war leider nicht der Fall. Dies klappt im Moment nur in einer sepperaten 2.Listbox, leider funktioneren bei einem Reset dann die Labels nicht wenn ich die2. Lisbox über die 1. schiebe.

Pr0g 24. Apr 2005 14:00

Re: Befehle aus Listbox ausgliedern?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hab dein Beispiel mal angepasst und als Beispiel #1 angehangen. Eine weitere Optimierung ist in Beispiel #2 zu finden, dort werden die Werte in der Tag-Eigenschaft der Buttons gespeichert.

leddl 24. Apr 2005 14:00

Re: Befehle aus Listbox ausgliedern?
 
Zitat:

Zitat von Hallo_Thomas
Unter die Button hab ichs deswegen nicht geschrieben, weil ich die Stringliste gern abspeichern wollte und weils im Orginal ca. 40 solcher Buttons gibt, und ca. genu so viele Labels.

Versteh ich nich... :gruebel:
Was hat denn das Auslagern in eine Prozedur für eine Auswirkung auf das Speichern der ListBox?
Du mußt doch einfach nur in jedem ButtonClick eine Prozedur aufrufen, die den Counter entsprechend erhöht oder zurücksetzt.

Hallo_Thomas 24. Apr 2005 16:44

Re: Befehle aus Listbox ausgliedern?
 
Dadurch dürften dann doch im Label nicht mehr die alten werte stehen dachte ich?

leddl 24. Apr 2005 16:50

Re: Befehle aus Listbox ausgliedern?
 
Ich versteh das ganze Problem immer noch nicht? Du sagst, du hast umdie 40 Labels. In deinem geposteten Quelltext wird aber doch auch nur eines beschrieben. Genau das kannst du doch auch in eine externe Funktion auslagern. Zur Not kannst du über Delphi-Referenz durchsuchenFindComponent auch noch per Parameterübergabe bestimmen, in welchem Label angezeigt werden soll.

Hallo_Thomas 24. Apr 2005 17:37

Re: Befehle aus Listbox ausgliedern?
 
Nicht in dem Text, aber im Richtigen sind fast so viel.

Hab jetzt gerade das eine schöne Programm runtergeladen, ich nglaub das triffts im wesentlichen.

da habe ich wieder ein altes Problem



Delphi-Quellcode:
AddMyItem('1', clRed);

Ich möchte in der Listbox die aktuellste Zahl gern oben haben

Delphi-Quellcode:
InsertMyItem(0,'1', clRed);
hab ich da versucht, hat aber nicht funktioniert


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 Uhr.
Seite 1 von 2  1 2      

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