Sie haben ein Formular mit dem Interface Builder entworfen, das einen PopupButton enthält und Sie wissen nicht weiter?
Hier ein paar Codeschnipsel:
Zuerst benötigen Sie eine Referenz auf das Menü des Buttons:
inline OSStatus GetPopupButtonMenuRef( ControlRef popupButton, MenuRef* outMenu )
{
OSStatus err;
err = GetControlData( popupButton, 0, kControlPopupButtonMenuRefTag, sizeof( MenuRef ), outMenu, NULL );
return err;
}
Nun können Sie alle Items löschen:
err = GetPopupButtonMenuRef( popupHandle, &menu );
if( err == noErr )
err = DeleteMenuItems( menu, 1, CountMenuItems( menu ) );
Nachdem das PopupButton nun leer ist, wird es jetzt aufgefüllt;
for( i=0; err==noErr && i<theTaskEntries.getNumElements(); i++ )
{
CFStringRef menuText;
menuText = CFStringCreateWithCString( NULL, (const char*)theTaskEntries[i].comboEntry, kCFStringEncodingWindowsLatin1 );
err = AppendMenuItemTextWithCFString( menu, menuText, 0, i, NULL );
}
DrawOneControl( popupHandle );
So bestimmen Sie die Auswahl des Benutzers:
inline int GetPopupButtonSelIndex( ControlRef popupButton )
{
return GetControl32BitValue( popupButton )-1;
}
So setzen Sie eine neue Auswahl:
inline void SetPopupButtonSelIndex( ControlRef popupButton, int newIndex )
{
SetControl32BitValue( popupButton, newIndex+1 );
DrawOneControl( popupButton );
}
© 2006 by CRESD GmbH / München Impressum