AGB  ·  Datenschutz  ·  Impressum  







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

TVCheckListbox und TStringList

Ein Thema von Blackpit · begonnen am 6. Jul 2019 · letzter Beitrag vom 7. Jul 2019
Antwort Antwort
Seite 1 von 2  1 2      
Blackpit

Registriert seit: 27. Feb 2019
77 Beiträge
 
#1

TVCheckListbox und TStringList

  Alt 6. Jul 2019, 18:24
Hallo,
ich bin mit Delphi erst seit 8 Monaten am arbeiten, deshalb verzeiht meine Unwissenheit
Folgende Fragen:
Was ist der Unterschied bei der TVCheckListbox zwischen
.Checked[i] und .State[i] = cbChecked Wieso bringt mir myselection.Find(TCheckListbox(Sender).Items[i],myKat) keinen Wert im Debuger?
Wobei myselection eine interne Stringlist ist und der Event OnClickCheck einer Checklistbox im Form ausgelöst wurde.
Meine Intention ist, aus einer Checklistbox in einem Formular die markierten Einträge in einer internen Stringlist zu sammeln um sie anschließend in der DB zu speichern bzw.zu löschen.
Irgendwie gelingt mir das nicht, die Liste aktuell zu halten hier mein Versuch:
Delphi-Quellcode:
    begin
        myLst:= TCheckListbox(Sender).Name;
       if not assigned(myselection) then myselection := TStringList.create; //myselection.clear beim speichern
        begin
        myselection.Sort;
        TCheckListbox(Sender).Sorted := True;
          for i := TCheckListbox(Sender).Count-1 downto 0 do
// if TCheckListbox(Sender).Checked[i] then
          if TCheckListbox(Sender).State[i] = cbChecked then
            begin
              if not (myselection.Find(TCheckListbox(Sender).Items[i],myKat)) then myselection.Add(TCheckListbox(Sender).Items[i]);
            end
            else
            if (myselection.Find(TCheckListbox(Sender).Items[i],myKat)) and (TCheckListbox(Sender).State[i] = cbUnChecked) then
                  myselection.Delete(TCheckListbox(Sender).ItemIndex);
        end;
    end;
Was mach ich falsch?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: TVCheckListbox und TStringList

  Alt 6. Jul 2019, 19:00
Hat jetzt nichts direkt mit deinem Problem zu tun, aber ein paar Tipps zu deinem Code.

Das Erstellen der StringList innerhalb der Prozedur ist ungünstig, denn wo woird sie wieder frei gegeben? Ich fürchte, es ist eine globale Variable. Nicht schön. Erstelle die StringList in der aufrufenden Prozedure, über gib sie als Parameter und gib sie in der aufrufenden Prozedure wieder frei.

Warum arbeitest du mit dem Objekt Sender? Deine Routine sollte in einer Procedure liegen, die nichts mit den Steuerelementen zu tun hat:
Delphi-Quellcode:
Procedure DeleteCheckedItems(ChecklistBox: TVCheckListbox; MySelection: TStringList);
begin
  ...;
  ...;
end;
Das hilft auch bei der Fehlersuche.

Setz mal einen Haltepunkt mit F5 bei der ersten Anweisung und dann geh mal mit F7 Schritt für Schritt durch den Code. Springt er überhaupt in die Verzweiung?
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie ( 6. Jul 2019 um 19:03 Uhr)
  Mit Zitat antworten Zitat
Blackpit

Registriert seit: 27. Feb 2019
77 Beiträge
 
#3

AW: TVCheckListbox und TStringList

  Alt 6. Jul 2019, 20:04
...
Warum arbeitest du mit dem Objekt Sender?...
Dachte es erklärt zu haben, ich will im OnClickCheck-Event der Checkbox das selektierte Objekt in eine interne Liste schreiben, deselektierte sollen wieder entfernt werden.
Am Ende wird beim speichern die Liste wieder freigegeben.
Meine Fragen wurden leider noch nicht beantwortet.

Gruß BP
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: TVCheckListbox und TStringList

  Alt 6. Jul 2019, 20:39
Hast du es denn inzwischen mal debuggt, wie beschrieben?

Ich würde dazu eine separate Schaltfläche benutzen. Das wird den Benutzer wohl auch weniger verwirren, nichts passiert während er noch mit der Listbox zu Gange ist.
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie ( 6. Jul 2019 um 20:42 Uhr)
  Mit Zitat antworten Zitat
Blackpit

Registriert seit: 27. Feb 2019
77 Beiträge
 
#5

AW: TVCheckListbox und TStringList

  Alt 6. Jul 2019, 20:51
Hast du es denn inzwischen mal debuggt, wie beschrieben?
...
Deshalb ja meine Fragen.
Ich werd beim debuggen nicht schlau.
Und ja, ich habe früher in anderen Umgebungen schon entwickelt.
Ist mein Vorgehen in einer OO-Architektur so absonderlich?

P.S.: Bin ich vielleicht in der falschen Ecke? Dann bitte verschieben.

Geändert von Blackpit ( 6. Jul 2019 um 20:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: TVCheckListbox und TStringList

  Alt 6. Jul 2019, 21:17
Warum wirst du beim debuggen nicht schlau? Wurde der Code denn nach deinen Vorstellungen ausgeführt?
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie ( 6. Jul 2019 um 22:27 Uhr)
  Mit Zitat antworten Zitat
6. Jul 2019, 21:18
Dieses Thema wurde am "06. Jul 2019, 22:18 Uhr" von "Luckie" aus dem Forum "Programmieren allgemein" in das Forum "GUI-Design mit VCL / FireMonkey / Common Controls" verschoben.
Blackpit

Registriert seit: 27. Feb 2019
77 Beiträge
 
#8

AW: TVCheckListbox und TStringList

  Alt 6. Jul 2019, 21:45
...Wieso bringt mir myselection.Find(TCheckListbox(Sender).Items[i],myKat) keinen Wert im Debuger?...
Ich hab doppelte Einträge, daher liefert das wohl falsche Werte welche ich nicht überprüfen kann.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

AW: TVCheckListbox und TStringList

  Alt 6. Jul 2019, 22:33
Wie lautet denn der Rückabewert und was steht nachher in Muskat für ein Index?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Blackpit

Registriert seit: 27. Feb 2019
77 Beiträge
 
#10

AW: TVCheckListbox und TStringList

  Alt 7. Jul 2019, 07:33
Was meinst du mit
...was steht nachher in Muskat für ein Index?
Was ist Muskat?
Der Rückgabewert sollte Bool sein, der Debuger zeigt mir aber nichts
  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 22:37 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