- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 19-12-2011, 18:07
Malachite
 Registrierter Benutzer
Links : Onlinestatus : Malachite ist offline
Registriert seit: Aug 2011
Beiträge: 47
Malachite befindet sich auf einem aufstrebenden Ast
Standard PHP-GTK - Auf Kindelemente zugreifen?

Moin,

ich befasse mich gerade mit PHP-GTK. Jetzt habe ich aber folgendes Problem:
Wenn ich z.B. eine Struktur wie diese habe:
Code:
GtkWindow (id: mainWindow)
|----GtkVBox (id: mainContainer)
    |----GtkTreeView (id: mainList)
|----GtkHButtonBox(id: mainButtons)
aber nur ein Objekt für mainWindow, nicht für mainList (z.B. weil die Oberfläche aus Glade importiert wurde), wie kann ich dann auf mainList zugreifen?
Mit Zitat antworten
  #2 (permalink)  
Alt 19-12-2011, 22:18
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.550
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

mit get_child() kannst du das (einzige) Kind von einem GtkWindow abrufen. Bei dir sieht es aus, als hätte das Fenster zwei Kinder, aber das kann nicht stimmen, vermutlich gehört die GtkHButtonBox in die GtkVBox rein. Von der GtkVBox kannst du get_children() aufrufen, um auf die Kinder zuzugreifen.

In der Doku sind Methoden, die aus Elternklassen geerbt wurden, nicht explizit bei den Kindklassen gelistet. Wenn du also die Methoden bei GtkWindow nicht findest, musst du weiter hoch zu GtkBin gehen.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #3 (permalink)  
Alt 20-12-2011, 10:55
Malachite
 Registrierter Benutzer
Links : Onlinestatus : Malachite ist offline
Registriert seit: Aug 2011
Beiträge: 47
Malachite befindet sich auf einem aufstrebenden Ast
Standard

get_children() kenne ich schon, ich meinte eigentlich, ob ich per ID auf das Widget zugreifen kann, so in etwa:
PHP-Code:
$childWidget $parentWidget->funktionDieEinWidgetAnhandDerIdSuchtUndEinObjektDesWidgetsZurückgibt('child'); 
Sonst muss ich bei jedem Kind überprüfen, ob die ID richtig ist.

Geändert von Malachite (20-12-2011 um 10:58 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 20-12-2011, 12:53
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.550
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

PHP-GTK : PHP-GTK 2 Manual : GladeXML::get_widget
PHP-GTK : PHP-GTK 2 Manual : Loading the file
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #5 (permalink)  
Alt 20-12-2011, 14:13
Malachite
 Registrierter Benutzer
Links : Onlinestatus : Malachite ist offline
Registriert seit: Aug 2011
Beiträge: 47
Malachite befindet sich auf einem aufstrebenden Ast
Standard

Das geht aber nur mit GladeXML-Objekten, nicht mit GtkContainern.

So wie es aussieht, muss ich also doch mit foreach, is_a und isset herumhantieren.

Trotzdem danke…
Mit Zitat antworten
  #6 (permalink)  
Alt 20-12-2011, 14:36
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.550
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Malachite Beitrag anzeigen
Das geht aber nur mit GladeXML-Objekten, nicht mit GtkContainern.
Umpfh, sagtest du nicht eingangs, dass es aus Glade importiert ist? Wie hast du es denn importiert – mit GladeXML? Na dann hast du auch die get_widget-Methode an deinem GladeXML-Objekt dran.

GladeXML hat mit GtkContainern überhaupt nichts zu tun. Es dient lediglich als Fassade. Eine GladeXML-Instanz erlaubt dir das Laden einer Glade-Datei und das Auffinden ihrer Widgets über get_widget.

Anstatt den GtkContainer nach einem Kind mit einer bestimmten ID zu fragen, frag einfach deine GladeXML-Instanz. Da IDs eindeutig sind, kommt genau das Kind des GtkContainers heraus, nach dem du gesucht hast.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #7 (permalink)  
Alt 20-12-2011, 15:02
Malachite
 Registrierter Benutzer
Links : Onlinestatus : Malachite ist offline
Registriert seit: Aug 2011
Beiträge: 47
Malachite befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Umpfh, sagtest du nicht eingangs, dass es aus Glade importiert ist?
Ich hab als Beispiel Glade-Dateien genannt. Ich arbeite manchmal mit Glade, manchmal auch nicht.
Mit Zitat antworten
  #8 (permalink)  
Alt 21-12-2011, 18:15
Malachite
 Registrierter Benutzer
Links : Onlinestatus : Malachite ist offline
Registriert seit: Aug 2011
Beiträge: 47
Malachite befindet sich auf einem aufstrebenden Ast
Standard

Da es offenbar keine Funktion gibt, um Kindelemente per ID zu steuern, habe ich sie mir selbst geschrieben. Sie gibt das Objekt des gesuchten Widgets zurück:
PHP-Code:
function getWidget($obj,$id) {
    if ((!
is_subclass_of($obj,'GtkContainer'))) {
        return 
null;
    } elseif (
$obj->name == $id) {
        return 
$obj;
    } else {
        foreach (
$obj->get_children() as $child) {
            if (
$child->name == $id) {
                return 
$child;
            } elseif (
$cchild getWidget($child,$id)) {
                return 
$cchild;
            } else {
                return 
false;
            }
        }
    }

$obj: Das Objekt, das durchsucht werden soll
$id: Die ID des gesuchten Objekts

Geändert von Malachite (21-12-2011 um 18:18 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
mit PHP auf C zugreifen mackebrecht Linux und Unix 7 23-12-2009 17:44
Mit PHP auf C zugreifen futurefee Projekthilfe 14 23-12-2009 14:38
Mit C++/Java auf PHP zugreifen daniel_hh PHP Developer Forum 2 29-08-2006 11:11
Mittels php auf Access zugreifen. Toasty22 PHP Developer Forum 6 17-07-2006 16:46
auf externen php script zugreifen Tarquinio PHP Developer Forum 2 27-04-2004 18:09

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

EM 2012 Tipp-Spiel ansehen EM 2012 Tipp-Spiel

Online Tipp-Spiel zur Fussball Europameisterschaft 2012, basierend auf php-Script mit hinterlegter mySql-Datenbank

27.05.2012 tippimnetz | Kategorie: PHP/ Spiele
Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:34 Uhr.