CRESD GmbH     EDV     Tips & Tricks    

Mac OS X: Carbon PopupButton anwenden

Sie haben ein Formular mit dem Interface Builder entworfen, das einen PopupButton enthält und Sie wissen nicht weiter?

Hier ein paar Codeschnipsel:

Leeren eines PopupButtons

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 ) );

Füllen des PopupButtons

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 );

Abfragen und Setzen der Auswahl

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 );
}

Zurück Zurück     EDV     Hauptseite

© 2006 by CRESD GmbH / München    Impressum