ListView - Überschriftenname statt Zelleninhalt in Variable Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
divanebaba
Posts: 816
Joined: 20 Dec 2016, 03:53
Location: Diaspora

ListView - Überschriftenname statt Zelleninhalt in Variable

Post by divanebaba » 21 Aug 2020, 11:40

Hallo.

Nach wochenlanger Fehlersuche, bitte ich einen Rat.
Ich habe mehrere ListViews, aus denen ich aus einer beliebigen Zeile die erste Spalte auslese in eine Variable speichere und diese als Referenznummer für andere ListViews nutze.
Manchmal steht aber nicht der Zelleninhalt drin, sondern die Spaltenüberschrift der ListView.
Welcher Fehler kann soetwas verursachen, also nach was soll ich suchen, wie kann ich das vermeiden?
Einfach nur ein toller Typ. :mrgreen:

BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: ListView - Überschriftenname statt Zelleninhalt in Variable  Topic is solved

Post by BoBo » 21 Aug 2020, 12:20

Code wäre toll.
LV_GetText
Ruft den Text ab, der auf der angegebenen Reihennummer und Spaltennummer zu finden ist, und speichert ihn in AusgabeVar.
LV_GetText(AusgabeVar, Reihennummer , Spaltennummer)
Lässt man Spaltennummer weg, wird standardmäßig 1 verwendet (der Text in der ersten Spalte). Wenn Reihennummer eine 0 ist, wird die Spaltenüberschrift abgerufen.
:?:

User avatar
divanebaba
Posts: 816
Joined: 20 Dec 2016, 03:53
Location: Diaspora

Re: ListView - Überschriftenname statt Zelleninhalt in Variable

Post by divanebaba » 21 Aug 2020, 12:45

Hallo BoBo.

Du warst so lange weg - ich habe Dich wirklich vermisst :mrgreen: :mrgreen:
LV_GetText war ebenfalls ein Hauptverdächtiger, doch mein Spaghetticode machte es mir unmöglich zu erfahren, warum möglicherweise keine Zeile ausgewählt oder die zugeordnete Variable des LV_GetText leer bleibt.
Während ich auf eine Lösung aus dem Forum wartete, deaktivierte ich eine ListView-Auffüllbegrenzung zur schnelleren ListView-Anzeige und vermute jetzt, den Fehler gefunden zu haben.

Code: Select all

FillListView14:
{
Gui, 14: default
Gui, ListView, SelItem14
LV_Delete()
GuiControl, 14: -redraw, SelItem14
sb_settext("auflisten ...", 1)
Loop, % CSV_TotalRows("14")
	{
	 Row14 := A_Index
	 LV_Add("", CSV_ReadCell("14", Row14, "1"), CSV_ReadCell("14", Row14, "2"), CSV_ReadCell("14", Row14, "3"), CSV_ReadCell("14", Row14, "4"), CSV_ReadCell("14", Row14, "5"), CSV_ReadCell("14", Row14, "6"), CSV_ReadCell("14", Row14, "7"), CSV_ReadCell("14", Row14, "8"), CSV_ReadCell("14", Row14, "9"), CSV_ReadCell("14", Row14, "10"), CSV_ReadCell("14", Row14, "11"), CSV_ReadCell("14", Row14, "12"), Row14)
		; if (A_Index > 249)  ; <--- Fehlerquelle für nachfolgende LV_GetText(...)
		 	; break            ; <--- Fehlerquelle für nachfolgende LV_GetText(...)
	}
	Counter14 := LV_GetCount()
CurrText14 =
LV_MODIFY(1, "SELECT")
Gosub LV_DB14_ModifyCol
GuiControl, 14: +redraw, SelItem14
SB_SetText("Treffer: " StandardT, 1)
Return
}
Eine minimierte ListView zur schnelleren Anzeige ist höchstwahrscheinlich die Ursache dafür.
Das Fragen im Forum hat mich motiviert, nochmals gründlicher zu suchen.
Das nenne ich auch hilfreich :mrgreen: :mrgreen:

Vielen Dank BoBo. Du lagst, wie so oft, wieder goldrichtig mit Deinem Hinweis.
Einfach nur ein toller Typ. :mrgreen:

User avatar
Frosti
Posts: 426
Joined: 27 Oct 2017, 14:30
Contact:

Re: ListView - Überschriftenname statt Zelleninhalt in Variable

Post by Frosti » 21 Aug 2020, 13:05

Hey divanebaba, schön mal wieder was (verzweifeltes) von Dir zu hören.

Ich hätte noch einen Tip für Dich.
Ändere doch mal:

Code: Select all

Gui, ListView, SelItem14
in

Code: Select all

Gui, 14: ListView, SelItem14
Schätze dann setzt er auch die Listview der Gui 14: auf Default

BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: ListView - Überschriftenname statt Zelleninhalt in Variable

Post by BoBo » 21 Aug 2020, 13:14

Moin Mr. D.
noch eine Erleichterung: Integer und floating point-werte brauchen in expressions/Funktion(saufruf)en nicht als "strings" deklariert werden.
CSV_ReadCell("14", Row14, "1") vs CSV_ReadCell( 14, Row14, 1)

Code: Select all

a :=  5
b := "6"
msgbox % f(1.2,3,"4", a, b)

f(v1,v2,v3,v4,v5) {
  return v1 "`n" v2 "`n" v3 "`n" v4 "`n" v5
  }

User avatar
divanebaba
Posts: 816
Joined: 20 Dec 2016, 03:53
Location: Diaspora

Re: ListView - Überschriftenname statt Zelleninhalt in Variable

Post by divanebaba » 21 Aug 2020, 17:03

Danke für die hilfreichen Expertentips.
Als Laie bin ich froh, daß mein Code auswirft, was ich erhoffte.
"Integer" und "floating-point" hat für euch sicherlich eine technische Bedeutung, für mich hingegen bedeutet es nur Stress :crazy:
Bei der nächsten Überarbeitung meines Codes, werde ich eure Hinweise beherzigen 💚💚
Einfach nur ein toller Typ. :mrgreen:

Post Reply

Return to “Ich brauche Hilfe”