Fragen zum VirtualStringTree

Rund um die LCL und andere Komponenten
Benutzeravatar
photor
Beiträge: 443
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Fragen zum VirtualStringTree

Beitrag von photor »

Hallo Forum,

ich spiele gerade mit TTreeView und VirtualStringTree rum, um Programmparameter, die in einem INI-File gespeichert sind erstmal für den Nutzer übersichtlich darzustellen.

Mit dem TTreeView geht das mittlerweile auch brauchbar. Ich nutze die Gelegenheit aber, um mal mit dem VirtualStringTree zu spielen. Das entsprechende Packet ist installiert und wird in den uses der MainForm genannt:

Code: Alles auswählen

unit LSTRead_mainform;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Menus, StdCtrls, Grids,
  ComCtrls, laz.VirtualTrees,
  LST_Logger, LST_Data, LST_SensorsDlg, LST_FEMDlg, LST_INI;

type
  PTreeData = ^TTreeData;
  TTreeData = record
    Caption:string[100];
    ValOf:string[100];
  end;

  { TMainForm }

  TMainForm = class(TForm)
   ......


Prinzipiell scheint das auch zu funktionieren: ich kann ein VST auf das Form packen und ein INI-File laden, welsches dann als Tree dargestellt wird. So weit, so gut.

Ein Problem habe ich aber in dem Moment, wo ich einen weiteren Event belegen möchte. Wenn ich - wie sonst auch üblich - im Objektinspektor den INIFileVST: TLazVirtualStringTree selektiere, in das Event-Tab gehe, miur den gewünschten Event suche und dann doppelt-klicke erhalten ich folgende Fehlermeldung:

Code: Alles auswählen

lstread_mainform.pas(9,29) Error: Unit nicht gefunden: laz.VirtualTrees
Das Verrückte ist aber: wenn ich (ohne den neuen Event allerdings) das Programm übersetze, läuft die Compilierung fehlerfrei durch, ich kann es starten und bis zum Ende ausführen - also wird offensichtlich alles gefunden :shock: Das Packet ist also so installiert, dass der Compiler alles findet, was er braucht.

Wenn ich jetzt zurück in den Editor bzw Objektinspektor gehe, kann es sein, dass ich eventuell den Event jetzt anlegen kann. Genau das gleiche Verhalten habe ich, wenn ich die IDE verlasse und wieder starte: eventuell(!) lässt sich dann ein Event definieren.

Anmerkung: die gleiche Fehlermeldung erhalte ich auch, wenn ich INIFileVST. tippe und mir dann mit Ctrl-SPACE mögliche Vervollständigungen (also mögliche Properties und Methoden) anzeigen lassen will --> obige Fehlermeldung.

Frage(n):
  • ist das Verhalten bekannt? Oder neu?
  • was kann bzw. muss ich ändern, wenn ich das normale Verhalten der IDE will? (eventuell uses ändern, Pfad-Einstellungen)
Das Verhalten ist natürlich störend und bremst meinen Forscherdrang bezüglich VST leider merklich. Mit dem "normalen" TTreeView habe ich natürlich eine Variante, die tut --> also nicht dringend.

Ciao,
Photor

PS:
System: Lazarus 2.2.4 FPC 3.2.2 auf tagesaktuellem Archlinux; VST-Package: 5.5.3.1 (über die IDE installiert.
IDE im Docked-Layout und seit letzter Woche auch den Docked Form Editor (0.0) installiert und im Gebrauch

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Fragen zum VirtualStringTree

Beitrag von wp_xyz »

Es gab da eine Änderung im Laz/main vor einiger Zeit (Jan), wegen ähnlicher Probleme. Da wurden die Bezeichner "TVirtualStringTree" und "TVirtualDrawTree" komplett aus der VTV unit entfernt und durch "TLazVirtualStringTree"/"TLazVirtualDrawTree" ersetzt (die gab es zwar schon, aber die anderen gab es halt auch). Es ging da um den Namenskonflikt, wenn auch das "normale" VirtualTreeView-Package installiert ist.

Bin nicht sicher, ob das dein Problem löst. Aber ich hänge trotzdem mal die Patch-Dateien an. Mache vor dem Patchen eine Sicherungskopie der zwei zu ändernden Dateien. Und nach dem Patchen musst du die IDE neu bauen.
Dateianhänge
laz-vtaccessibility.patch
(3.33 KiB) 42-mal heruntergeladen
laz-virtualtrees.patch
(4.83 KiB) 39-mal heruntergeladen
Zuletzt geändert von wp_xyz am Mi 8. Mär 2023, 12:33, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: Fragen zum VirtualStringTree

Beitrag von theo »

Ich kann nur sagen, dass ich das Problem bei mir nicht reproduzieren kann.
Lazarus 2.3.0 (rev main-2_3-2827-g64b27f1207) FPC 3.3.1 x86_64-linux-gtk2

Benutzeravatar
photor
Beiträge: 443
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: Fragen zum VirtualStringTree

Beitrag von photor »

wp_xyz hat geschrieben:
Mi 8. Mär 2023, 11:23
Es gab da eine Änderung im Laz/main vor einiger Zeit (Jan), wegen ähnlicher Probleme. Da wurden die Bezeichner "TVirtualStringTree" und "TVirtualDrawTree" komplett aus der VTV unit entfernt und durch "TLazVirtualStringTree"/"TLazVirtualDrawTree" ersetzt (die gab es zwar schon, aber die anderen gab es halt auch). Es ging da um den Namenskonflikt, wenn auch das "normale" VirtualTreeView-Package installiert ist.
Ein anderes ("normales") VirtualTreeView-Package habe ich nicht installiert. Mit "normal" meinte ich den einfachen TTreeView, den ich parallel probiere (liegen auf dem selben MainForm, wird aber in andere Unit befüllt; sollte sich nicht in die Quere kommen)..
wp_xyz hat geschrieben:
Mi 8. Mär 2023, 11:23
Bin nicht sicher, ob das dein Problem löst. Aber ich hänge trotzdem mal die Patch-Dateien an. Mache vor dem Patchen eine Sicherungskopie der zwei zu ändernden Dateien. Und nach dem Patchen musst du die IDE neu bauen.
Ein kleiner Nachtrag: die oben genannte Fehlermeldung kommt von den CodeTools (Sorry, vorher nicht dran gedacht, ALLE Ausgabezeilen mit hierhin zu packen):

Code: Alles auswählen

Projekt kompilieren, Ziel: LSTRead: Erfolg, Hinweise: 3
Hint: Start of reading config file /home/photor/.fpc.cfg
Hint: End of reading config file /home/photor/.fpc.cfg
lstread_mainform.pas(68,29) Hint: Parameter "TextType" not used
Codetools, Fehler: 1
lstread_mainform.pas(9,29) Error: Unit nicht gefunden: laz.VirtualTrees
Zu den Patches: ich habe mal reingeschaut und mit den installierten Files verglichen. Es sieht tatsächlich so aus, als wären die Patches noch nicht eingespielt.

Dann werde ich das später mal machen (wenn hier nicht noch ein weniger invasiver Vorschlag kommt).

Ciao,
Photor

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Fragen zum VirtualStringTree

Beitrag von wp_xyz »

Oder lade mir ein kleines Projekt hoch, an dem ich den Fehler nachvollziehen kann. Dann kann ich mich selbst überzeugen, ob die Patches das Problem beheben und dir ggfs gepatchte Dateien für V2.2.4 bereitstellen.

Benutzeravatar
photor
Beiträge: 443
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: Fragen zum VirtualStringTree

Beitrag von photor »

wp_xyz hat geschrieben:
Mi 8. Mär 2023, 15:06
Oder lade mir ein kleines Projekt hoch, an dem ich den Fehler nachvollziehen kann. Dann kann ich mich selbst überzeugen, ob die Patches das Problem beheben und dir ggfs gepatchte Dateien für V2.2.4 bereitstellen.
Schaffe ich heute leider nicht mehr. Ich schaue morgen mal, ob und wie weit ich meinen Test hier eindampfen kann.

Ciao,
Photor

Benutzeravatar
photor
Beiträge: 443
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: Fragen zum VirtualStringTree

Beitrag von photor »

wp_xyz hat geschrieben:
Mi 8. Mär 2023, 15:06
Oder lade mir ein kleines Projekt hoch, an dem ich den Fehler nachvollziehen kann. Dann kann ich mich selbst überzeugen, ob die Patches das Problem beheben und dir ggfs gepatchte Dateien für V2.2.4 bereitstellen.
So, doch noch Zeit gefunden und ein kleines Testprogramm gebaut. Besteht aus einem Fenster mit VST (2 Columns) drauf und einem MainMenu mit "Load INI" und "Quit". Eine INI liegt bei; ich hoffe, ich habe alle wichtigen Files eingepackt.

Das oben beschriebene Verhalten konnte ich hier nachstellen (liegt also nicht am vorherigen Projekt) - die Events ließen sich erst nach einem Verlassen und Neustarten der IDE definieren; habe dann aber gleich beide zugewiesen.

Jetzt noch probieren, ob ich das Archiv angehängt bekomme. Ich hoffe, der Fehler lässt sich eingrenzen.

Ciao,
Photor
TestVSt.tar.gz
TestVST-Projekt
(73.17 KiB) 49-mal heruntergeladen

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Fragen zum VirtualStringTree

Beitrag von wp_xyz »

Also das Problem ist, dass du keinen Doppelklick auf einem VTV-Event machen kannst, ohne dass "unit laz.virtualtrees nicht gefunden" kommt? Bei jedem Event oder nur bei bestimmten?

Bei mir hat das (sowie das ganze Programm) einwandfrei funktioniert, sowohl mit Laz 2.2.4 als auch mit Laz-main (wobei ich bei Laz/main in der Routine ParseIniToTree den Typ des Trees von TVirtualStringTree auf TLazVirtualStringTree ändern musste (TVirtualStringTree gibt es in laz.VirtualTrees von Laz-main nicht mehr)).

Ich habe nach manchen Installationsfehlern gelegentlich schon den Fehler gehabt, dass das Package "laz.virtualtreeview_package 5.5.3.1" nicht mehr sauber installiert ist. Es ist wegen des OPM noch vorhanden, funktioniert aber nicht 100%ig. Gehe zu "Package" > "Installierte Packages einrichten" und prüfe, ob dieses Package in der *linken* Liste eingetragen ist. Wenn nicht, in der *rechten" Liste selektieren, "Auswahl installieren" klicken und dann "Speichern und IDE kompilieren". Oder es könnte in der *linken* Liste eingetragen sein und mit einem grünen Plus-Icon markiert sein; in diesem Fall "Speichern und IDE kompilieren".

Benutzeravatar
photor
Beiträge: 443
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: Fragen zum VirtualStringTree

Beitrag von photor »

wp_xyz hat geschrieben:
Mi 8. Mär 2023, 23:17
Also das Problem ist, dass du keinen Doppelklick auf einem VTV-Event machen kannst, ohne dass "unit laz.virtualtrees nicht gefunden" kommt? Bei jedem Event oder nur bei bestimmten?
Das ist zur Design-Time so!

(natürlich eben, beim ersten Testen nicht - Schweißausbruch! Hab ich gestern was vergessen? Aber nach dem ersten mal Ausführen ist das Verhalten in der IDE wieder genau so! Also ab jetzt dann wieder das beschriebene Fehlerverhalten - eine frisch gestartete IDE zeigt das Verhalten nicht).

Ich habe mal wahllos einige Events im Objektinspektor ausprobiert - bei allen kam diese Meldung.

wp_xyz hat geschrieben:
Mi 8. Mär 2023, 23:17
Bei mir hat das (sowie das ganze Programm) einwandfrei funktioniert, sowohl mit Laz 2.2.4 als auch mit Laz-main (wobei ich bei Laz/main in der Routine ParseIniToTree den Typ des Trees von TVirtualStringTree auf TLazVirtualStringTree ändern musste (TVirtualStringTree gibt es in laz.VirtualTrees von Laz-main nicht mehr)).
Das Programm selbst hat immer einwandfrei funktioniert! Es geht um die IDE.

Was mir aber gerade noch aufgefallen ist (war vor dem ersten Ausführen nicht so):
In Zeile 35,36 des Editors:

Code: Alles auswählen

    procedure INIFileVSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
      Column: TColumnIndex; TextType: TVSTTextType; var CellText: String);
ist TextType: unterschlängelt - passend dazu der Eintrag

Code: Alles auswählen

testvst_mainform.pas(36,29) Hint: Parameter "TextType" not used
im Nachrichtenfenster passt (etwas eigenartig, weil doch die Procedure genau mit diesen Parametern angelegt wird). Könnte mit dem von Dir oben erwähnten unterschiedlichen Typ TVirtualStringTree und TLazVirtualStringTree zu tun haben könnte --- werde ich die Umbenennung probieren und sehen, was passiert.
wp_xyz hat geschrieben:
Mi 8. Mär 2023, 23:17
Ich habe nach manchen Installationsfehlern gelegentlich schon den Fehler gehabt, dass das Package "laz.virtualtreeview_package 5.5.3.1" nicht mehr sauber installiert ist. Es ist wegen des OPM noch vorhanden, funktioniert aber nicht 100%ig. Gehe zu "Package" > "Installierte Packages einrichten" und prüfe, ob dieses Package in der *linken* Liste eingetragen ist. Wenn nicht, in der *rechten" Liste selektieren, "Auswahl installieren" klicken und dann "Speichern und IDE kompilieren". Oder es könnte in der *linken* Liste eingetragen sein und mit einem grünen Plus-Icon markiert sein; in diesem Fall "Speichern und IDE kompilieren".
Genau auf diese Art und Weise habe ich das Paket "laz.virtualtreeview_package 5.5.3.1" installiert.

