Aktuelle Zeit: 22.09.2018 09:21

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: TreeGadget GetItemHeight
BeitragVerfasst: 02.03.2018 20:53 
Offline
Benutzeravatar

Registriert: 25.01.2005 12:19
HeX0R hat geschrieben:
Bekommst Du das auch für MacOS hin?

Code:
EnableExplicit

Define Frame.NSRect

OpenWindow(0, 100, 100, 390, 100,
  "Ermittlung der Zeilenhöhe im TreeViewGadget")
TreeGadget(0, 5, 5, WindowWidth(0) - 10, WindowHeight(0) - 10)
AddGadgetItem(0, -1, "Item 1", 0, 0)
AddGadgetItem(0, -1, "Subitem 1", 0, 1)
AddGadgetItem(0, -1, "Subitem 2", 0, 1)
SetGadgetItemState(0, 0, #PB_Tree_Expanded)

CocoaMessage(@Frame, GadgetID(0), "frameOfOutlineCellAtRow:", 0)
MessageRequester("Info", "Zeilenhöhe: " + StrF(Frame\size\height))

Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TreeGadget GetItemHeight
BeitragVerfasst: 02.03.2018 22:14 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Weltklasse!!
Vielen Dank!

MacOS kann ich leider nicht testen, wird aber sicherlich funktionieren.

@Omi: Danke auch an Dich, aber die Lösung von Shardik macht eigentlich genau was ich brauche.

@ccode_new:
Danke wegen der Mühe, aber:
1.) Dein Code hat das Thema verfehlt!
2.) Lass in Zukunft bitte die dämlichen Bemerkungen in Beispielcodes, mir ist das wurscht, andere fühlen sich dadurch vermutlich aber veräppelt.

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TreeGadget GetItemHeight
BeitragVerfasst: 02.03.2018 23:12 
Offline
Benutzeravatar

Registriert: 25.01.2005 12:19
Ich habe aus den bisher gezeigten Lösungen ein Cross-Platform Beispiel zusammengebastelt, auf das ich aus einem Posting im englischen Forum, in dem ich alle mir bekannten Cross-Platform API-Beispiele gesammelt habe, verlinke, damit auch Nutzer des internationalen Forums dieses Beispiel nutzen können.

Ich habe dieses Beispiel auf folgenden Betriebssystemen erfolgreich getestet:
- MacOS 10.6.8 'Snow Leopard' mit PB 5.62 x86
- Linux Mint 18.1 'Serena' x64 mit Cinnamon und PB 5.62 x64 (GTK2 und GTK3)
- Windows 7 SP1 x64 mit PB 5.62 x86
Code:
EnableExplicit

CompilerIf #PB_Compiler_OS = #PB_OS_Linux
  ImportC ""
    gtk_widget_style_get(*Widget.GtkWidget, PropertyName.P-UTF8, *Value, Null)
  EndImport
CompilerEndIf

Procedure GetRowHeight(GadgetID.I)
  Protected RowHeight.I

  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_MacOS
      Protected Frame.NSRect
      CocoaMessage(@Frame, GadgetID(0), "frameOfOutlineCellAtRow:", 0)
      RowHeight = Int(Frame\size\height)
    CompilerCase #PB_OS_Linux
      Protected *Column.GtkTreeViewColumn
      Protected VerticalSeparator.I
      *Column = gtk_tree_view_get_column_(GadgetID(GadgetID), 0)
      gtk_tree_view_column_cell_get_size_(*Column, 0, 0, 0, 0, @RowHeight)
      gtk_widget_style_get(GadgetID(GadgetID), "vertical-separator",
        @VerticalSeparator, 0)
      RowHeight + VerticalSeparator
    CompilerCase #PB_OS_Windows
      #TVM_GETITEMHEIGHT = 4380
      RowHeight = SendMessage_(GadgetID(GadgetID), #TVM_GETITEMHEIGHT, 0, 0)
  CompilerEndSelect

  ProcedureReturn RowHeight
EndProcedure

OpenWindow(0, 100, 100, 390, 100, "")
TreeGadget(0, 5, 5, WindowWidth(0) - 10, WindowHeight(0) - 10)
AddGadgetItem(0, -1, "Item 1", 0, 0)
AddGadgetItem(0, -1, "Subitem 1", 0, 1)
AddGadgetItem(0, -1, "Subitem 2", 0, 1)
SetGadgetItemState(0, 0, #PB_Tree_Expanded)

While WindowEvent() : Wend ; Event flush (necessary for Linux)

SetWindowTitle(0, "Row height: " + GetRowHeight(0))

Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TreeGadget GetItemHeight
BeitragVerfasst: 02.03.2018 23:39 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Hier sieht man dann auch, wofür ich das benötigt hatte.

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TreeGadget GetItemHeight
BeitragVerfasst: 03.03.2018 03:43 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
@HeX0R

1. sehr schöner und brauchbarer Dialog-Designer (für xml)

2.
Zitat:
@ccode_new:
Danke wegen der Mühe, aber:
1.) Dein Code hat das Thema verfehlt!
2.) Lass in Zukunft bitte die dämlichen Bemerkungen in Beispielcodes, mir ist das wurscht, andere fühlen sich dadurch vermutlich aber veräppelt.


2.1 Mein Code war ja nur ein kleines Beispiel, wobei ich mich an deinem geschriebenen Text:
Zitat:
Mal kurz zum Problem:
Ich versuche mich an einem TreeGadget mit internem Drag&Drop (also auf sich selbst), möchte dabei aber bestimmte Einträge zum droppen verweigern.

orientiert hatte.

2.2 Gerne können dämliche Kommentare ignoriert werden. Wenn meine unnützen Kommentare "dämlich" sind kann man mir das ruhig an den Kopf werfen.

Ansonsten:
:allright:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TreeGadget GetItemHeight
BeitragVerfasst: 03.03.2018 09:37 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
ccode_new hat geschrieben:
@HeX0R

2.1 Mein Code war ja nur ein kleines Beispiel, wobei ich mich an deinem geschriebenen Text:
Zitat:
Mal kurz zum Problem:
Ich versuche mich an einem TreeGadget mit internem Drag&Drop (also auf sich selbst), möchte dabei aber bestimmte Einträge zum droppen verweigern.

orientiert hatte.

Nein, hast du nicht, Du machst es vom zu draggenden Element abhängig (dafür brauchst du nicht mal einen Callback), und schaust nicht welches Element während des draggens unter dem Cursor ist!
Das war ja der Knackpunkt.
Schau dir einfach den Code vom Designer an, dann siehst du den Unterschied.

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TreeGadget GetItemHeight
BeitragVerfasst: 03.03.2018 11:38 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hallo HeX0R,

durch deinen Code ist mir jetzt auch klar was du meintest.

Anbei:
Dein Code hat einen sehr unschönen Darstellungsbug (unter Gtk3).

Du musst die Splitter-Komponente (name=splitter) für Gtk3 noch anpassen.

Unter Gtk3 wird das ganze nämlich absolut grausam dargestellt. (Der Splitter lässt sich zudem auch nicht bewegen.)

Du solltest dabei auch auf Size-Window-Events reagieren.

Da ist noch Anpassung notwendig.

...
Hat hier jemand schon mal mit gtk3 Paned-Controlls direkt gearbeitet:

Splitter


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye