LVA_SetCell Frage Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

hartesau

LVA_SetCell Frage  Topic is solved

25 Feb 2021, 03:03

Hallo,
kann man die farbig geklickten Zellen auch wieder auslesen?

Ich meine das so, dass nur die von mir farbig Markierten Zellen ausgelesen werden sollen.

Ich kann den ScreenShot leider nicht uploaden, habe neuerdings eine 'Ich bin kein Roboter' Abfrage und keinen Upload Link mehr..

Code: Select all

...
...
...
LVClick17:
LVClick18:
LVClick19:
LVClick:
;Gui, Submit, nohide
  if (A_GuiEvent = "Normal")
  {
    LVA_GetCellNum(0, A_GuiControl)
    GuiControl,,Label_Row, % LVA_GetCellNum("Row")
    GuiControl,,Label_Col, % LVA_GetCellNum("Col")
;   https://www.autohotkey.com/boards/viewtopic.php?f=6&t=3852
;   LVA_SetCell(Name, Row, Col, cBGCol="", cFGCol="")
tooltip %         "A_ThisLabel: " A_ThisLabel "`n" 
		. "Reihe: " LVA_GetCellNum("Row") "`n" 
		. "Spalte: " LVA_GetCellNum("Col")
LVA_SetCell("LV10", LVA_GetCellNum("Row"), LVA_GetCellNum("Col"), "maroon", "white")
ToolTip
  }
return
effel
Posts: 546
Joined: 16 Jan 2018, 13:34

Re: LVA_SetCell Frage

25 Feb 2021, 03:58

Danke
Jetzt bin ich angemeldet, kann den Screen trotzden nicht uppen

Code: Select all

Error
Sorry, the board attachment quota has been reached.
just me
Posts: 9482
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: LVA_SetCell Frage

25 Feb 2021, 07:55

Moin,

LVA_Info("GetCellType", ...) liefert 1, wenn die Zelle gefärbt wurde.
effel
Posts: 546
Joined: 16 Jan 2018, 13:34

Re: LVA_SetCell Frage

25 Feb 2021, 17:32

Hallo Just Me, WOW das ist wirklich Cool, danke fürs teilen!

Hier der Link für den interessierten Leser: https://www.autohotkey.com/boards/viewtopic.php?f=6&t=3852

Ich habe deinen Code folgendermaßen umgesetzt und es funktioniert tadellos:

Beim ersten Klick auf eine Zelle wird die gesamte Zeile [Zeilenfarbe] farbig markiert und die angeklickte Zelle darin bekommt eine andere Farbe [Zellenfarbe].

Weitere Klicks in der gleichen Zeile ändern die jeweils angeklickte Zelle [Zellenfarbe] ebenfalls

Falsch gesetzte Farben [Zellenfarbe] werden durch wiederholtes klicken auf die vorher falsch markierte Zelle wieder aufgehoben, wobei die [Zeilenfarbe] beim ersten klick auf eine vorher falsch markierte Zelle auch wieder im Original Zustand ist.

Zur Zeit drückt mich die Frage, wie ich am effizientesten alle im GUI enthaltenen ListView nach Farbig markierten Zellen durchsuche und bevor ich jetzt anfange 'rumZuLoopen', frage ich lieber mal ob es in deinem Code schon etwas fertiges gibt... ;)

LVA_SetCell.jpeg
LVA_SetCell.jpeg (66.11 KiB) Viewed 847 times

Code: Select all

....
Gui, Show
Loop, %  maxListViews
If (A_Index > 9)
LVA_ListViewAdd("LV" A_Index, "+AR cfFF0000 cbFFDD99")
LVA_ListViewAdd("LV00", "+AR cfFF0000 cbFFDD99")
LVA_ListViewAdd("LV01", "+AR cfFF0000 cbFFDD99")
LVA_ListViewAdd("LV02", "+AR cfFF0000 cbFFDD99")
LVA_ListViewAdd("LV03", "+AR cfFF0000 cbFFDD99")
LVA_ListViewAdd("LV04", "+AR cfFF0000 cbFFDD99")
LVA_ListViewAdd("LV05", "+AR cfFF0000 cbFFDD99")
LVA_ListViewAdd("LV06", "+AR cfFF0000 cbFFDD99")
LVA_ListViewAdd("LV07", "+AR cfFF0000 cbFFDD99")
LVA_ListViewAdd("LV08", "+AR cfFF0000 cbFFDD99")
LVA_ListViewAdd("LV09", "+AR cfFF0000 cbFFDD99")

OnMessage("0x4E", "LVA_OnNotify")