Ich probiere weiter und sehe, ob sich das Verhalten der IDE ändert.

Andererseits lese ich gerade im Forum, dass Lazarus auf 2.2.6 geupdatet wurde - was noch ein paar Tage braucht, bis es in Archlinux ankommt. Vielleicht warte ich, ob der Fehler da nicht sowieso behoben ist.

Ciao,
Photor

PS: Nachtrag: die Patches, die Du mir geschickt hattest, sind noch nicht installiert.
Zuletzt geändert von photor am Do 9. Mär 2023, 16:33, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: Fragen zum VirtualStringTree

Beitrag von theo »

photor hat geschrieben:
Do 9. Mär 2023, 15:41
Andererseits lese ich gerade im Forum, dass Lazarus auf 2.2.6 geupdatet wurde - was noch ein paar Tage braucht, bis es in Archlinux ankommt. Vielleicht warte ich, ob der Fehler da nicht sowieso behoben ist.
Was immer geht:

Code: Alles auswählen

git clone https://gitlab.com/freepascal.org/lazarus/lazarus.git lazarus
cd lazarus
make
Oder natürlich https://github.com/LongDirtyAnimAlf/fpc ... ag/v2.2.0n

Übrigens: Du kannst die Maske runter nehmen. Es ist vorbei! :lol:

Benutzeravatar
photor
Beiträge: 443
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: Fragen zum VirtualStringTree

Beitrag von photor »

theo hat geschrieben:
Do 9. Mär 2023, 16:32
Was immer geht:

Code: Alles auswählen

git clone https://gitlab.com/freepascal.org/lazarus/lazarus.git lazarus
cd lazarus
make
Oder natürlich https://github.com/LongDirtyAnimAlf/fpc ... ag/v2.2.0n
Klar, könnte ich. Aber ich mag mein Linux nicht mit "am System vorbei installierter" Software belasten - meine langjährige Erfahrung sagt mir, dass man damit früher oder später sein System kaputt macht.

Ich weiß, dass das hier vor gar nicht so langer Zeit schon diskutiert wurde. Da habe ich den gleichn Standpunkt vertreten - und bisher konnte mich nichts vom Gegenteil überzeugen.
theo hat geschrieben:
Do 9. Mär 2023, 16:32
Übrigens: Du kannst die Maske runter nehmen. Es ist vorbei! :lol:
Tja. Definiere "vorbei". Dafür sind mir noch zu viele Kollegen im Büro immer mal wieder abwesend - wegen C*******. :shock: Nee, nee. Zumindest überall da, wo mir(!) zu viele Leute zu eng beieinander sind, bleibt die drauf. Ist das bei weitem kleinere Übel und verboten ist es nicht - aber die Diskussion sollten wir im Cafe-Bereich führen :wink:

Ciao,
Photor

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: Fragen zum VirtualStringTree

Beitrag von theo »

photor hat geschrieben:
Do 9. Mär 2023, 16:45
Verboten ist es nicht.
Naja, in Wien gilt wieder das Verhüllungsverbot. Da kann das Tragen der Maske jetzt 150 Euro kosten. :wink:
Und allgemein: Angst ist ein schlechter Ratgeber. :D

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Fragen zum VirtualStringTree

Beitrag von wp_xyz »

photor hat geschrieben:
Do 9. Mär 2023, 15:41
wp_xyz hat geschrieben:
Mi 8. Mär 2023, 23:17
Also das Problem ist, dass du keinen Doppelklick auf einem VTV-Event machen kannst, ohne dass "unit laz.virtualtrees nicht gefunden" kommt? Bei jedem Event oder nur bei bestimmten?
Das ist zur Design-Time so!
Hab' mich schlecht ausgedrückt, das ist schon klar, denn zur Laufzeit kann man nicht im Objektinspektor auf Events klicken.
photor hat geschrieben:
Do 9. Mär 2023, 15:41
Ich habe mal wahllos einige Events im Objektinspektor ausprobiert - bei allen kam diese Meldung.
Wie schon gesagt, bei mir geht alles.
photor hat geschrieben:
Do 9. Mär 2023, 15:41
wp_xyz hat geschrieben:
Mi 8. Mär 2023, 23:17
Bei mir hat das (sowie das ganze Programm) einwandfrei funktioniert, sowohl mit Laz 2.2.4 als auch mit Laz-main (wobei ich bei Laz/main in der Routine ParseIniToTree den Typ des Trees von TVirtualStringTree auf TLazVirtualStringTree ändern musste (TVirtualStringTree gibt es in laz.VirtualTrees von Laz-main nicht mehr)).
Das Programm selbst hat immer einwandfrei funktioniert! Es geht um die IDE.
Ja, auch das ist klar.
photor hat geschrieben:
Do 9. Mär 2023, 15:41
Was mir aber gerade noch aufgefallen ist (war vor dem ersten Ausführen nicht so):
In Zeile 35,36 des Editors:

Code: Alles auswählen

    procedure INIFileVSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
      Column: TColumnIndex; TextType: TVSTTextType; var CellText: String);
ist TextType: unterschlängelt - passend dazu der Eintrag

Code: Alles auswählen

testvst_mainform.pas(36,29) Hint: Parameter "TextType" not used
im Nachrichtenfenster passt (etwas eigenartig, weil doch die Procedure genau mit diesen Parametern angelegt wird). Könnte mit dem von Dir oben erwähnten unterschiedlichen Typ TVirtualStringTree und TLazVirtualStringTree zu tun haben könnte --- werde ich die Umbenennung probieren und sehen, was passiert.
Das ist nur ein Hinweis, dass der Parameter nicht benutzt wird. Denn wenn er schon übergeben wird, hat der User versehentlich einen anderen, ähnlich klingenden Parameter im Code? Das ist der Hintergrund. Da die Sprache bei Event-Handlern die einmal vorgegebenen Parameter vorschreibt, kommen solche Meldungen immer wieder vor. Du kannst im Nachrichtenfenster auf der Meldung rechtsklicken und die Option auswählen, die Meldung zu ignorieren.
photor hat geschrieben:
Do 9. Mär 2023, 15:41
Andererseits lese ich gerade im Forum, dass Lazarus auf 2.2.6 geupdatet wurde - was noch ein paar Tage braucht, bis es in Archlinux ankommt. Vielleicht warte ich, ob der Fehler da nicht sowieso behoben ist.
Glaube ich eher nicht. Das Package wurde seit einem Jahr nicht mehr geändert, d.h. die letzten Änderungen sollten schon in v2.2.4 enthalten sein.

Benutzeravatar
photor
Beiträge: 443
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: Fragen zum VirtualStringTree

Beitrag von photor »

Hallo wp_xyz,

"Danke" für die Hilfe bis hierher.

Aber dann werde ich mal die Patches einspielen und schauen, ob's besser wird. Grundsätzlich habe ich ja mit dem "nativen" TTreeView eine Lösung für jetzt.

Grundsätzlich würde ich den VST trotzdem gerne funktionierend haben.

Ciao,
Photor

Benutzeravatar
photor
Beiträge: 443
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: Fragen zum VirtualStringTree

Beitrag von photor »

Hallo,

Nachtrag: gerade mal die Patches eingespielt.

Erfolg? Leider kein Erfolg. Immer noch das gleiche Verhalten. An der Stelle bin ich dann am Ende vom Latein angekommen.

Ciao,
Photor

Antworten