DialogDesign0R V1.85

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
Bisonte
Beiträge: 2430
Registriert: 01.04.2007 20:18

Re: DialogDesign0R V1.02

Beitrag von Bisonte »

das ist weder ein bug, noch generelles XML Dialog Verhalten.
Das ist schlicht und ergreifend das SplitterGadget und das Resize von ihm. Das kann man leider nicht
so wirklich abstellen.

Allerdings hatte Eddy im englischen Forum ein eigenes CanvasSplitterGadget vorgestellt, das nahezu frei von diesen Artefakten war.
PureBasic 6.10 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
oO0XX0Oo
Beiträge: 55
Registriert: 21.07.2017 22:36

Re: DialogDesign0R V1.02

Beitrag von oO0XX0Oo »

Alles klar, danke für die Aufklärung!
Benutzeravatar
Shardik
Beiträge: 738
Registriert: 25.01.2005 12:19

Re: DialogDesign0R V1.02

Beitrag von Shardik »

Drag 'n drop mit ListIconGadgets, ListViewGadgets und TreeGadgets auf MacOS funktioniert übrigens seit der Umstellung vom Carbon- auf das Cocoa-Framework in PB 5.00 nicht mehr. Es gibt dazu diese Fehlersammlung von fsw, in der Fred schon 2013 schrieb:
Fred hat geschrieben:Cocoa drag'n'drop model is not fully compatiable with PB model, I don't know how to work around it (for now).
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: DialogDesign0R V1.02

Beitrag von RSBasic »

@Shardik
Das hast du glaube ich falsch verstanden.
Es ging darum, mit Hilfe der Handle-Nummer die Index-Nummer des ersten sichtbaren Eintrages zu ermitteln. HeX0R verwendete nicht ohne Grund die Konstante #TVGN_FIRSTVISIBLE.
Meinen Code habe ich nur beispielhaft in den Case-Block eingefügt. Das funktioniert natürlich nur per Klick und Tastatur. Das war aber nur ein Beispiel.
Shardik hat geschrieben:Ich habe daher einmal ein eigenes Beispiel erstellt, das für alle Einträge das ItemHandle ermittelt und aus dem ItemHandle den Index. Und auch für gerade nicht sichtbare Einträge wird der korrekte Index ermittelt:
Aber das ist nicht das, was HeX0R haben wollte?
HeX0R hat geschrieben:Wie kann ich denn aus einem TreeItemHandle den Index ermitteln?

Code: Alles auswählen

Protected TreeItemHandle
TreeItemHandle = SendMessage_(GadgetID(DID("tree_objects")), #TVM_GETNEXTITEM, #TVGN_FIRSTVISIBLE, #Null)
For i = 0 To CountGadgetItems(DID("tree_objects")) - 1
	If GadgetItemID(DID("tree_objects"), i) = TreeItemHandle
		Break
	EndIf
Next i 
Wenn man seinen Code anschaut, will er nicht, die Index-Nummer jedes sichtbaren Eintrages haben, sondern nur die Index-Nummer des ersten sichtbaren EIntrages:

Code: Alles auswählen

TreeItemHandle = SendMessage_(GadgetID(DID("tree_objects")), #TVM_GETNEXTITEM, #TVGN_FIRSTVISIBLE, #Null)
Sonst hätte er nicht folgende Abfrage geschrieben:

Code: Alles auswählen

If GadgetItemID(DID("tree_objects"), i) = TreeItemHandle
D.h. er vergleicht die Handle-Nummer des ersten sichtbaren Eintrages mit allen Einträgen. Da er nicht wusste, wie man es macht, hat er eine Schleife gebaut. Er wollte es gerne kürzen bzw. direkter ermitteln.

So habe ich das verstanden.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
HeX0R
Beiträge: 2959
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: DialogDesign0R V1.02

Beitrag von HeX0R »

Genau!
Das Problem ist ja, dass ich im DropCallback nur y Werte habe, die beim ersten sichbaren Eintrag des Treegadgets beginnen.
Benutzeravatar
Shardik
Beiträge: 738
Registriert: 25.01.2005 12:19

Re: DialogDesign0R V1.02

Beitrag von Shardik »

OK, Ray. Dann war Dein Beispiel ja doch das Richtige. Vielen Dank, dass Du Dir die Mühe gemacht hast, mir das noch einmal haarklein zu erklären... :allright:
Omi
Beiträge: 143
Registriert: 25.03.2013 09:59

Re: DialogDesign0R V1.02

Beitrag von Omi »

Hallo,
folgende Linux-Unzulänglichkeit könnte einem ebenfalls unterkommen:
Manche Installationen selektieren bei Erhalt des Fokus in StringGadget/GtkEntry (SetActiveGadget(Gadget)) den gesamten Text per default.

Ist man bei Eingaben zu langsam, bekommt das Demo-Window den Fokus, wird upgedatet und das vorherige Eingabefeld bekommt den Fokus zurück - jetzt vollständig selektiert und man überschreibt die bisherige Eingabe und alles beginnt von vorn :evil:
Originelle Foltermethode, die man nur mit 'nem Sekretärinnenkurs übersteht ;-)

Zusätzlich folgender ImportC:

Code: Alles auswählen

g_object_set(*object.GObject, property_name.p-utf8, *data, value= 0)
und folgende Routine bei Programmstart müßte dieses Problem beseitigen:

Code: Alles auswählen

CompilerIf #PB_Compiler_OS = #PB_OS_Linux
  g_object_set(gtk_settings_get_default_(), "gtk-entry-select-on-focus", #False)
CompilerEndIf
Gruß, Charly
PureBasic Linux-API-Library: http://www.chabba.de
Benutzeravatar
HeX0R
Beiträge: 2959
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: DialogDesign0R V1.02

Beitrag von HeX0R »

Na toll, das Linux wird langsam anstrengend...
So, ich habe jetzt:
1.) Kiffis Fehler beseitigt (musste die ganze BuildUpTree() Prozedur neu machen, aber eigentlich nur, weil ich die glaube ich im Vollsuff erstellt hatte...)
2.) RSBasics Windows API eingebaut
3.) Omis letzte Erweiterung eingebaut
4.) Die Menüs etwas anders angeordnet, jetzt sieht man gleich, welcher Container nur ein Element beinhaltet
5.) Fehlendes "Page"-Attribut hinzugefügt
6.) Fehlende Attribute der ScrollArea eingebaut.
7.) Windows-Pos und Slider-Pos werden nun gespeichert für den nächsten Start.

So, ich habe ziemlich viel verändert, wahrscheinlich auch ziemlich viele neue Bugs platziert :)

Was das SplitterGadget betrifft:
Ich weiss, dass es suboptimal aussieht, aber mal ehrlich: Wie oft muss man den denn verschieben?
Ich lasse das alles mal so, vielleicht haben wir ja in PB 12.7 dann ein flickerfreies SplitterGadget...
oO0XX0Oo
Beiträge: 55
Registriert: 21.07.2017 22:36

Re: DialogDesign0R V1.02

Beitrag von oO0XX0Oo »

Was das SplitterGadget betrifft:
Ich weiss, dass es suboptimal aussieht, aber mal ehrlich: Wie oft muss man den denn verschieben?
Ich lasse das alles mal so, vielleicht haben wir ja in PB 12.7 dann ein flickerfreies SplitterGadget...
Kein Problem, ich war nur neugierig...

Könntest du mir bitte einen Gefallen tun und beim Programmstart checken ob die settings.prefs bereits
im aktuellen Verzeichnis der .exe Datei liegt und diese dann von dort aus einlesen (und natürlich unter
%APPDATA% kein Verzeichnis erstellen)? Wenn du möchtest mit dem zusätzlichen check, ob das
aktuelle Verzeichnis UAC protected ist und die .exe nicht mit Adminrechten gestartet wurde. Dann müsste
eine geänderte .prefs Datei natürlich unter %APPDATA% abgelegt werden. Stichwort Portabilität...
Benutzeravatar
HeX0R
Beiträge: 2959
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: DialogDesign0R V1.02

Beitrag von HeX0R »

Erledigt.
Starte einmalig mit /portable
Omi hat geschrieben:Ist man bei Eingaben zu langsam, bekommt das Demo-Window den Fokus, wird upgedatet und das vorherige Eingabefeld bekommt den Fokus zurück - jetzt vollständig selektiert und man überschreibt die bisherige Eingabe und alles beginnt von vorn :evil:
Originelle Foltermethode, die man nur mit 'nem Sekretärinnenkurs übersteht ;-)
Langsamtipper können übrigens auch #Update_Interval erhöhen.
Antworten