Return
....
LVClick18:
LVClick19:
LVClick:
LVvar := "LV" SubStr(A_ThisLabel, -1) ; LV00.. LV%maxListViews%..

  if (A_GuiEvent = "Normal")
  {
  LVA_GetCellNum(0, A_GuiControl)
  LVAInfoStatus := LVA_Info("GetCellType", LVvar, LVA_GetCellNum("Row"), LVA_GetCellNum("Col"))  ; ZellenStatus
  If !LVAInfoStatus {
  If (SubStr(A_ThisLabel, -1) = 10)                                                    ; ListView "LV10" 'Tab Arbeitsplatz' andere farbe
  LVA_SetCell(LVvar, LVA_GetCellNum("Row"), 0, "Purple", "white")                      ; zeile komplett farbig markieren
  else                                                                                 ; restliche Tabs
  LVA_SetCell(LVvar, LVA_GetCellNum("Row"), 0, "maroon", "white")                      ; zeile komplett farbig markieren
  LVA_SetCell(LVvar, LVA_GetCellNum("Row"), LVA_GetCellNum("Col"), "Green", "white")   ; angeklickte zelle farbig markieren
  Send, {DOWN}
  } else {
  LVA_SetCell(LVvar, LVA_GetCellNum("Row"), 0, "", "")                                 ; zeile komplett farbig demarkieren
  LVA_SetCell(LVvar, LVA_GetCellNum("Row"), LVA_GetCellNum("Col"), "", "")             ; angeklickte zelle farbig demarkieren
  Send, {DOWN}
  }
; MsgBox,,, % LVAInfoStatus := LVA_Info("GetCellType", LVvar, LVA_GetCellNum("Row"), LVA_GetCellNum("Col")),1
  lva_Refresh(LVvar)
  }
xl=
return
just me
Posts: 9482
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: LVA_SetCell Frage

26 Feb 2021, 06:22

Moin,

LVA ist ja nicht mein Code sondern nur eine Überarbeitung von dadepps Skript. Wie es ist, bleibt wohl nichts Anderes als 'rumzuloopen' und für alle Zellen LVA_Info() aufzurufen. dadepp 'versteckt' ja die Werte in statischen Variablen innerhalb der Funktion.

Du könntest Dir beim Ändern der Farben aber auch eigene Arrays erstellen, die den Zugriff möglicherweise erleichtern und beschleunigen.

Edit: Oder man könnte LVA_Info() so ändern, dass ein globales Array genutzt wird, auf das man auch direkt zugreifen kann.
effel
Posts: 546
Joined: 16 Jan 2018, 13:34

Re: LVA_SetCell Frage

26 Feb 2021, 12:55

just me wrote:
26 Feb 2021, 06:22
..ist ja nicht mein Code...
Dann mal her mit dem REST der da auch nicht von dir ist :D
just me wrote:
26 Feb 2021, 06:22
...auch eigene Arrays erstellen...
ja so dachte ich auch, aber trotzdem war die Anfrage obligatorisch, warum das Rad zweimal erfinden wenn das gesuchte vielleicht schon in Arrays gespeichert ist.

Die Struktur für die Farben-Arrays ist quasie vorhanden, ich speichere die Zell Informationen schon in solchen Arrays
ToolTip_Array_click_zelle 1 spalte 1.jpeg
ToolTip_Array_click_zelle 1 spalte 1.jpeg (75.4 KiB) Viewed 784 times
just me wrote:
26 Feb 2021, 06:22
...Oder man könnte ...
Was soll man darauf schon sagen :eh:
Das wäre natürlich die bessere Lösung und wenn du dazu etwas beitragen kannst hast du einen Interessierten Leser.


Eine Frage hätte ich schon noch. wenn ich eine Zelle anklicke, wird sie wie gewünscht farbig markiert...

Zur Zeit habe ich ein Send, {DOWN} nach dem click eingebaut, so wird der Farbwechsel unmittelbar sichtbar

... weil sonst die angeklickte Zeile wie normalerweise auch üblich 'blau markiert' ist

kann ich diesen Fokus auch zurücknehmen? also so als wenn ich STRG click auf eine blaue Zeile mache?

Danke fürs lesen
just me
Posts: 9482
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: LVA_SetCell Frage

27 Feb 2021, 05:09

Moin,
Zeilen-Optionen

Focus: Setzt den Tastaturfokus auf die Zeile (wird oft in Verbindung mit Select verwendet). Mit LV_Modify(ZeileNummer, "-Focus") kann der Fokus später entfernt werden.
Select: Wählt die Zeile aus. Mit LV_Modify(ZeileNummer, "-Select") kann die Zeile später abgewählt werden.
Ansonsten noch: :arrow: [Class] LV_Colors (man kann hier direkt auf die internen Klassenarrays Rows und Cells zugreifen). Für ein eigenes Farbarray würde ich ein Array je ListView mit einer vergleichbaren Struktur wählen.
effel
Posts: 546
Joined: 16 Jan 2018, 13:34

Re: LVA_SetCell Frage

05 Mar 2021, 11:24

just me wrote:
27 Feb 2021, 05:09
LV_Modify(ZeileNummer, "-Focus")...-Select "...)
Vielen Dank, das war genau meine Lösung

Dank auch für deinen Verweis zu: [Class] LV_Colors Damit habe ich mich noch nicht auseinandergesetzt, mein Kopf raucht noch von dem LVA Code.
2021-03-05 at 09.40.24.jpeg
2021-03-05 at 09.40.24.jpeg (169.21 KiB) Viewed 722 times
Kann ich auch die gesetzte Farbe? oder den FarbCode auslesen? So wie ich den Status LVAInfoStatus := LVA_Info("GetCellType", LVvar, xRow, xCol) auslese?
effel
Posts: 546
Joined: 16 Jan 2018, 13:34

Re: LVA_SetCell Frage

05 Mar 2021, 16:14

Ich habe es gefunden..

Code: Select all

LVA_Info("GetCellColorBG", LVvar, xRow, xCol) 
LVA_Info("GetCellColorFG", LVvar, xRow, xCol)

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 31 guests