Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Uisytler Dialoge mit Ufunc

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX
Autor Thema:  Uisytler Dialoge mit Ufunc (733 mal gelesen)
totti2305
Mitglied
Dipl Ing Maschinenbau


Sehen Sie sich das Profil von totti2305 an!   Senden Sie eine Private Message an totti2305  Schreiben Sie einen Gästebucheintrag für totti2305

Beiträge: 183
Registriert: 10.03.2005

Windows 7 x64 SP1
NX 7.5.5.4 MP12
Teamcenter 8.3.3.8

erstellt am: 27. Mai. 2008 11:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo!

Ich hab ein kleines Problem mit der Erstellung von  UI Styler Dialogen. Dort, wo man mit KF verwoehnt wurde, wird es mit Ufunc richtig uebel sch... umstaendlich und mittlerweile hab ich keinen Ueberblick mehr.

Ich habe einen Dialog gebastelt mit dem ich Componenten auswaehlen kann und der Dialog mit den Tag zurueck gibt. Funktioniert auch. Aber nun will ich noch eine Single Selected List einbauen, in dem man dann sieht wie die Componente zB. heisst oder aehnliches. Genauer gesagt werden es 2 Listen, bin gerade ein Replacement Program am schreiben. In dem einen Fenster soll der alte Namen stehen, und in dem anderen der neue Name. Soweit so gut. Aber keine Ahnung wie ich den Tag des alten teils, geschweige denn den Tag des neuen Teils in den Dialog bekommen soll.

Was ich braeuchte ist ein weg von der Main Funktion in die Callback funktion reinzukommen, oer alles in der Callback funktion zu schreiben und dann die Werte in die Main funktion zu uebernehmen. Waere mir eigentlich noch egal. Aber keine Ahnung wie.

hier ist mal der Code den ich bis jetzt gebastelt hab, Tipps und Tricks sind natuerlich immer gern willkommen.

Torsten

#define TS_SINGLE_LIST_0              ("LIST_0")

static int get_comp(int n_sel, tag_p_t sel_objs, int n_dsel, tag_p_t dsel,
    void *user_data, UF_UI_selection_p_t select)
{
    tag_p_t
        sel_comp;

    sel_comp = (tag_p_t)user_data;

    *sel_comp = sel_objs[0];

    return UF_UI_CB_EXIT_DIALOG;
}

/*ARGSUSED*/
static int TS_SINGLE_sel_cb(int dialog_id, void *client_data,
    UF_STYLER_item_value_type_p_t callback_data)
{
    int
        ii;
    UF_STYLER_item_value_type_t
        value;
               
    char
        test[3][133] = {"test1","test2","test3"};

    UF_STYLER_item_value_type_t
        sel_data;
    UF_UI_mask_t
        mask = { UF_component_type, 0, 0 };

    sel_data.item_id = UF_STYLER_DIALOG_INDEX;
    sel_data.item_attr  = UF_STYLER_SELECTION;
    UF_CALL(UF_STYLER_ask_value(dialog_id, &sel_data));

    UF_CALL(UF_UI_set_sel_mask(sel_data.value.selection,
        UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC, 1, &mask));

    UF_CALL(UF_UI_set_sel_procs(sel_data.value.selection, NULL, get_comp,
        client_data));

       
    for (ii=0;ii<3;ii++)
        {

    value.item_attr = UF_STYLER_LIST_INSERT;
    value.item_id = TS_SINGLE_LIST_0;
    value.subitem_index = UF_STYLER_NO_SUB_INDEX;
    value.indicator = UF_STYLER_STRING_VALUE;
    value.count=3;
    value.value.string = test[ii]; 
       
        UF_CALL(UF_STYLER_set_value(dialog_id, &value));
      }
    return (UF_UI_CB_CONTINUE_DIALOG);
}

static void do_it(void)
{
    int
        resp;

    tag_t
        component = NULL_TAG;

    char
        msg[133];

    UF_STYLER_callback_info_t
        TS_SINGLE_cbs[3] = {
    {UF_STYLER_DIALOG_INDEX, UF_STYLER_CONSTRUCTOR_CB  , 0, TS_SINGLE_sel_cb},
    {UF_STYLER_NULL_OBJECT, UF_STYLER_NO_CB, 0, 0 } };

    while (!UF_CALL(UF_STYLER_create_dialog("ts_single", TS_SINGLE_cbs, 2, &component, &resp)) && (resp!=UF_UI_CANCEL))
        {
    sprintf(msg,"output %d\n", component);
    WRITE(msg);
        };
}

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

älg
Mitglied
CADmin


Sehen Sie sich das Profil von älg an!   Senden Sie eine Private Message an älg  Schreiben Sie einen Gästebucheintrag für älg

Beiträge: 403
Registriert: 17.06.2003

erstellt am: 29. Mai. 2008 08:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für totti2305 10 Unities + Antwort hilfreich

Dein Code ist zu komplex, als daß ich hier im Einzelnen darauf eingehen könnte ...
Wenn ich Dich richtig verstehe, so suchst Du einen Weg, intern Daten zwischen den Callbacks untereinander und der aufrufenden Funktion do_it() zu übermitteln.

Dafür sind die callback_data da. Mein Tipp:
wo Du nur ein

Code:
tag_t
        component = NULL_TAG;


vorgesehen hast, schreibst Du stattdessen eine eigene Struktur hin. In jedem callback ist die Struktur dann bekannt - mußt nur noch die explizite Typumwandlung berücksichtigen, etwa in TS_SINGLE_sel_cb:
Code:

totti_data_p_t
      totti_data = (totti_structure_p_t) client_data;


bei einer Struktur-Definition wie
Code:

struct totti_data_s {
tag_t
      my_comp_1,
      my_comp_2;
}
typedef struct totti_data_s totti_data_t, *totti_data_p_t;

Soweit die klassische Version - ich hoffe, mit diesem Code keine Freaks zu verschrecken

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Projektingenieur (m/w/d) Entwicklung
Die besten Köpfe für die unterschiedlichsten Aufgaben zu finden sowie Menschen und Technologien zu verbinden, und zwar täglich aufs Neue - dafür schätzen unsere Kunden FERCHAU. Unterstütze uns: als ambitionierte:r Kolleg:in, der:die wie wir Technologien auf die nächste Stufe bringen möchte. Wir realisieren spannende Projekte für namhafte Kunden in allen Technologiebereichen und für alle Branchen und übernehmen Verantwortung für komplexe Entwicklungsprojekte....
Anzeige ansehenProjektmanagement
totti2305
Mitglied
Dipl Ing Maschinenbau


Sehen Sie sich das Profil von totti2305 an!   Senden Sie eine Private Message an totti2305  Schreiben Sie einen Gästebucheintrag für totti2305

Beiträge: 183
Registriert: 10.03.2005

Windows 7 x64 SP1
NX 7.5.5.4 MP12
Teamcenter 8.3.3.8

erstellt am: 29. Mai. 2008 16:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

hab das ganze jetzt mal mit globalen variablen geloest. bis auf ein paar schwierigkeiten funktioniert das ganze schon.

Torsten

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz